Funktionsweise der Entitätenerkennung

Die Entitätenerkennung, die auch als Erkennung benannter Entitäten (Named Entity Recognition, NER) bezeichnet wird, ist ein Prozess, bei dem Informationen aus Sätzen, Absätzen, Berichten in Textform oder anderen Arten unstrukturierter Texte extrahiert werden. Das Toolset "Textanalyse" in der Toolbox "GeoAI" enthält Werkzeuge, die auf der Verarbeitung natürlicher Sprache (NLP) basierende Methoden zum Trainieren von Entitätenerkennungsmodellen sowie zum Verwenden dieser Modelle zum Extrahieren von unstrukturiertem Text verwenden.

Mit dem Werkzeug Entitätenerkennungsmodell trainieren können Sie NLP-Modelle zum Extrahieren eines als Teil eines Trainings-Datasets bereitgestellten vordefinierten Satzes Entitäten (beispielsweise Organisationen, Personen, Datum oder Land) trainieren. Trainierte Entitätenerkennungsmodelle können mit dem Werkzeug Entitäten mit Deep Learning extrahieren verwendet werden, um diese Entitäten aus reinem Text in ein strukturiertes Format zu extrahieren.

Potenzielle Anwendungsbereiche

Das Werkzeug hat folgende potenzielle Anwendungsbereiche:

  • Extrahieren von Daten wie Ort, verantwortlicher Beamter oder verwendete Waffe aus Polizeimeldungen. Auf diese Weise können Einblicke in Trends gewonnen werden, und Abhilfemaßnahmen können besser geplant werden.
  • Informationen wie der Ort oder gegebenenfalls benötigte Unterstützung können aus Tweets oder Beiträgen in sozialen Medien extrahiert werden. So können bei einer Naturkatastrophe Bereiche identifiziert werden, in denen sofortige Hilfe benötigt wird.
Diagramm eines Entitätenerkennungsmodells
Dieses Entitätenerkennungsmodell dient zum Extrahieren von Entitäten wie Datum, Uhrzeit und Ort aus Berichten in Textform.

Entitätenerkennungsmodelle in ArcGIS basieren auf zwei Back-Ends: Das eine basiert auf der Transformer-Architektur und das andere auf der spaCy-Bibliothek, die das Framework Embed, encode, attend, predict (Einbettung, Codierung, Aufmerksamkeit, Vorhersage) nutzt.

  • Einbettung: Bei diesem Prozess wird der Eingabetext in verdichtete Worteinbettungen transformiert. In diesen Einbettungen werden semantische Informationen aus dem Eingabetext erfasst. Diese sind für das Modell wesentlich leichter zu verarbeiten.
    Workflow für Einbettung
  • Codierung: Bei diesem Prozess wird der Kontext in einen Wortvektor codiert. Hierzu werden residuale neuronale Faltungsnetzwerke mit Trigramm-Modell verwendet.
    Workflow für Codierung
  • Aufmerksamkeit: Die Matrixausgabe aus dem vorherigen Schritt wird auf einen einzigen Vektor reduziert, der zur Vorhersage einem standardmäßigen Feed-Forward-Netzwerk übergeben wird. Dieser Schritt hat eine ähnliche Wirkung wie der Aufmerksamkeitsmechanismus.
    Workflow für Aufmerksamkeit
  • Vorhersage: Im letzten Schritt des Modells wird anhand des Eingabetextes eine Vorhersage erstellt. Hier wird der Vektor aus dem Attention-Layer einem Multilayer-Perzeptron übergeben, um die Entitätsbeschriftungs-ID zurückzugeben.
    Workflow für Vorhersage

Das Transformer-basierte Back-End verwendet die von Vaswani et al. in der Abhandlung Attention Is All You Need vorgeschlagene Architektur. Dadurch werden die Modelle genauer und parallelisierbar, während gleichzeitig weniger genaue beschriftete Daten für das Training benötigt werden. Intern bestehen Transformer-basierte Entitätenerkennungsmodelle in ArcGIS aus zwei Komponenten:

  • Encoder: Der Encoder dient als Backbone und transformiert den Eingabetext in eine Feature-Repräsentation in Form von Vektoren fester Größe. Das Modell verwendet bekannte Encoder wie BERT, ALBERT und RoBERTa, die auf der Transformer-Architektur basieren und mit enormen Textmengen vortrainiert werden.
  • Klassifikator auf Token-Ebene: Ein Klassifikator auf Token-Ebene dient als Kopf des Modells und klassifiziert die Feature-Repräsentationen der einzelnen Token in mehreren Kategorien, die die verschiedenen Entitäten darstellen. Ein Klassifikator ist oft ein einfacher linearer Layer im neuronalen Netzwerk.
