Entitätenerkennungsmodell trainieren (GeoAI)

Zusammenfassung

Trainiert ein Modell für die Erkennung benannter Entitäten, mit dem ein vordefinierter Satz Entitäten aus reinem Text extrahiert werden soll.

Weitere Informationen zur Funktionsweise der Entitätenerkennung

Verwendung

  • Für dieses Werkzeug müssen Deep-Learning-Frameworks installiert sein. Informationen zum Einrichten des Computers für Deep-Learning-Frameworks in ArcGIS Pro finden Sie unter Installieren von Deep-Learning-Frameworks for ArcGIS.

  • Dieses Werkzeug kann auch zur Optimierung eines vorhandenen trainierten Modells verwendet werden.

  • Wenn Sie dieses Werkzeug mit dem Grafikprozessor ausführen möchten, legen Sie die Umgebungsvariable Prozessortyp auf "GPU" fest. Wenn Sie mehrere Grafikprozessoren haben, legen Sie stattdessen die Umgebungsvariable GPU ID fest.

  • Die Eingabe kann eine Feature-Class oder Tabelle mit einem Textfeld und Beschriftungen benannter Entitäten sein oder ein Ordner mit Trainingsdaten in .json- oder .csv-Dateien.

  • Dieses Werkzeug verwendet Transformer-basierte Backbones für das Training von NER-Modellen und unterstützt auch das In-Context-Learning mit Prompts unter Verwendung des Mistral-LLM. Informationen zur Installation des Mistral-Backbone finden Sie unter ArcGIS Mistral Backbone.

  • Weitere Informationen zu den Voraussetzungen für die Ausführung dieses Werkzeugs und eventuell dabei auftretenden Problemen finden Sie unter Häufig gestellte Fragen zu Deep Learning.

Parameter

BeschriftungErläuterungDatentyp
Eingabeordner oder -tabelle

Zur Eingabe stehen folgende Möglichkeiten zur Verfügung:

  • Eine Feature-Class oder Tabelle, die ein Textfeld mit dem Eingabetext für das Modell und die beschrifteten Entitäten enthält, wobei das ausgewählte Textfeld als Eingabetext für das Modell verwendet wird und die übrigen Felder als Beschriftungen für benannte Entitäten behandelt werden.
  • Ein Ordner mit Trainingsdaten in Form von Standard-Datasets für NER-Tasks. Die Trainingsdaten müssen sich in .json- oder .csv-Dateien befinden. Durch das Dateiformat wird der Dataset-Typ der Eingabe bestimmt.
    • Wenn als Eingabe ein Ordner verwendet wird, werden folgende Dataset-Typen unterstützt:
      • ner_json: Der Trainingsdatenordner sollte 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 (Tags, die sich I = inside (innerhalb), O = outside (außerhalb), B = beginning (am Anfang) befinden).

        Der Trainingsdatenordner sollte die folgenden zwei .csv-Dateien enthalten:

        • tokens.csv: Enthält Text als Eingabe-Chunks.
        • tags.csv: Enthält IOB-Tags für die Text-Chunks.
      • BILUO: Eine Erweiterung des IOB-Formats, die zusätzlich L-Tags (last (letztes)) und U-Tags (unit (Einheit)) enthält.

        Der Trainingsdatenordner sollte die folgenden zwei .csv-Dateien enthalten:

        • tokens.csv: Enthält Text als Eingabe-Chunks.
        • tags.csv: Enthält BILUO-Tags für die Textabschnitte.
Folder; Feature Layer; Table View; Feature Class
Ausgabemodell

Der Speicherort des Ausgabeordners, in dem das trainierte Modell gespeichert wird.

Folder
Datei des vortrainierten Modells
(optional)

Ein vortrainiertes Modell, das zum Finetuning des neuen Modells verwendet wird. Als Eingabe kann eine Esri Modelldefinitionsdatei (.emd) oder eine Deep-Learning-Paketdatei (.dlpk) verwendet werden.

Ein vortrainiertes Modell mit ähnlichen Entitäten kann optimiert werden, um es auf das neue Modell abzustimmen. Das vortrainierte Modell muss mit dem gleichen Modelltyp und dem gleichen Backbone-Modell trainiert worden sein, das für das Training des neuen Modells verwendet wird.

