0 / 0
Zurück zur englischen Version der Dokumentation
Erkennung von Entitäten mit einem benutzerdefinierten Wörterbuch
Letzte Aktualisierung: 22. Juli 2024
Erkennung von Entitäten mit einem benutzerdefinierten Wörterbuch

Wenn Sie über eine festgelegte Gruppe mit Begriffen verfügen, die erkannt werden sollen (z. B. eine Liste mit Produktnamen oder Organisationen), können Sie ein Wörterverzeichnis erstellen. Der Wörterbuchabgleich ist besonders schnell und ressourcenschonend.

Watson Natural Language Processing-Wörterverzeichnisse enthalten erweiterte Abgleichsfunktionen, die über den einfachen Zeichenfolgeabgleich hinausgehen und Folgendes beinhalten:

  • Wörterverzeichnisbegriffe können aus einem einzelnen Token bestehen (z. B. Rad) oder aus mehreren Token (z. B. Lenkrad).
  • Beim Abgleich von Wörterverzeichnisbegriffen kann die Groß-/Kleinschreibung entweder beachtet oder ignoriert werden. Durch die Beachtung der Groß-/Kleinschreibung bei Übereinstimmungen können Sie sicherstellen, dass Akronyme wie ABS nicht als Übereinstimmungen für Begriffe der regulären Sprache wie abs erkannt werden, die eine andere Bedeutung haben.
  • Sie können angeben, wie Übereinstimmungen konsolidiert werden sollen, wenn mehrere Wörterverzeichniseinträge denselben Text abgleichen. Für die beiden Wörterverzeichniseinträge Watson und Watson Natural Language Processing können Sie konfigurieren, welcher Eintrag in "I like Watson Natural Language Processing" als Übereinstimmung erkannt werden soll: entweder nur Watson Natural Language Processing, da er Watson beinhaltet, oder beide Einträge.
  • Sie können angeben, dass nur das Lemma als Übereinstimmung erkannt werden soll, anstatt alle Flexionen aufzuzählen. Auf diese Weise kann anhand des einzelnen Wörterverzeichniseintrags Maus sowohl Maus als auch Mäuse im Text erkannt werden.
  • Sie können jedem Wörterverzeichniseintrag eine Bezeichnung zuordnen (z. B. die Kategorie 'Organisation', um zusätzliche Metadaten in die Übereinstimmung einzuschließen.

Alle diese Funktionen sind konfigurierbar, d. h. Sie können die geeignete Option für Ihren Anwendungsfall auswählen.

Dateitypen für Wörterverzeichnisse

Watson Natural Language Processing unterstützt zwei Dateitypen für Wörterverzeichnisse:

  • Begriffsliste (mit der Erweiterung .dict)

    Beispiel für eine Begriffsliste:

    Arthur
    Allen
    Albert
    Alexa
    
  • Tabelle (mit der Erweiterung .csv)

    Beispiel für eine Tabelle

    "label", "entry"
    "ORGANIZATION", "NASA"
    "COUNTRY", "USA"
    "ACTOR", "Christian Bale"
    

In einem Extraktionsprozess können mehrere Wörterverzeichnisse verwendet werden. Dabei können beide Typen gleichzeitig verwendet werden. Sie können beispielsweise eine einzelne Extraktion mit drei Wörterverzeichnissen (einer Begriffsliste und zwei Tabellen) ausführen.

Wörterverzeichnisdateien erstellen

Erstellen Sie zunächst ein Modulverzeichnis in Ihrem Notebook. Dies ist ein Verzeichnis im Dateisystem des Notebooks, das vorübergehend zum Speichern Ihrer Wörterverzeichnisdateien verwendet wird.

So erstellen Sie Wörterverzeichnisdateien in Ihrem Notebook:

  1. Erstellen Sie ein Modulverzeichnis. Beachten Sie, dass der Name des Modulordners keine Gedankenstriche enthalten darf, da dies Fehler verursachen würde.
    import os
    import watson_nlp
    module_folder = "NLP_Dict_Module_1"
    os.makedirs(module_folder, exist_ok=True)
    
  2. Erstellen Sie Wörterverzeichnisdateien und speichern Sie sie im Modulverzeichnis. Sie können entweder eine externe Liste bzw. eine CSV-Datei einlesen oder Wörterverzeichnisdateien mit der folgenden Methode erstellen:
    # Create a term list dictionary
    term_file = "names.dict"
    with open(os.path.join(module_folder, term_file), 'w') as dictionary:
        dictionary.write('Bruce')
        dictionary.write('\n')
        dictionary.write('Peter')
        dictionary.write('\n')
    
    # Create a table dictionary
    table_file = 'Places.csv'
    with open(os.path.join(module_folder, table_file), 'w') as places:
        places.write("\"label\", \"entry\"")
        places.write("\n")
        places.write("\"SIGHT\", \"Times Square\"")
        places.write("\n")
        places.write("\"PLACE\", \"5th Avenue\"")
        places.write("\n")
    

Wörterverzeichnisse laden und Abgleichoptionen konfigurieren

Die Wörterverzeichnisse können mit den folgenden Helper-Methoden geladen werden.

  • Verwenden Sie watson_nlp.toolkit.rule_utils.DictionaryConfig (<dictionary configuration>), um ein einzelnes Wörterverzeichnis zu laden.
  • Verwenden Sie watson_nlp.toolkit.rule_utils.DictionaryConfig.load_all([<dictionary configuration>)]), um mehrere Wörterverzeichnisse zu laden.

