Eine benutzerdefinierte benannte Entität in spaCy erstellen
Wenn die integrierten benannten Entitäten von spaCy nicht ausreichen, kannst du mit der Pipeline-Komponente entity_ruler eigene erstellen.
Die Komponente entity_ruler ermöglicht es dir, eigene Entitäten zu definieren und sie zu einer spaCy-Pipeline hinzuzufügen.
Du beginnst damit, die Komponente mit nlp.add_pipe() zur bestehenden Pipeline hinzuzufügen und sie before der Komponente "ner" zu platzieren, damit deine eigenen Regeln zuerst angewendet werden. add_pipe() gibt die hinzugefügte Komponente zurück.
Anschließend kannst du add_patterns() auf der Komponente aufrufen und ihr ein Dictionary mit dem Text-pattern übergeben, das du mit einer Entität labeln möchtest.
Da Acme ein Technologieunternehmen ist, entscheidest du dich, das Pattern "smartphone" mit dem Entitäts-Tag "PRODUCT" zu versehen.
spaCy wurde importiert und nlp enthält ein geladenes en_core_web_sm-Modell. Da Änderungen an einer Pipeline keine Auswirkungen auf bereits existierende Docs haben, erstellst du das doc aus dem transkribierten Text von call_4_channel_2.wav Datei neu, sobald die neue Komponente eingebunden ist.
Diese Übung ist Teil des Kurses
<Kurs>Verarbeitung gesprochener Sprache in Python</Kurs>Übungsanweisungen
- Füge die Komponente
"entity_ruler"dernlp-Pipeline vor der Komponente"ner"hinzu und speichere sie inruler. - Füge
"smartphone"als Wert für den Schlüssel"pattern"hinzu. - Gib die in
docenthaltenen Entitätsattribute aus.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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_)