File
Adressenentität
(optional)

Eine Adressenentität, die wie eine Position behandelt wird. Bei der Inferenz werden solche 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.

String
Max. Epochen
(optional)

Die maximale Anzahl von Epochen, für die das Modell trainiert wird. Die Einstellung "Max. Epochen" auf 1 bedeutet, dass das Dataset einmal durch das neuronale Netz geleitet wird. Der Standardwert ist 5.

Long
Modell-Backbone
(optional)

Gibt das vorkonfigurierte neuronale Netzwerk an, das als Architektur für das Training des neuen Modells verwendet werden soll.

  • bert-base-casedDas Modell wird mit dem neuronalen Netzwerk BERT trainiert. BERT wird mittels MLM-Ziel (Masked Language Modeling) und NSP (Next Sentence Prediction) vortrainiert.
  • roberta-baseDas Modell wird mit dem neuronalen Netzwerk RoBERTa trainiert. Mit RoBERTa werden die wichtigsten Hyperparameter von BERT geändert, sodass kein Vortrainingsziel mehr erforderlich ist und der nächste Satz mit kleinen Batches und höheren Lernraten trainiert wird.
  • albert-base-v1Das Modell wird mit dem neuronalen Netzwerk ALBERT trainiert. Bei ALBERT wird ein selbstüberwachter Verlust verwendet, mit dem die Kohärenz zwischen Sätzen modelliert wird, was im Vergleich zu BERT zu einer besseren Skalierbarkeit führt.
  • xlnet-base-casedDas Modell wird mit dem neuronalen Netzwerk XLNet trainiert. XLNet ist eine generalisierte autoregressive Vortrainingsmethode. Diese Methode ermöglicht das Erlernen bidirektionaler Zusammenhänge durch Maximierung der erwarteten Wahrscheinlichkeit bei allen Permutationen der Faktorisierungsreihenfolge, wodurch die Nachteile von BERT überwunden werden.
  • xlm-roberta-baseDas Modell wird mit dem neuronalen Netzwerk XLM-RoBERTa trainiert. XLM-RoBERTa ist ein mehrsprachiges Modell, das mit 100 verschiedenen Sprachen trainiert wird. Im Gegensatz zu einigen anderen mehrsprachigen XLM-Modellen sind hier keine Sprachtensoren erforderlich, um die jeweils verwendete Sprache zu erkennen. Vielmehr wird die jeweilige Sprache anhand der Eingabe-IDs erkannt.
  • distilroberta-baseDas Modell wird mit dem neuronalen Netzwerk DistilRoBERTa trainiert. DistilRoBERTa ist ein englischsprachiges Modell, das ausschließlich unter Überwachung des neuronalen roberta-base-Netzwerks auf OpenWebTextCorpus, einer Reproduktion des WebText-Datasets von OpenAI, trainiert wird.
  • distilbert-base-casedDas Modell wird mit dem neuronalen Netzwerk DistilBERT trainiert. DistilBERT ist ein kleineres allgemeines Sprachrepräsentationsmodell.
  • mistralDas Modell wird mithilfe des Mistral-LLM (Large Language Model) trainiert. Mistral ist ein reiner Decoder-Transformator, der Sliding Window Attention, Grouped-Query Attention und den Byte-Fallback-BPE-Tokenizer verwendet. Informationen zur Installation des Mistral-Backbone finden Sie unter ArcGIS Mistral Backbone.
String
Batch-Größe
(optional)

Die Anzahl der Trainingsgebiete, die gleichzeitig verarbeitet werden sollen. Der Standardwert ist 2.

Durch größere Batches kann die Leistung des Werkzeugs erhöht werden. Aber größere Batches belegen mehr Arbeitsspeicher. Wird die Fehlermeldung "Nicht genügend Arbeitsspeicher" angezeigt, verwenden Sie kleinere Batches.

Double
Modellargumente
(optional)

Zusätzliche Argumente, die für die Initialisierung des Modells verwendet werden sollen. Das unterstützte Modellargument ist sequence_length. Es wird zum Festlegen der maximalen Sequenzlänge der Trainingsdaten, die beim Training des Modells berücksichtigt werden sollen, verwendet.

Value Table
Lernrate
(optional)

Die Schrittgröße, die angibt, in welchem Umfang die Modellgewichtungen beim Trainingsprozess angepasst werden. Wenn kein Wert angegeben ist, wird automatisch eine optimale Lernrate abgeleitet.

Double
Validierungsprozentsatz
(optional)

Der Prozentsatz der Trainingsgebiete, die für die Überprüfung des Modells verwendet werden sollen. Der Standardwert ist 10 für Transformer-basierte Modell-Backbones und 50 für den Mistral-Backbone.

Double
Beenden, wenn sich das Modell nicht mehr verbessert
(optional)

Gibt an, ob das Modelltraining beendet wird, wenn sich das Modell nicht mehr verbessert, oder fortgesetzt wird, bis der Parameterwert Max. Epochen erreicht wurde.

  • Aktiviert: Das Modelltraining wird beendet, wenn sich das Modell nicht mehr verbessert, und zwar unabhängig vom Parameterwert Max. Epochen. Dies ist die Standardeinstellung.
  • Deaktiviert: Das Modelltraining wird fortgesetzt, bis der Parameterwert Max. Epochen erreicht wurde.
Boolean
Modell-Backbone trainierbar machen
(optional)

Gibt an, ob die Backbone-Layer im vorab trainierten Modell fixiert werden sollen, sodass die Gewichtungen und Verzerrungen wie ursprünglich vorgesehen beibehalten werden.

  • Aktiviert: Die Backbone-Layer werden nicht fixiert, und die Gewichtungen und Verzerrungen des Parameterwertes 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. Dies ist die Standardeinstellung.
  • Deaktiviert: Die Backbone-Layer werden fixiert, und die vordefinierten Gewichtungen und Verzerrungen des Parameterwertes Modell-Backbone werden beim Training nicht geändert.

Boolean
Textfeld

Ein Textfeld in der Eingabe-Feature-Class oder Eingabetabelle, das vom Modell als Eingabe verwendet wird. Dieser Parameter ist erforderlich, wenn der Parameterwert für Eingabeordner oder -tabelle eine Feature-Class oder Tabelle ist.

Field
Prompt
(optional)

Eine spezifische Eingabe oder Anweisung, die an ein LLM (Large Language Model) gegeben wird, um eine erwartete Ausgabe zu erzeugen.

Der Standardwert ist Benannte Entitäten, die zu den angegebenen Klassen gehören, aus dem angegebenen Text extrahieren. Keine Tags zu Entitäten hinzufügen, die zu einer anderen Klasse gehören.

String

arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_model, {pretrained_model_file}, {address_entity}, {max_epochs}, {model_backbone}, {batch_size}, {model_arguments}, {learning_rate}, {validation_percentage}, {stop_training}, {make_trainable}, text_field, {prompt})
NameErläuterungDatentyp
in_folder

Zur Eingabe stehen folgende Möglichkeiten zur Verfügung:

  • Eine Feature-Class oder Tabelle, die ein Textfeld mit dem Eingabetext für das Modell und die beschrifteten Entitäten enthält, wobei das ausgewählte Textfeld als Eingabetext für das Modell verwendet wird und die übrigen Felder als Beschriftungen für benannte Entitäten behandelt werden.
  • Ein Ordner mit Trainingsdaten in Form von Standard-Datasets für NER-Tasks. Die Trainingsdaten müssen sich in .json- oder .csv-Dateien befinden. Durch das Dateiformat wird der Dataset-Typ der Eingabe bestimmt.
    • Wenn als Eingabe ein Ordner verwendet wird, werden folgende Dataset-Typen unterstützt:
      • ner_json: Der Trainingsdatenordner sollte 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 (Tags, die sich I = inside (innerhalb), O = outside (außerhalb), B = beginning (am Anfang) befinden).

        Der Trainingsdatenordner sollte die folgenden zwei .csv-Dateien enthalten:

        • tokens.csv: Enthält Text als Eingabe-Chunks.
        • tags.csv: Enthält IOB-Tags für die Text-Chunks.
      • BILUO: Eine Erweiterung des IOB-Formats, die zusätzlich L-Tags (last (letztes)) und U-Tags (unit (Einheit)) enthält.

        Der Trainingsdatenordner sollte die folgenden zwei .csv-Dateien enthalten:

        • tokens.csv: Enthält Text als Eingabe-Chunks.
        • tags.csv: Enthält BILUO-Tags für die Textabschnitte.
Folder; Feature Layer; Table View; Feature Class
out_model

Der Speicherort des Ausgabeordners, in dem das trainierte Modell gespeichert wird.

Folder
pretrained_model_file
(optional)

Ein vortrainiertes Modell, das zum Finetuning des neuen Modells verwendet wird. Als Eingabe kann eine Esri Modelldefinitionsdatei (.emd) oder eine Deep-Learning-Paketdatei (.dlpk) verwendet werden.

Ein vortrainiertes Modell mit ähnlichen Entitäten kann optimiert werden, um es auf das neue Modell abzustimmen. Das vortrainierte Modell muss mit dem gleichen Modelltyp und dem gleichen Backbone-Modell trainiert worden sein, das für das Training des neuen Modells verwendet wird.

File
address_entity
(optional)

Eine Adressenentität, die wie eine Position behandelt wird. Bei der Inferenz werden solche 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.

String
max_epochs
(optional)

Die maximale Anzahl von Epochen, für die das Modell trainiert wird. Die Einstellung "Max. Epochen" auf 1 bedeutet, dass das Dataset einmal durch das neuronale Netz geleitet wird. Der Standardwert ist 5.

Long
model_backbone
(optional)

Gibt das vorkonfigurierte neuronale Netzwerk an, das als Architektur für das Training des neuen Modells verwendet werden soll.

  • bert-base-casedDas Modell wird mit dem neuronalen Netzwerk BERT trainiert. BERT wird mittels MLM-Ziel (Masked Language Modeling) und NSP (Next Sentence Prediction) vortrainiert.
  • roberta-baseDas Modell wird mit dem neuronalen Netzwerk RoBERTa trainiert. Mit RoBERTa werden die wichtigsten Hyperparameter von BERT geändert, sodass kein Vortrainingsziel mehr erforderlich ist und der nächste Satz mit kleinen Batches und höheren Lernraten trainiert wird.
  • albert-base-v1Das Modell wird mit dem neuronalen Netzwerk ALBERT trainiert. Bei ALBERT wird ein selbstüberwachter Verlust verwendet, mit dem die Kohärenz zwischen Sätzen modelliert wird, was im Vergleich zu BERT zu einer besseren Skalierbarkeit führt.
  • xlnet-base-casedDas Modell wird mit dem neuronalen Netzwerk XLNet trainiert. XLNet ist eine generalisierte autoregressive Vortrainingsmethode. Diese Methode ermöglicht das Erlernen bidirektionaler Zusammenhänge durch Maximierung der erwarteten Wahrscheinlichkeit bei allen Permutationen der Faktorisierungsreihenfolge, wodurch die Nachteile von BERT überwunden werden.
  • xlm-roberta-baseDas Modell wird mit dem neuronalen Netzwerk XLM-RoBERTa trainiert. XLM-RoBERTa ist ein mehrsprachiges Modell, das mit 100 verschiedenen Sprachen trainiert wird. Im Gegensatz zu einigen anderen mehrsprachigen XLM-Modellen sind hier keine Sprachtensoren erforderlich, um die jeweils verwendete Sprache zu erkennen. Vielmehr wird die jeweilige Sprache anhand der Eingabe-IDs erkannt.
  • distilroberta-baseDas Modell wird mit dem neuronalen Netzwerk DistilRoBERTa trainiert. DistilRoBERTa ist ein englischsprachiges Modell, das ausschließlich unter Überwachung des neuronalen roberta-base-Netzwerks auf OpenWebTextCorpus, einer Reproduktion des WebText-Datasets von OpenAI, trainiert wird.
  • distilbert-base-casedDas Modell wird mit dem neuronalen Netzwerk DistilBERT trainiert. DistilBERT ist ein kleineres allgemeines Sprachrepräsentationsmodell.
  • mistralDas Modell wird mithilfe des Mistral-LLM (Large Language Model) trainiert. Mistral ist ein reiner Decoder-Transformator, der Sliding Window Attention, Grouped-Query Attention und den Byte-Fallback-BPE-Tokenizer verwendet. Informationen zur Installation des Mistral-Backbone finden Sie unter ArcGIS Mistral Backbone.