Für jedes Wörterverzeichnis muss eine Wörterverzeichniskonfiguration angegeben werden. Die Wörterverzeichniskonfiguration ist ein Python-Wörterverzeichnis mit den folgenden Attributen:

Attribut Wert Beschreibung Erforderlich
name Zeichenfolge Der Name des Wörterverzeichnisses. Ja
source Zeichenfolge Der Pfad zum Wörterverzeichnis, relativ zu module_folder. Ja
dict_type Datei oder Tabelle Gibt an, ob das Wörterverzeichnisartefakt eine Begriffsliste (Datei) oder eine Tabelle mit Zuordnungen (Tabelle) ist. Anzahl Der Standardwert ist 'Datei'.
consolidate ContainedWithin (längste Übereinstimmung beibehalten und deduplizieren) / NotContainedWithin (kürzeste Übereinstimmung beibehalten und deduplizieren) / ContainsButNotEqual (längste Übereinstimmung und doppelte Übereinstimmungen beibehalten) / ExactMatch (deduplizieren) / LeftToRight (längsten Bereich ganz links und ohne Überschneidung beibehalten) Was geschieht bei Übereinstimmungen mit dem Wörterverzeichnis, die sich überschneiden aufweisen? Anzahl Die Übereinstimmungen werden standardmäßig nicht konsolidiert.
case exact / insensitive Die Groß-/Kleinschreibung wird entweder genau beachtet (exact) oder ignoriert (insensitive). Anzahl Der Standardwert ist die genaue Übereinstimmung (exact).
lemma True / False Die Begriffe im Wörterverzeichnis werden mit den Lemmata aus dem Text abgeglichen. Das Wörterverzeichnis sollte nur Lemmaformen enthalten. Fügen Sie beispielsweise mouse im Wörterverzeichnis hinzu, um sowohl mouse als auch mice im Text als Übereinstimmung zu erkennen. Fügen Sie mice nicht im Wörterverzeichnis hinzu. Um Begriffe im Text abzugleichen, die aus mehreren Tokens bestehen, trennen Sie die Lemmata dieser Begriffe im Wörterverzeichnis jeweils durch ein Leerzeichen. Anzahl Der Standardwert ist Falsch.
mappings.columns (columns as attribute of mappings: {}) list [zeichenfolge] Liste der Spaltenüberschriften in gleicher Reihenfolge wie in der CSV-Tabelle Yes if dict_type: table
mappings.entry (entry as attribute of mappings: {}) Zeichenfolge Der Name der Spaltenüberschrift, die die Zeichenfolge enthält, die mit dem Dokument abgeglichen werden soll. Yes if dict_type: table
label Zeichenfolge Die Bezeichnung, die an Übereinstimmungen angehängt werden soll. Nein

Codebeispiel

# Load the dictionaries
dictionaries = watson_nlp.toolkit.rule_utils.DictionaryConfig.load_all([{
    'name': 'Names',
    'source': term_file,
    'case':'insensitive'
}, {
    'name': 'places_and_sights_mappings',
    'source': table_file,
    'dict_type': 'table',
    'mappings': {
        'columns': ['label', 'entry'],
        'entry': 'entry'
    }
}])

Modell trainieren, das Wörterverzeichnisse enthält

Erstellen Sie nach dem Laden der Wörterverzeichnisse ein Wörterverzeichnismodell und trainieren Sie das Modell mit der Methode RBR.train(). Geben Sie in der Methode Folgendes an:

  • Das Modulverzeichnis
  • Die Sprache der Wörterverzeichniseinträge
  • Die zu verwendenden Wörterverzeichnisse

Codebeispiel

custom_dict_block = watson_nlp.resources.feature_extractor.RBR.train(module_folder,
language='en', dictionaries=dictionaries)

Modell auf neue Daten anwenden

Nachdem Sie die Wörterverzeichnisse trainiert haben, wenden Sie das Modell mit der Methode run() auf neue Daten an, wie bei den vorhandenen, vorab trainierten Blöcken.

Codebeispiel

custom_dict_block.run('Bruce is at Times Square')

Ausgabe des Codebeispiels:

{(0, 5): ['Names'], (12, 24): ['SIGHT']}

So zeigen Sie die Bezeichnungen oder den Namen des Wörterverzeichnisses an:

RBR_result = custom_dict_block.executor.get_raw_response('Bruce is at Times Square', language='en')
print(RBR_result)

Ausgabe mit den Bezeichnungen:

{'annotations': {'View_Names': [{'label': 'Names', 'match': {'location': {'begin': 0, 'end': 5}, 'text': 'Bruce'}}], 'View_places_and_sights_mappings': [{'label': 'SIGHT', 'match': {'location': {'begin': 12, 'end': 24}, 'text': 'Times Square'}}]}, 'instrumentationInfo': {'annotator': {'version': '1.0', 'key': 'Text match extractor for NLP_Dict_Module_1'}, 'runningTimeMS': 3, 'documentSizeChars': 32, 'numAnnotationsTotal': 2, 'numAnnotationsPerType': [{'annotationType': 'View_Names', 'numAnnotations': 1}, {'annotationType': 'View_places_and_sights_mappings', 'numAnnotations': 1}], 'interrupted': False, 'success': True}}

Übergeordnetes Thema: Eigene Modelle erstellen

Generative KI-Suche und -Antwort
Diese Antworten werden von einem großen Sprachmodell in watsonx.ai basierend auf dem Inhalt der Produktdokumentation generiert. Weitere Informationen