Appariement avec la syntaxe étendue dans spaCy
L'extraction d'information basée sur des règles est essentielle dans toute chaîne de traitement NLP. La classe Matcher permet de définir des gabarits plus expressifs en autorisant certains opérateurs à l'intérieur des accolades. Ces opérateurs servent à des comparaisons étendues et ressemblent aux opérateurs Python in, not in et aux opérateurs de comparaison. Dans cet exercice, vous allez vous exercer avec la fonctionnalité d'appariement de spaCy, Matcher, pour trouver des correspondances pour des termes donnés dans un texte d'exemple.
La classe Matcher est déjà importée depuis la bibliothèque spacy.matcher. Vous utiliserez un conteneur Doc d'un texte d'exemple dans cet exercice en appelant doc. Un modèle spaCy préchargé est aussi accessible via nlp.
Cette activité fait partie du cours
Traitement du langage naturel avec spaCy
Instructions de l’exercice
- Définissez un objet d'appariement en utilisant
Matcheretnlp. - Utilisez l'opérateur
INpour définir un gabarit qui fasse correspondretiny squaresettiny mouthful. - Utilisez ce gabarit pour trouver les correspondances dans
doc. - Affichez les indices de jetons de début et de fin ainsi que la portion de texte des correspondances.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
nlp = spacy.load("en_core_web_sm")
doc = nlp(example_text)
# Define a matcher object
matcher = Matcher(nlp.____)
# Define a pattern to match tiny squares and tiny mouthful
pattern = [{"lower": ____}, {"lower": {____: ["squares", "mouthful"]}}]
# Add the pattern to matcher object and find matches
matcher.____("CustomMatcher", [____])
matches = ____(____)
# Print out start and end token indices and the matched text span per match
for match_id, start, end in matches:
print("Start token: ", ____, " | End token: ", ____, "| Matched text: ", doc[____:____].text)