Dopasowywanie z rozszerzoną składnią w spaCy
Ekstrakcja informacji oparta na regułach jest niezbędnym elementem każdego potoku NLP. Klasa Matcher umożliwia tworzenie bardziej wyrazistych wzorców dzięki operatorom umieszczanym wewnątrz nawiasów klamrowych. Operatory te służą do rozszerzonych porównań i przypominają składnią operatory in, not in oraz operatory porównania znane z Pythona. W tym ćwiczeniu przećwiczysz działanie mechanizmu dopasowywania w spaCy – klasy Matcher – aby znaleźć dopasowania do podanych wyrażeń w przykładowym tekście.
Klasa Matcher jest już zaimportowana z biblioteki spacy.matcher. Do pracy z przykładowym tekstem wykorzystasz kontener Doc, wywołując doc. Wstępnie załadowany model spaCy jest dostępny pod nazwą nlp.
To ćwiczenie jest częścią kursu
Przetwarzanie języka naturalnego z użyciem spaCy
Instrukcje do ćwiczenia
- Zdefiniuj obiekt matchera, używając
Matcherinlp. - Użyj operatora
IN, aby zdefiniować wzorzec dopasowujący wyrażeniatiny squaresitiny mouthful. - Użyj tego wzorca, aby znaleźć dopasowania w
doc. - Wyświetl indeksy tokenów początku i końca oraz fragment tekstu dla każdego dopasowania.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)