Bei der Textklassifizierung wird Sätzen, Absätzen, Berichten in Textform oder anderen Arten unstrukturierter Texte eine vordefinierte Kategorie oder Beschriftung zugewiesen. Das Toolset "Textanalyse" in der Toolbox "GeoAI" enthält Werkzeuge, die auf der Verarbeitung natürlicher Sprache (NLP) basierende Methoden zum Trainieren von Textklassifizierungsmodellen sowie zum Verwenden der Modelle zum Klassifizieren von Text verwenden.
Mit dem Werkzeug Textklassifizierungsmodell trainieren werden NLP-Modelle für das Klassifizieren von Text auf der Grundlage bekannter Klassen oder Kategorien trainiert, die als Teil eines Trainings-Datasets bereitgestellt werden. Die trainierten Modelle können mit dem Werkzeug Text mit Deep Learning klassifizieren verwendet werden, um ähnlichen Text in diesen Kategorien zu klassifizieren.
Potenzielle Anwendungsbereiche
Das Werkzeug hat folgende potenzielle Anwendungsbereiche:
- Unvollständige Adressen können nach dem zugehörigen Land klassifiziert werden. Auf diese Weise kann leichter der entsprechende Locator für die genauere Geokodierung dieser Adressen zugewiesen werden.
- Geolokalisierte Tweets können danach klassifiziert werden, ob sie auf eine zögerliche Haltung gegenüber Impfstoffen hindeuten. Dadurch können Bereiche identifiziert werden, in denen Aufklärungskampagnen das Vertrauen der Öffentlichkeit und die Impfbereitschaft steigern können.
- Kategorisieren der Art von Straftaten basierend auf Polizeimeldungen. Auf diese Weise können Einblicke in Trends gewonnen werden, indem Straftaten nach Kategorien aggregiert werden, und Abhilfemaßnahmen können besser geplant werden.
Textklassifizierungsmodelle in ArcGIS basieren auf der von Vaswani et al. in der richtungsweisenden Abhandlung Attention is All you Need vorgeschlagenen Transformer-Architektur. Dadurch werden die Modelle genauer und parallelisierbar, während gleichzeitig weniger beschriftete Daten für das Training benötigt werden.
Intern handelt es sich bei Textklassifizierungsmodellen in ArcGIS um tiefe neuronale Netzwerke, die aus zwei Komponenten bestehen:
- 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: Ein Klassifikator dient als Kopf des Modells und klassifiziert die Feature-Repräsentationen in mehreren Kategorien. Ein Klassifikator ist oft ein einfacher linearer Layer im neuronalen Netzwerk.
Textklassifizierungsmodelle in ArcGIS unterstützen darüber hinaus auch das Mistral-Modell-Backbone. Mistral ist ein Large Language Modell, das auf einer Transformer-Architektur basiert und als reines Decoder-Modell verwendet wird. Die Mistral-Architektur zeichnet sich durch folgende Komponenten aus:
- Sliding Window Attention: Verarbeitet lange Texte auf effiziente Weise, indem es diese in kleinere, überlappende Segmente aufteilt und dadurch Rechenaufwand und Speicherauslastung reduziert, wobei wichtige Kontexte erhalten bleiben.
- Grouped-Query Attention: Verbessert die Effizienz, indem ähnliche Abfragen in zusammengefasst werden. Dadurch wird die Anzahl von Aufmerksamkeitsberechnungen reduziert und die Verarbeitung beschleunigt.
- Byte-Fallback BPE (Byte Pair Encoding) Tokenizer: Wandelt Text in Token um, die das Modell verarbeiten kann.
Hinweis:
NLP-Modelle können beim Automatisieren der Analyse großer unstrukturierter Textmengen als effektive Werkzeuge dienen. Stellen Sie wie bei anderen Modelltypen 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 Textklassifizierungsmodellen
Das Werkzeug Text mit Deep Learning klassifizieren kann verwendet werden, um ein trainiertes Textklassifizierungsmodell auf unstrukturierten Text anzuwenden und diesen in vordefinierten Typen zu kategorisieren. Sie können vortrainierte Textklassifizierungsmodelle aus ArcGIS Living Atlas of the World verwenden oder mit dem Werkzeug Textklassifizierungsmodell trainieren benutzerdefinierte Modelle trainieren.
Die Eingabe für das Werkzeug Text mit Deep Learning klassifizieren ist eine Feature-Class oder Tabelle, die den zu klassifizierenden Text enthält. 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. Bestimmte Modelle verfügen möglicherweise über zusätzliche Modellargumente.
Das Werkzeug erstellt in der Eingabetabelle ein Feld, das die Klassen- oder Kategoriebeschriftung enthält, die dem Eingabetext vom Modell zugewiesen wurde.
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 Textklassifizierungsmodellen
Das Werkzeug Textklassifizierungsmodell trainieren kann zum Trainieren von NLP-Modellen für die Textklassifizierung verwendet werden. Das Werkzeug verwendet maschinelles Lernen und trainiert das Modell durch Bereitstellen von Trainingsgebieten, die aus Paaren aus Eingabetext und beschrifteten Klassen bestehen. Mit dem Mistral-Modell-Backbone verwendet es In-Context-Learning. Es lenkt den Informationsgewinn und die Reaktionen des Modells mithilfe von Eingabeaufforderungen und durch die Bereitstellung von bestimmten Beispielen, anhand derer das gewünschte Ergebnis abgeleitet werden kann. Da das Trainieren von NLP-Modellen rechenintensiv ist, wird dafür ein Grafikprozessor empfohlen.
Die Trainingsdaten werden bereitgestellt in Form einer Eingabetabelle, die ein Textfeld enthält, das als Einflussvariable fungiert, und ein Beschriftungsfeld, das die Zielklassenbeschriftung für jeden Eingabetext in der Tabelle enthält.
Beim Trainieren eines Textklassifizierungsmodells können Sie das Modell von Grund auf trainieren, ein trainiertes Modell optimieren oder In-Context-Learning verwenden. Im Allgemeinen gelten Sprachmodelle mit Transformer-Architektur als Few-Shot-Learner.
Wenn Sie jedoch Zugriff auf ein vortrainiertes Textklassifizierungsmodell mit den gleichen Zielklassen wie in den Trainingsgebieten haben, können Sie es anhand der neuen Trainingsdaten 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 oder eine Deep-Learning-Paketdatei verwendet werden. Das Ausgabemodell wird außerdem in diesen Formaten im angegebenen Ordner für das Ausgabemodell gespeichert.
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 Epoche 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 der Trainingsgebiete ab. Wenn Sie viele Trainingsgebiete 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- und RoBERTa-basierte Encoder, die auf der Transformer-Architektur basieren und unter teilweiser Beaufsichtigung mit großen Textmengen vortrainiert wurden. Diese Encoder verfügen über ein gutes Sprachverständnis und können den Eingabetext in Form von Vektoren fester Länge darstellen, die als Eingaben für den Klassifizierungskopf des Modells dienen. Der Parameter Modell-Backbone unterstützt darüber hinaus auch das Mistral-LLM (Large Language Model). Mistral ist ein reiner Decoder-Transformer, der Sliding Window Attention für eine effiziente Verarbeitung von langen Texten, Grouped-Query Attention zur Optimierung von Berechnungen und Byte-Fallback BPE Tokenizer für den Umgang mit verschiedenen Texteingaben verwendet.
Das Modell wird in Batches trainiert, und mit dem Parameter Batch-Größe wird angegeben, wie viele Trainingsgebiete jeweils beim Training verarbeitet werden. Durch Erhöhen der Batch-Größe kann die Performance des Werkzeugs verbessert werden. Mit zunehmender Batch-Größe wird jedoch mehr Speicher verwendet. 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. Beim Mistral-Modell müssen mindestens 50 Prozent der Daten für die Validierung reserviert werden, da Mistral zur Bewertung der Modell-Performance zwar einen kleineren Trainingssatz, dafür jedoch einen größeren Validierungssatz benötigt.
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 den Parameter 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.
Textdaten enthalten oft Rauschen in Form von HTML-Tags und URLs. Sie können die Parameter HTML-Tags entfernen und URLs entfernen verwenden, um den Text vorzuverarbeiten und die Tags vor der Verarbeitung zu entfernen.
Referenzen
Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser und Illia Polosukhin. "Attention Is All You Need". 6. Dezember 2017. https://arxiv.org/abs/1706.03762.
Devlin, Jacob, Ming-Wei Chang, Kenton Lee und Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding". 24. Mai 2019. https://doi.org/10.48550/arxiv.1810.04805.
"Encoder models". https://huggingface.co/course/chapter1/5?fw=pt.
Brown, Tom B. et al. "Language Models are Few-Shot Learners". 22. Juli 2020. https://doi.org/10.48550/arxiv.2005.14165.
Smith, Leslie N. "Cyclical Learning Rates for Training Neural Networks". 4. April 2017. https://doi.org/10.48550/arxiv.1506.01186.
"Mistral." https://docs.mistral.ai/getting-started/open_weight_models/.