Komponenten eines Entitätenerkennungsmodells

Hinweis:

NLP-Modelle können beim Automatisieren der Analyse enormer unstrukturierter Textmengen als leistungsstarke Werkzeuge dienen. Stellen Sie wie bei anderen Modelltypen unbedingt sicher, dass die Modelle auf relevante Tasks mit angemessener menschlicher Überwachung und Transparenz bezüglich des Typs des Modells und der zum Trainieren des Modells verwendeten Trainings-Datasets angewendet werden.

Verwenden von Entitätenerkennungsmodellen

Sie können das Werkzeug Entitäten mit Deep Learning extrahieren verwenden, um ein trainiertes Entitätenerkennungsmodell auf unstrukturierten Text anzuwenden und aus diesem Text nützliche Informationen in Form strukturierter Daten zu extrahieren. Sie können vortrainierte Entitätenerkennungsmodelle aus ArcGIS Living Atlas of the World verwenden oder mit dem Werkzeug Entitätenerkennungsmodell trainieren eigene Modelle trainieren.

Als Eingabe für das Werkzeug Entitäten mit Deep Learning extrahieren wird ein Ordner mit den Textdateien verwendet, für die die Erkennung benannter Entitäten ausgeführt werden soll. Als Eingabemodell kann eine JSON-Datei mit der Esri Modelldefinition (.emd) oder ein Deep-Learning-Modellpaket (.dlpk) verwendet werden. Das Modell enthält den Pfad zur Deep-Learning-Modelldatei (mit Modellgewichtungen) und andere Modellparameter. Einige Modelle verfügen möglicherweise über zusätzliche Modellargumente.

Das Werkzeug erstellt aus jeder Textdatei im Eingabeordner eine Tabelle mit den extrahierten Entitäten. Wenn ein Locator angegeben wird und das Modell Adressen extrahieren kann, wird stattdessen eine Feature-Class durch Geokodierung der extrahierten Adressen erzeugt. Wenn eine Textdatei mehrere Adressen enthält, wird durch Geokodierung der einzelnen Adressen und Replikation der anderen Entitäten für diese Textdatei ein Feature erstellt.

Das Werkzeug kann zwar in CPUs ausgeführt werden, aber da Deep Learning rechenintensiv ist, wird für die Verarbeitung ein Grafikprozessor empfohlen. Um dieses Werkzeug mit einem Grafikprozessor auszuführen, legen Sie die Umgebungseinstellung Prozessortyp auf "GPU" fest. Wenn Sie mehrere Grafikprozessoren haben, geben Sie stattdessen die Umgebungseinstellung "GPU-ID" an.

Trainieren von Entitätenerkennungsmodellen

Sie können das Werkzeug Entitätenerkennungsmodell trainieren zum Trainieren von NLP-Modellen für die Erkennung benannter Entitäten verwenden. Das Werkzeug verwendet maschinelles Lernen und trainiert das Modell durch Bereitstellen von Trainingsgebieten, die aus Paaren aus Eingabetext und beschrifteten Entitäten in diesem Text bestehen. Da das Trainieren von NLP-Modellen rechenintensiv ist, wird ein Grafikprozessor empfohlen.

Die Trainingsdaten werden in Form eines Ordners mit Trainingsdaten in Form von Standard-Datasets für NER-Tasks bereitgestellt. Die Trainingsdaten liegen als .json- oder .csv-Dateien vor. Folgende Dataset-Typen werden unterstützt:

  • ner_json: Der Ordner muss eine .json-Datei mit Text und die beschrifteten Entitäten im spaCy-JSON-Trainingsformat enthalten.
  • IOB: Das von Ramshaw und Marcus in der Abhandlung "Text Chunking using Transformation-Based Learning" vorgeschlagene IOB-Format (I = inside [innerhalb], O = outside [außerhalb], B = beginning [am Anfang]). In diesem Format muss der Ordner die beiden folgenden .csv-Dateien enthalten:
    • token.csv: Diese Datei muss Text als Eingabeabschnitte enthalten.
    • tags.csv: Diese Datei muss IOB-Tags für die Textabschnitte enthalten.
  • BILUO: Eine Erweiterung des IOB-Formats, die die folgenden Tags enthält: B für "beginning" (am Anfang), I für "inside" (innerhalb), L für "last" (letztes), U für "unit" (Einheit), O für "outside" (außerhalb). Bei Verwendung dieses Formats muss der Ordner mit Trainingsdaten die beiden folgenden .csv-Dateien enthalten:
    • token.csv: Diese Datei muss Text als Eingabeabschnitte enthalten.
    • tags.csv: Diese Datei muss BILUO-Tags für die Textabschnitte 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.

