Zacznij terazZacznij za darmo

PhraseMatcher w spaCy

Podczas przetwarzania nieustrukturyzowanego tekstu często dysponujesz długimi listami i słownikami, które chcesz przeszukiwać i dopasowywać w danych tekstach. Wzorce klasy Matcher są tworzone ręcznie, a każdy token trzeba zakodować osobno. Jeśli masz do dyspozycji długą listę fraz, Matcher przestaje być najlepszym wyborem. W takim przypadku klasa PhraseMatcher pozwala dopasowywać obszerne słowniki. W tym ćwiczeniu przećwiczysz wyszukiwanie wzorców o pasujących kształtach dla wielu terminów za pomocą klasy PhraseMatcher.

Model en_core_web_sm jest już wczytany i dostępny jako nlp. Klasa PhraseMatcher jest zaimportowana. Do dyspozycji masz ciąg znaków text oraz listę terms.

To ćwiczenie jest częścią kursu

Przetwarzanie języka naturalnego z użyciem spaCy

Zobacz kurs

Instrukcje do ćwiczenia

  • Zainicjuj klasę PhraseMatcher z argumentem attr, który dopasowuje kształt podanych elementów listy terms.
  • Utwórz patterns, które dodasz do obiektu PhraseMatcher.
  • Znajdź dopasowania do podanych wzorców i wyświetl indeksy tokenów początku i końca oraz dopasowany fragment tekstu text.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod