Funktionsweise der Entitätenerkennung

Entitätenerkennung, auch Named Entity Recognition (NER) genannt, ist der Prozess, bei dem Informationen aus Sätzen, Absätzen, Texten oder anderen Formen von unstrukturiertem Text extrahiert werden. Das Toolset "Textanalyse" in der Toolbox "GeoAI" enthält Werkzeuge, die mithilfe von Natural Language Processing-(NLP-)Techniken Entitätenerkennungsmodelle trainieren und mit diesen Modellen Entitäten aus unstrukturiertem Text extrahieren.

Mit dem Werkzeug Entitätenerkennungsmodell trainieren werden NLP-Modelle zum Extrahieren einer vordefinierten Reihe von Entitäten (wie z. B. Organisationen, Personen, Daten oder Länder) trainiert, die als Teil eines Training-Datasets bereitgestellt werden. Trainierte Entitätenerkennungsmodelle können in Verbindung mit dem Werkzeug Entitäten mit Deep Learning extrahieren eingesetzt werden, um die betreffenden Entitäten aus einfachem Text in ein strukturiertes Format zu extrahieren.

Potenzielle Anwendungsbereiche

Das Werkzeug hat folgende potenzielle Anwendungsbereiche:

  • Das Extrahieren von Daten wie z. B. Positionsdaten oder Daten der berichtenden Beamten oder der Waffen aus Kriminalitätsberichten. Auf diese Weise können Trends besser dargestellt und Korrekturmaßnahmen besser geplant werden.
  • Informationen, wie z. B. Positionsdaten oder ob Hilfe benötigt wird, lassen sich aus Tweets oder Social Media-Posts extrahieren. Auf diese Weise lassen sich Bereiche identifizieren, in denen bei einer Naturkatastrophe sofortige Hilfe benötigt wird.
Flussdiagramm "Entitätenerkennungsmodell"
Dieses Entitätenerkennungsmodell dient zum Extrahieren von Entitäten aus Berichtstexten, wie z. B. des Datums, der Uhrzeit und der Position.

Entitätenerkennungsmodelle in ArcGIS basieren auf zwei Backends: einem auf Basis der Transformer-Architektur und einem weiteren auf Basis der spaCy-Bibliothek, die am Framework einbetten, codieren, teilnehmen, vorhersagen angewendet wird.

  • Einbetten: In diesem Prozess wird der eingegebene Text in dichte Worteinbettungen transformiert. Diese Einbettungen erfassen semantische Informationen aus dem eingegebenen Text, und es lässt sich mit ihnen viel einfacher an dem Modell arbeiten.
    Workflow "Einbetten"
  • Codieren: In diesem Prozess wird der Kontext in einen Wortvektor codiert. Dies geschieht mithilfe von Residuum-Tigram-Convolutional Neural Networks (CNN).
    Workflow "Codieren"
  • Teilnehmen: Die Matrixausgabe aus dem vorherigen Schritt wird zu einem einzelnen Vektor reduziert, der zur Vorhersage an ein Standard-Feed-Forward-Netzwerk übergeben wird. Dieser Schritt wirkt sich ähnlich aus wie der Aufmerksamkeitsmechanismus.
    Workflow "Teilnehmen"
  • Vorhersagen: Der letzte Schritt in dem Modell besteht darin, dass anhand des eingegebenen Textes eine Vorhersage getroffen wird. Hierbei wird der Vektor aus dem Aufmerksamkeits-Layer zur Ausgabe der Entitätenbeschriftungs-ID an ein Multilayer-Perceptron übergeben.
    Workflow "Vorhersagen"

