PhraseMatcher i spaCy
När du bearbetar ostrukturerad text har du ofta långa listor och ordlistor som du vill söka igenom och matcha mot given text. Mönster i Matcher skapas manuellt och varje token måste kodas individuellt. Om du har en lång lista med fraser är Matcher inte längre det bästa alternativet. I sådana fall hjälper klassen PhraseMatcher dig att matcha mot stora ordlistor. I den här övningen tränar du på att hämta mönster med matchande former mot flera termer med hjälp av klassen PhraseMatcher.
Modellen en_core_web_sm är redan inläst och tillgänglig som nlp. Klassen PhraseMatcher är importerad. En sträng text och en lista med terms finns tillgängliga för dig att använda.
Den här övningen är en del av kursen
Naturlig språkbehandling med spaCy
Övningsinstruktioner
- Initiera en instans av klassen
PhraseMatchermed ettattr-argument för att matcha formen på de givnaterms. - Skapa
patternsatt lägga till iPhraseMatcher-objektet. - Hitta matchningar mot de givna mönstren och skriv ut start- och slutindex för token samt den matchande delen av den givna
text.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)