Wenn Sie keine feste Gruppe von Begriffen haben oder keine Entitäten ausdrücken können, die Sie als reguläre Ausdrücke erkennen möchten, können Sie ein angepasstes Umsetzungsmodell erstellen. Das Modell basiert auf dem vorab trainierten Slate IBM Foundation-Modell.
Wenn Sie das vortrainierte Modell verwenden, können Sie mehrsprachige Modelle erstellen. Sie müssen keine separaten Modelle für jede Sprache haben.
Sie benötigen ausreichende Trainingsdaten, um hohe Qualität zu erreichen (2000-5000 pro Entitätstyp). Wenn GPUs verfügbar sind, verwenden Sie sie für das Training.
Das Trainieren von Transformatormodellen ist CPU-und speicherintensiv. Die vordefinierten Umgebungen sind nicht groß genug, um das Training abzuschließen. Erstellen Sie eine angepasste Notebookumgebung mit einer größeren CPU-und Speicherkapazität und verwenden Sie diese zum Ausführen Ihres Notebooks. Wenn GPUs verfügbar sind, wird dringend empfohlen, sie zu verwenden. Siehe Eigene Umgebungsvorlage erstellen.
Eingabedatenformat
Die Trainingsdaten werden durch ein Array mit mehreren JSON-Objekten dargestellt. Jedes JSON-Objekt stellt eine Trainingsinstanz dar und muss ein Feld text
und ein Feld mentions
enthalten. Das Feld text
stellt den Text des Trainingssatzes dar und mentions
ist ein Array von JSON-Objekten mit dem Text, dem Typ und der Position jeder Erwähnung:
[
{
"text": str,
"mentions": [{
"location": {
"begin": int,
"end": int
},
"text": str,
"type": str
},...]
},...
]
Beispiel:
[
{
"id": 38863234,
"text": "I'm moving to Colorado in a couple months.",
"mentions": [{
"text": "Colorado",
"type": "Location",
"location": {
"begin": 14,
"end": 22
}
},
{
"text": "couple months",
"type": "Duration",
"location": {
"begin": 28,
"end": 41
}
}]
}
]
Modell trainieren
Der Transformatoralgorithmus verwendet das vortrainierte Slate-Modell.
Eine Liste der verfügbaren Slate-Modelle finden Sie in dieser Tabelle:
Modell | Beschreibung |
---|---|
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased |
Generisches Mehrzweckmodell |
pretrained-model_slate.125m.finance_many_transformer_en_cased |
Auf Finanzinhalte vortrainiertes Modell |
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased |
Auf Cybersicherheitsinhalte vortrainiertes Modell |
pretrained-model_slate.125m.biomedical_many_transformer_en_cased |
Auf biomedizinischen Inhalt vortrainiertes Modell |
Geben Sie Folgendes ein, um die Optionen für die Konfiguration des Transformer-Trainings abzurufen:
help(watson_nlp.workflows.entity_mentions.transformer.Transformer.train)
Mustercode
import watson_nlp
from watson_nlp.toolkit.entity_mentions_utils.train_util import prepare_stream_of_train_records_from_JSON_collection
# load the syntax models for all languages to be supported
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
syntax_models = [syntax_model]
# load the pretrained Slate model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
# prepare the train and dev data
# entity_train_data is a directory with one or more json files in the input format specified above
train_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')
dev_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')
# train a transformer workflow model
trained_workflow = watson_nlp.workflows.entity_mentions.transformer.Transformer.train(
train_data_stream=train_data_stream,
dev_data_stream=dev_data_stream,
syntax_models=syntax_models,
template_resource=pretrained_model_resource,
num_train_epochs=3,
)
Modell auf neue Daten anwenden
Wenden Sie das Workflowmodell des trainierten Transformators auf neue Daten an, indem Sie die Methode run()
verwenden, wie Sie es bei allen vorhandenen vorab trainierten Blöcken verwenden würden.
Codebeispiel
trained_workflow.run('Bruce is at Times Square')
Modell speichern und laden
Das angepasste Transformatormodell kann wie jedes andere Modell gespeichert werden, wie im Abschnitt Angepasste Modelle speichern und ladenunter Verwendung von ibm_watson_studio_lib
beschrieben.
Zum Laden des angepassten Umsetzungsprogrammmodells sind zusätzliche Schritte erforderlich:
Stellen Sie sicher, dass Sie über ein Zugriffstoken auf der Seite Zugriffssteuerung in der Registerkarte Verwalten Ihres Projekts verfügen. Nur Projektadministratoren können Zugriffstokens erstellen. Das Zugriffstoken kann über Viewer -oder Editor -Zugriffsberechtigungen verfügen. Nur Bearbeiter können das Token in ein Notebook einfügen.
Fügen Sie das Projekttoken zum Notebook hinzu, indem Sie in der Aktionsleiste des Notebooks auf Mehr > Projekttoken einfügen klicken und dann die Zelle ausführen.
Durch Ausführen der eingefügten verdeckten Codezelle wird ein
wslib
-Objekt erstellt, das Sie für Funktionen in der Bibliothekibm-watson-studio-lib
verwenden können. Informationen zu den verfügbarenibm-watson-studio-lib
-Funktionen finden Sie unter Using ibm-watson-studio-lib for Python.Laden Sie das Modell herunter und extrahieren Sie es in Ihrer lokalen Laufzeitumgebung:
import zipfile model_zip = 'trained_workflow_file' model_folder = 'trained_workflow_folder' wslib.download_file('trained_workflow', file_name=model_zip) with zipfile.ZipFile(model_zip, 'r') as zip_ref: zip_ref.extractall(model_folder)
Laden Sie das Modell aus dem extrahierten Ordner:
trained_workflow = watson_nlp.load(model_folder)
Übergeordnetes Thema: Eigene Modelle erstellen