RegEx avec EntityRuler dans spaCy
Les expressions régulières (RegEx) servent à extraire des informations selon des règles, en s’appuyant sur des motifs de chaînes complexes. Vous pouvez les utiliser pour retrouver des motifs ou remplacer les correspondances dans une chaîne par d’autres motifs. Dans cet exercice, vous allez utiliser EntityRuler de spaCy pour détecter des adresses e‑mail dans un text donné.
Le paquet spaCy est déjà importé. Vous pouvez utiliser \d pour faire correspondre un métacaractère représentant n’importe quel chiffre de 0 à 9.
Un motif spaCy peut utiliser REGEX comme attribut. Dans ce cas, un motif aura la forme [{"TEXT": {"REGEX": "<a given pattern>"}}].
Cet exercice fait partie du cours
Traitement du langage naturel avec spaCy
Instructions
- Définissez un motif pour faire correspondre des numéros de téléphone de la forme
8888888888à utiliser avecEntityRuler. - Chargez un modèle anglais
spaCyvierge et ajoutez un composantEntityRulerau pipeline. - Ajoutez le motif compilé au composant
EntityRuler. - Exécutez le modèle et affichez le tuple texte/type des entités pour le
textfourni.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
text = "Our phone number is 4251234567."
# Define a pattern to match phone numbers
patterns = [{"label": "PHONE_NUMBERS", "pattern": [{"TEXT": {"REGEX": "(____){____}"}}]}]
# Load a blank model and add an EntityRuler
nlp = spacy.____("en")
ruler = nlp.____("entity_ruler")
# Add the compiled patterns to the EntityRuler
ruler.____(patterns)
# Print the tuple of entities texts and types for the given text
doc = ____(____)
print([(ent.____, ent.____) for ent in doc.____])