Sie können Ihre eigenen Modelle für die Zielmeinungsextraktion auf der Basis des Slate IBM Foundation-Modells trainieren. Dieses vortrainierte Modell kann für Ihren Anwendungsfall optimiert werden, indem es anhand Ihrer spezifischen Eingabedaten trainiert wird.
- Eingabedatenformat für Training
- Vortrainierte Modellressourcen laden
- Modell trainieren
- Modell auf neue Daten anwenden
- Modell speichern und laden
Format der Eingabedaten für das Trainieren
Sie müssen ein Trainings-und Entwicklungsdataset für die Trainingsfunktion bereitstellen. Die Entwicklungsdaten betragen in der Regel etwa 10% der Trainingsdaten. Jedes Trainings-oder Entwicklungsbeispiel wird als JSON-Objekt dargestellt. Sie muss einen Text und ein Feld target_mentions enthalten. Der Text stellt den Trainingsbeispieltext dar und das Feld target_mentions ist ein Array, das einen Eintrag für jede Zielerwähnung mit ihrem Text, Positionund Stimmungenthält.
Ziehen Sie die Verwendung von Watson Knowledge Studio in Betracht, damit Ihre Fachexperten ohne großen Aufwand Text annotieren und Trainingsdaten erstellen können.
Das folgende Beispiel zeigt ein Array mit Beispieltrainingsdaten:
[
{
"text": "Those waiters stare at you your entire meal, just waiting for you to put your fork down and they snatch the plate away in a second.",
"target_mentions": [
{
"text": "waiters",
"location": {
"begin": 6,
"end": 13
},
"sentiment": "negative"
}
]
}
]
Die Trainings-und Entwicklungsdatasets werden als Datenströme aus Arrays von JSON-Objekten erstellt. Zum Erstellen der Datenströme können Sie die Dienstprogrammmethode read_json_to_stream
verwenden. Es erfordert das Syntaxanalysemodell für die Sprache Ihrer Eingabedaten.
Beispielcode:
import watson_nlp
from watson_nlp.toolkit.targeted_sentiment.training_data_reader import read_json_to_stream
training_data_file = 'train_data.json'
dev_data_file = 'dev_data.json'
# Load the syntax analysis model for the language of your input data
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
# Prepare train and dev data streams
train_stream = read_json_to_stream(json_path=training_data_file, syntax_model=syntax_model)
dev_stream = read_json_to_stream(json_path=dev_data_file, syntax_model=syntax_model)
Vorab trainierte Modellressourcen laden
Das vortrainierte Slate IBM Foundation-Modell muss geladen werden, bevor es an den Trainingsalgorithmus übergeben wird.
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 |
So laden Sie das Modell:
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
Modell trainieren
Geben Sie für alle Optionen, die für die Konfiguration des Stimmungstransformators verfügbar sind, Folgendes ein:
help(watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train)
Die Methode train
erstellt ein neues Zielstimmungsblockmodell.
Der folgende Beispielaufruf verwendet die Eingabedaten und das vorab trainierte Modell aus dem vorherigen Abschnitt (Modell trainieren):
# Train the model
custom_tsa_model = watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train(
train_stream,
dev_stream,
pretrained_model_resource,
num_train_epochs=5
)
Modell auf neue Daten anwenden
Nachdem Sie das Modell für ein Dataset trainiert haben, wenden Sie das Modell auf neue Daten an, indem Sie die Methode run()
verwenden, wie Sie es für alle vorhandenen vorab trainierten Blöcke verwenden würden. Da das erstellte angepasste Modell ein Blockmodell ist, müssen Sie die Syntaxanalyse für den Eingabetext ausführen und die Ergebnisse an die run()
-Methoden übergeben.
Beispielcode:
input_text = 'new input text'
# Run syntax analysis first
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
syntax_analysis = syntax_model.run(input_text, parsers=('token',))
# Apply the new model on top of the syntax predictions
tsa_predictions = custom_tsa_model.run(syntax_analysis)
Modell speichern und laden
Das Stimmungsmodell für angepasste Ziele 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 Zielstimmungsmodells 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. Führen Sie dann die Zelle aus.
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 = 'custom_TSA_model_file' model_folder = 'custom_TSA' wslib.download_file('custom_TSA_model', 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:
custom_TSA_model = watson_nlp.load(model_folder)
Übergeordnetes Thema: Eigene Modelle erstellen