PhraseMatcher în spaCy
Când procesezi text nestructurat, ai adesea liste și dicționare lungi pe care vrei să le scanezi și să le potrivești în texte date. Tiparele pentru Matcher sunt create manual, iar fiecare token trebuie codificat individual. Dacă ai o listă lungă de fraze, Matcher nu mai este cea mai bună opțiune. În acest caz, clasa PhraseMatcher ne ajută să potrivim dicționare extinse. În acest exercițiu, vei exersa extragerea tiparelor cu forme corespunzătoare mai multor termeni folosind clasa PhraseMatcher.
Modelul en_core_web_sm este deja încărcat și disponibil ca nlp. Clasa PhraseMatcher este importată. Un șir de caractere text și o listă de terms sunt disponibile pentru utilizare.
Acest exercițiu face parte din cursul
Procesarea limbajului natural cu spaCy
Instrucțiuni pentru exercițiu
- Inițializează o instanță a clasei
PhraseMatchercu un argumentattrpentru a potrivi forma termenilor dinterms. - Creează
patternspentru a le adăuga obiectuluiPhraseMatcher. - Găsește potrivirile pentru tiparele date și afișează indicii de început și de sfârșit ai tokenilor, precum și secțiunea corespunzătoare din
text.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)