Das transformer-basierte Backend verwendet die von Vaswani et al. in "Attention Is All You Need" vorgeschlagene Architektur. Durch diese werden die Modelle genauer und parallelisierbar, während sie für das Training gleichzeitig weniger genaue beschriftete Daten erfordern. Intern haben die transformer-basierten Entitätenerkennungsmodelle in ArcGIS zwei Komponenten:

  • Encoder: Der Encoder dient als Backbone des Modells und transformiert den eingegebenen Text in eine Feature-Repräsentation in Form von Vektoren mit fester Größe. Das Modell verwendet bekannte Encoder, wie z. B. BERT, ALBERT und RoBERTa, die auf der Transformer-Architektur basieren und mit riesigen Textvolumen vortrainiert werden.
  • Klassifikator auf Token-Ebene: Ein Klassifikator auf Token-Ebene fungiert als Kopf des Modells und klassifiziert die Feature-Repräsentation jedes Tokens in mehrere Kategorien, die für die verschiedenen Entitäten stehen. Ein Klassifikator ist oftmals ein einfacher linearer Layer in dem neuronalen Netzwerk.
Komponenten des Entitätenerkennungsmodells

Hinweis:

NLP-Modelle können bei der Automatisierung der Analyse riesiger unstrukturierter Textvolumen leistungsstarke Werkzeuge sein. Wie bei anderen Modelltypen muss mit der entsprechenden persönlichen Umsicht und Transparenz bezüglich des Modelltyps und der zum Trainieren des Modells eingesetzten Trainings-Datasets vorsichtig vorgegangen werden, damit sichergestellt ist, dass sie auf relevante Aufgaben angewendet werden.

Entitätenerkennungsmodelle verwenden

Mit dem Werkzeug Entitäten mit Deep Learning extrahieren können Sie ein trainiertes Entitätenerkennungsmodell auf unstrukturierten Text anwenden und hilfreiche Informationen in Form von strukturierten Daten aus ihm extrahieren. Sie können vortrainierte Entitätenerkennungsmodelle aus ArcGIS Living Atlas of the World verwenden oder Ihre eigenen Modelle mit dem Werkzeug Entitätenerkennungsmodell trainieren trainieren.