String
batch_size
(optional)

Die Anzahl der Trainingsgebiete, die gleichzeitig verarbeitet werden sollen. Der Standardwert ist 2.

Durch größere Batches kann die Leistung des Werkzeugs erhöht werden. Aber größere Batches belegen mehr Arbeitsspeicher. Wird die Fehlermeldung "Nicht genügend Arbeitsspeicher" angezeigt, verwenden Sie kleinere Batches.

Double
model_arguments
[model_arguments,...]
(optional)

Zusätzliche Argumente, die für die Initialisierung des Modells verwendet werden sollen. Das unterstützte Modellargument ist sequence_length. Es wird zum Festlegen der maximalen Sequenzlänge der Trainingsdaten, die beim Training des Modells berücksichtigt werden sollen, verwendet.

Value Table
learning_rate
(optional)

Die Schrittgröße, die angibt, in welchem Umfang die Modellgewichtungen beim Trainingsprozess angepasst werden. Wenn kein Wert angegeben ist, wird automatisch eine optimale Lernrate abgeleitet.

Double
validation_percentage
(optional)

Der Prozentsatz der Trainingsgebiete, die für die Überprüfung des Modells verwendet werden sollen. Der Standardwert ist 10 für Transformer-basierte Modell-Backbones und 50 für den Mistral-Backbone.

Double
stop_training
(optional)

Gibt an, ob das Modelltraining beendet wird, wenn sich das Modell nicht mehr verbessert, oder fortgesetzt, wird bis der Parameterwert max_epochs erreicht wurde.

  • STOP_TRAININGDas Modelltraining wird beendet, wenn sich das Modell nicht mehr verbessert, und zwar unabhängig vom Parameterwert max_epochs. Dies ist die Standardeinstellung.
  • CONTINUE_TRAININGDas Modelltraining wird fortgesetzt, bis der Parameterwert max_epochs erreicht wurde.
Boolean
make_trainable
(optional)

Gibt an, ob die Backbone-Layer im vorab trainierten Modell fixiert werden sollen, sodass die Gewichtungen und Verzerrungen wie ursprünglich vorgesehen beibehalten werden.

  • TRAIN_MODEL_BACKBONEDie Backbone-Layer werden nicht fixiert, und die Gewichtungen und Verzerrungen des Parameterwertes model_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. Dies ist die Standardeinstellung.
  • FREEZE_MODEL_BACKBONEDie Backbone-Layer werden fixiert, und die vordefinierten Gewichtungen und Verzerrungen des Parameterwertes model_backbone werden beim Training nicht geändert.
Boolean
text_field

Ein Textfeld in der Eingabe-Feature-Class oder Eingabetabelle, das vom Modell als Eingabe verwendet wird. Dieser Parameter ist erforderlich, wenn der Parameterwert für in_folder eine Feature-Class oder Tabelle ist.

Field
prompt
(optional)

Eine spezifische Eingabe oder Anweisung, die an ein LLM (Large Language Model) gegeben wird, um eine erwartete Ausgabe zu erzeugen.

Der Standardwert ist Benannte Entitäten, die zu den angegebenen Klassen gehören, aus dem angegebenen Text extrahieren. Keine Tags zu Entitäten hinzufügen, die zu einer anderen Klasse gehören.

String

Codebeispiel

TrainEntityRecognitionModel (eigenständiges Skript)

Im folgenden Beispiel wird veranschaulicht, wie die TrainEntityRecognitionModel-Funktion verwendet wird.

# Name: TrainEntityRecognizer.py
# Description: Train an Entity Recognition model to extract useful entities such as "Address", "Date" from text.  

# Import system modules
import arcpy

arcpy.env.workspace = "C:/textanalysisexamples/data"

# Set local variables
in_folder = "train_data"
out_folder = "test_bio_format"

# Run Train Entity Recognition Model
arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_folder)

Umgebungen

Lizenzinformationen

  • Basic: Nein
  • Standard: Nein
  • Advanced: Ja

Verwandte Themen