Tworzenie własnej nazwanej jednostki w spaCy
Jeśli wbudowane nazwane jednostki w spaCy ci nie wystarczają, możesz stworzyć własne za pomocą komponentu entity_ruler z pipeline'u spaCy.
Komponent entity_ruler pozwala tworzyć własne jednostki i dodawać je do pipeline'u spaCy.
Na początek dodajesz komponent do istniejącego pipeline'u za pomocą nlp.add_pipe(), umieszczając go before komponentem "ner", dzięki czemu twoje reguły zostaną zastosowane jako pierwsze. add_pipe() zwraca dodany komponent.
Następnie możesz wywołać add_patterns() na tym komponencie i przekazać mu słownik ze wzorcem tekstu pattern, który chcesz oznaczyć jako jednostkę.
Ponieważ Acme jest firmą technologiczną, postanawiasz oznaczyć wzorzec "smartphone" tagiem jednostki "PRODUCT".
spaCy zostało już zaimportowane, a nlp zawiera wczytany model en_core_web_sm. Ponieważ zmiana pipeline'u nie wpływa na istniejące już dokumenty, po dodaniu nowego komponentu musisz na nowo utworzyć doc z tekstu transkrybowanego z pliku call_4_channel_2.wav plik.
To ćwiczenie jest częścią kursu
Przetwarzanie mowy w Pythonie
Instrukcje do ćwiczenia
- Dodaj komponent
"entity_ruler"do pipeline'unlp, przed komponentem"ner", i zapisz go w zmiennejruler. - Dodaj
"smartphone"jako wartość dla klucza"pattern". - Wypisz atrybuty jednostek zawarte w
doc.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Add an entity_ruler component to the pipeline, before ner
ruler = nlp.add_pipe(____, before=____)
# Define pattern for new entity
ruler.add_patterns([{"label": "PRODUCT", "pattern": ____}])
# Recreate the doc so it uses the updated pipeline
doc = nlp(call_4_channel_2_text)
# Test new entity
for entity in doc.____:
print(entity.text, entity.label_)