Bei der Eingabe in das Werkzeug Entitäten mit Deep Learning extrahieren handelt es sich um einen Ordner mit den Textdateien, an denen der Named Entity Recognition-Vorgang durchgeführt wird. Das Eingabemodell kann eine Esri Modelldefinitions-JSON-Datei sein (.emd oder ein Deep Learning-Modellpaket (.dlpk). Das Modell enthält den Pfad zu der Datei für das Deep-Learning-Modell (das die Modellgewichtungen enthält) sowie andere Modellparameter. Manche Modelle können zusätzliche Modellargumente haben.

Mit dem Werkzeug wird eine Tabelle mit den Entitäten erstellt, die aus jeder Textdatei im Eingabeordner extrahiert wurden. Wenn ein Locator angegeben wird und mit dem Modell Adressen extrahiert werden können, wird stattdessen durch Geokodierung der extrahierten Adressen eine Feature-Class erzeugt. Enthält eine Textdatei mehrere Adressen, wird durch Geokodierung jeder Adresse und Replizieren der anderen Entitäten für die betreffende Textdatei ein Feature erstellt.

Obwohl das Werkzeug auf CPUs ausgeführt werden kann, wird für die Verarbeitung eine GPU empfohlen, da Deep Learning rechenintensiv ist. Zum Ausführen dieses Werkzeugs mithilfe einer GPU legen Sie die Umgebungseinstellung für den Prozessortyp auf "GPU" fest. Bei mehr als einer GPU geben Sie stattdessen die GPU-ID an.

Entitätenerkennungsmodelle trainieren

Mit dem Werkzeug Entitätenerkennungsmodell trainieren können Sie NLP-Modelle für die Erkennung benannter Entitäten trainieren. Dieses Werkzeug verwendet einen Machine-Learning-Ansatz und trainiert das Modell, indem es Trainingsgebiete bereitstellt, die aus Eingabetextpaaren und beschrifteten Entitäten in dem betreffenden Text bestehen. Das Trainieren von NLP-Modellen ist rechenintensiv, sodass empfohlen wird, eine GPU zu verwenden.

Die Trainingsdaten werden in einem Ordner bereitgestellt, der Trainingsdaten in Form von Standard-Datasets für NER-Tasks enthält. Das Dateiformat der Trainingsdaten ist .json oder .csv. Folgende Dataset-Typen werden unterstützt:

  • ner_json: Der Ordner muss eine .json-Datei mit Text und den beschrifteten Entitäten enthalten, die mithilfe des spaCy-JSON-Trainingsformats formatiert werden.
  • IOB: Das von Ramshaw und Marcus in "Text Chunking using Transformation-Based Learning" vorgeschlagene IOB-Format – inside (innerhalb), outside (außerhalb), beginning (Anfang). In diesem Format muss der Ordner die beiden folgenden .csv-Dateien enthalten:
    • token.csv: Diese Datei muss Text als Eingabe-Chunks enthalten.
    • tags.csv: Diese Datei muss IOB-Tags für die Text-Chunks enthalten.
  • BILUO: Eine Erweiterung des IOB-Formats, das die folgenden Tags enthält: B – "beginning" (Anfang), I – "inside" (innerhalb), L – "last" (letztes), O – "outside" (außerhalb), U – "unit" (Einheit). Wenn dieses Format verwendet wird, muss der Ordner mit den Trainingsdaten die beiden folgenden .csv-Dateien enthalten:
    • token.csv: Diese Datei muss Text als Eingabe-Chunks enthalten.
    • tags.csv: Diese Datei muss BILUO-Tags für die Text-Chunks enthalten.

Weitere Informationen zu diesen Formaten und zum Beschriften von Daten in diesen Formaten finden Sie in den Anweisungen zum Beschriften von Text mit Doccano.

Zum Trainieren eines Entitätenerkennungsmodells können Sie das Modell entweder von Grund auf neu trainieren oder ein bereits trainiertes Modell weiter optimieren.

Wenn Sie bereits Zugriff auf ein vortrainiertes Entitätenerkennungsmodell haben, das denselben Satz Zielentitäten enthält wie die Trainingsgebiete, können Sie dieses Modell mit den neuen Trainingsdaten weiter optimieren. Ein vorhandenes Modell zu optimieren geht oftmals schneller als ein Modell neu zu trainieren. Außerdem erfordert dieser Prozess weniger Trainingsgebiete. Stellen Sie beim Optimieren eines vortrainierten Modells sicher, dass Sie dasselbe Backbone-Modell verwenden, das in dem vortrainierten Modell verwendet wurde.

Bei dem vortrainierten Modell kann es sich um eine Esri Modelldefinitionsdatei (.emd) oder eine Deep-Learning-Paket-Datei (.dlpk) handeln. Das Ausgabemodell wird im angegebenen Ausgabemodell-Ordner ebenfalls in diesen Formaten gespeichert.

Adressenentitäten werden in Entitätenerkennungsmodellen in ArcGIS anders behandelt als andere Entitäten. Wenn eine Entität als Position behandelt werden soll, muss sie in den Werkzeugparametern als Adressenentität angegeben werden. Während der Inferenzierung werden diese Entitäten mithilfe des angegebenen Locators geokodiert, und das Ergebnis des Entitätenextraktionsprozesses ist eine Feature-Class. Wird kein Locator angegeben, oder extrahiert das trainierte Modell keine Adressenentitäten, wird stattdessen eine Tabelle mit den extrahierten Entitäten erstellt.

Das Trainieren von Deep-Learning-Modellen ist ein iterativer Prozess, bei dem die Eingabe-Trainingsdaten das neuronale Netzwerk mehrmals durchlaufen. Jeder Trainingsdurchlauf durch sämtliche Trainingsdaten wird als "Epoche" bezeichnet. Mit dem Parameter Max. Epochen wird angegeben, wie oft die Trainingsdaten das Modell während des Trainings maximal durchlaufen. Dies hängt davon ab, welches Modell Sie trainieren, wie komplex die Aufgabe ist und wie viele Trainingsgebiete Sie haben. Wenn Sie sehr viele Trainingsgebiete haben, können Sie einen kleinen Wert verwenden. Im Allgemeinen empfiehlt es sich, mehrere Epochen wiederholt so lange weiterzutrainieren, bis der Validierungsverlust immer weiter abnimmt.

Mit dem Parameter Backbone-Modell wird das vorkonfigurierte neuronale Netzwerk angegeben, das als Encoder für das Modell dient und Feature-Repräsentationen des Eingabetextes extrahiert. Dieses Modell unterstützt BERT-, ALBERT-, RoBERTa- und spaCy-basierte Encoder, die auf der Transformer-Architektur basieren und an großen Textvolumen halb überwacht vortrainiert werden.

Das Modelltraining erfolgt in Batches, und mit dem Parameter "Batch-Größe" wird angegeben, wie viele Trainingsgebiete gleichzeitig zum Trainieren verarbeitet werden. Durch Erhöhung der Batch-Größe lässt sich die Leistung des Werkzeugs erhöhen, aber mit zunehmender Batch-Größe wird auch mehr Arbeitsspeicher benötigt. Wenn beim Trainieren des Modells ein Fehler vom Typ "Nicht genügend Arbeitsspeicher" auftritt, verwenden Sie eine kleinere Batch-Größe.

Der Parameter Lernrate ist einer der wichtigsten Hyperparameter. Dabei handelt es sich um die Rate, mit der die Modellgewichtungen während des Trainings angepasst werden. Wenn Sie eine geringe Lernrate angeben, verbessert sich das Modell nur langsam und das Training dauert u. U. lange, wodurch Zeit und Ressourcen verschwendet werden. Eine hohe Lernrate kann kontraproduktiv sein, und das Modell lernt möglicherweise nicht gut. Bei hohen Lernraten werden die Modellgewichtungen u. U. drastisch angepasst, sodass es zu fehlerhaften Ergebnissen kommt. Oftmals ist es am besten, gar keinen Wert für den Parameter Lernrate anzugeben, da das Werkzeug laut dem Paper Cyclical Learning Rates for Training Neural Networks von Leslie N. Smith einen automatisierten Lernraten-Finder verwendet.

Das Werkzeug verwendet einen Teil der Trainingsdaten (standardmäßig 10 %) zur Validierung. Mit dem Parameter Validierungsprozentsatz können Sie anpassen, wie viele Tainingsdaten bei der Validierung verwendet werden.

Standardmäßig verwendet das Tool eine Methode zur frühzeitigen Beendigung, durch die das Modelltraining beendet wird, wenn sich das Modell über anschließende Trainingsepochen hinweg nicht mehr verbessert. Dieses Verhalten können Sie ausschalten, indem Sie das Kontrollkästchen Beenden, wenn sich das Modell nicht mehr verbessert deaktivieren.

Sie können auch angeben, ob die Backbone-Layer im vortrainierten Modell fixiert werden sollen, sodass die Gewichtungen und Verzerrungen wie ursprünglich vorgesehen beibehalten werden. Standardmäßig werden die Layer im Backbone-Modell nicht fixiert, und die Gewichtungen und Verzerrungen des Wertes Modell-Backbone können geändert werden, um sie an die Trainingsgebiete anzupassen. Die Verarbeitung dauert zwar länger, führt aber in der Regel zu besseren Ergebnissen.

Referenzen

Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. "Attention Is All You Need." 6. Dezember 2017. https://arxiv.org/abs/1706.03762.

Honnibal, Matthew. "Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models." https://explosion.ai/blog/deep-learning-formula-nlp.

Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "Fully Understanding the Hashing Trick." 22. Mai 2018. https://arxiv.org/pdf/1805.08539.pdf.

"Doccano." https://github.com/doccano/doccano.

Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." 24. Mai 2019. https://arxiv.org/pdf/1810.04805.pdf.

Smith, Leslie N. "Cyclical Learning Rates for Training Neural Networks." 4. April 2017. https://doi.org/10.48550/arxiv.1506.01186.

Ramshaw, Lance, and Mitch Marcus. "Text Chunking using Transformation-Based Learning." 1995. In Third Workshop on Very Large Corpora.