CommencezCommencez gratuitement

PhraseMatcher dans spaCy

Quand vous traitez du texte non structuré, vous avez souvent de longues listes et des dictionnaires à balayer pour trouver des correspondances dans des textes donnés. Les motifs du Matcher sont faits à la main et chaque jeton doit être codé individuellement. Si vous avez une longue liste de syntagmes, Matcher n'est plus la meilleure option. Dans ce cas, la classe PhraseMatcher aide à faire correspondre de longs dictionnaires. Dans cet exercice, vous pratiquerez la récupération de motifs ayant les mêmes formes pour plusieurs termes à l'aide de la classe PhraseMatcher.

Le modèle en_core_web_sm est déjà chargé et prêt à être utilisé sous le nom nlp. La classe PhraseMatcher est importée. Une chaîne text et une liste terms sont à votre disposition.

Cette activité fait partie du cours

Traitement du langage naturel avec spaCy

Voir le cours

Instructions de l’exercice

  • Initialisez une classe PhraseMatcher avec un attr pour faire correspondre la forme des terms fournis.
  • Créez des patterns à ajouter à l'objet PhraseMatcher.
  • Trouvez les correspondances pour les motifs donnés et affichez les indices de jetons de début et de fin ainsi que le segment correspondant du text fourni.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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)
Modifier et exécuter le code