Beim Trainieren eines Entitätenerkennungsmodells können Sie auswählen, ob Sie das Modell von Grund auf trainieren oder ein bereits trainiertes Modell weiter optimieren möchten.

Wenn Sie bereits Zugriff auf ein vortrainiertes Entitätenerkennungsmodell mit den gleichen Zielentitäten wie in den Trainingsgebieten haben, können Sie es anhand der neuen Trainingsdaten weiter optimieren. Das Optimieren eines vorhandenen Modells ist oft schneller als das Trainieren eines neuen Modells und erfordert außerdem weniger Trainingsgebiete. Stellen Sie beim Optimieren eines vortrainierten Modells sicher, dass Sie das gleiche Backbone-Modell wie für das vortrainierte Modell verwenden.

Als vortrainiertes Modell kann eine Esri Modelldefinitionsdatei (.emd) oder eine Deep-Learning-Paketdatei (.dlpk) verwendet werden. Das Ausgabemodell wird außerdem in diesen Formaten im angegebenen Ordner für das Ausgabemodell gespeichert.

Entitätenerkennungsmodelle in ArcGIS behandeln Adressenentitäten anders als andere Entitäten. Wenn eine Entität als Position behandelt werden soll, muss sie in den Werkzeugparametern als Adressenentität angegeben werden. Bei der Inferenz werden diese Entitäten mit dem angegebenen Locator geokodiert, und als Ergebnis der Entitätenextraktion wird eine Feature-Class erstellt. Wenn kein Locator bereitgestellt wird oder das trainierte Modell keine Adressenentitäten extrahiert, wird stattdessen eine Tabelle mit den extrahierten Entitäten erstellt.

Das Trainieren von Deep-Learning-Modellen ist ein iterativer Prozess, bei dem die Eingabetrainingsdaten mehrmals durch das neuronale Netzwerk geleitet werden. Die einzelnen Trainingsdurchläufe der gesamten Trainingsdaten werden als Epochen bezeichnet. Mit dem Parameter Max. Epochen wird angegeben, wie oft das Modell die Trainingsdaten während des Trainings verarbeitet. Dies hängt vom zu trainierenden Modell, von der Komplexität des Tasks und von der Anzahl Ihrer Trainingsgebiete ab. Wenn Sie eine große Anzahl von Trainingsgebieten haben, können Sie einen kleinen Wert verwenden. Generell ist es ratsam, wiederholt mit mehreren Epochen zu trainieren, bis der Validierungsverlust kontinuierlich abnimmt.

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

Das Modell wird in Batches trainiert, und mit dem Parameter für die Batch-Größe wird angegeben, wie viele Trainingsgebiete jeweils beim Training verarbeitet werden. Durch größere Batches kann die Leistung des Werkzeugs erhöht werden. Größere Batches belegen jedoch mehr Arbeitsspeicher. Wenn beim Trainieren des Modells die Fehlermeldung "Nicht genügend Arbeitsspeicher" angezeigt wird, verwenden Sie kleinere Batches.

Der Parameter Lernrate ist einer der wichtigsten Hyperparameter. Es handelt sich dabei um die Rate, mit der die Modellgewichtungen beim Training angepasst werden. Wenn Sie eine niedrige Lernrate angeben, wird das Modell nur langsam verbessert, und das Training kann viel Zeit beanspruchen, sodass Zeit und Ressourcen vergeudet werden. Eine hohe Lernrate kann kontraproduktiv sein und führt möglicherweise nicht zu guten Lernergebnissen. Bei hohen Lernraten können die Modellgewichtungen drastisch angepasst werden und zu fehlerhaften Ergebnissen führen. Oft empfiehlt es sich, keinen Wert für den Parameter Lernrate anzugeben, da das Werkzeug die Lernrate basierend auf der Abhandlung Cyclical Learning Rates for Training Neural Networks von Leslie N. Smith automatisch ermittelt.

Das Werkzeug verwendet einen Teil der Trainingsdaten (standardmäßig 10 Prozent) als Validierungssatz. Mit dem Parameter Validierungsprozentsatz können Sie die Menge der Trainingsdaten anpassen, die für die Validierung verwendet werden sollen.

Standardmäßig verwendet das Werkzeug eine Methode, bei der das Modelltraining beendet wird, wenn sich das Modell in nachfolgenden Epochen nicht mehr verbessert. Dieses Verhalten können Sie deaktivieren, 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 des Backbone-Modells 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 und 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 und 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 und Mitch Marcus. "Text Chunking using Transformation-Based Learning". 1995 In "Third Workshop on Very Large Corpora".