PhraseMatcher dans spaCy
Lors du traitement de texte non structuré, vous avez souvent de longues listes et des dictionnaires que vous souhaitez parcourir et faire correspondre dans des textes donnés. Les patrons du Matcher sont définis à la main et chaque token doit être codé individuellement. Si vous avez une longue liste d’expressions, Matcher n’est plus la meilleure option. Dans ce cas, la classe PhraseMatcher permet de faire correspondre de longs dictionnaires. Dans cet exercice, vous allez vous entraîner à récupérer des patrons correspondant à la forme de plusieurs termes en utilisant la classe PhraseMatcher.
Le modèle en_core_web_sm est déjà chargé et accessible via nlp. La classe PhraseMatcher est importée. Une chaîne text et une liste terms sont à votre disposition.
Cet exercice fait partie du cours
Traitement du langage naturel avec spaCy
Instructions
- Initialisez une classe
PhraseMatcheravec unattrpour faire correspondre la forme destermsfournis. - Créez des
patternsà ajouter à l’objetPhraseMatcher. - Trouvez les correspondances pour les patrons donnés et affichez les indices de tokens de début et de fin ainsi que la portion correspondante du
textfourni.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
text = "There are only a few acceptable IP addresse: (1) 127.100.0.1, (2) 123.4.1.0."
terms = ["110.0.0.0", "101.243.0.0"]
# Initialize a PhraseMatcher class to match to shapes of given terms
matcher = ____(nlp.____, attr = ____)
# Create patterns to add to the PhraseMatcher object
patterns = [nlp.make_doc(____) for term in terms]
matcher.____("IPAddresses", patterns)
# Find matches to the given patterns and print start and end characters and matches texts
doc = ____
matches = ____
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)