LoslegenKostenlos starten

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>
Kurs ansehen

Übungsanweisungen

  • Füge die Komponente "entity_ruler" der nlp-Pipeline vor der Komponente "ner" hinzu und speichere sie in ruler.
  • Füge "smartphone" als Wert für den Schlüssel "pattern" hinzu.
  • Gib die in doc enthaltenen 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_)
Code bearbeiten und ausführen