Sie können eigene Modelle für die Stimmungsextraktion 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.
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 |
- Eingabedatenformat für Training
- Vortrainierte Modellressourcen laden
- Modell trainieren
- Modell auf neue Daten anwenden
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 ein Feld text und ein Feld labels enthalten. Der Text stellt den Text des Trainingsbeispiels dar und das Feld labels ist ein Array, das genau eine Beschriftung positiv, neutraloder negativenthält.
Das folgende Beispiel zeigt ein Array mit Beispieltrainingsdaten:
[
{
"text": "I am happy",
"labels": ["positive"]
},
{
"text": "I am sad",
"labels": ["negative"]
},
{
"text": "The sky is blue",
"labels": ["neutral"]
}
]
Die Trainings-und Entwicklungsdatasets werden als Datenströme aus Arrays von JSON-Objekten erstellt. Zum Erstellen der Datenströme können Sie die Dienstprogrammmethode prepare_data_from_json
verwenden:
import watson_nlp
from watson_nlp.toolkit.sentiment_analysis_utils.training import train_util as utils
training_data_file = "train_data.json"
dev_data_file = "dev_data.json"
train_stream = utils.prepare_data_from_json(training_data_file)
dev_stream = utils.prepare_data_from_json(dev_data_file)
Vorab trainierte Modellressourcen laden
Das vortrainierte Slate IBM Foundation-Modell muss geladen werden, bevor es an den Trainingsalgorithmus übergeben wird. Darüber hinaus müssen Sie die Syntaxanalysemodelle für die in Ihren Eingabetexten verwendeten Sprachen laden.
So laden Sie das Modell:
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
# Download relevant syntax analysis models
syntax_model_en = watson_nlp.load('syntax_izumo_en_stock')
syntax_model_de = watson_nlp.load('syntax_izumo_de_stock')
# Create a list of all syntax analysis models
syntax_models = [syntax_model_en, syntax_model_de]
Modell trainieren
Geben Sie für alle Optionen, die für die Konfiguration des Stimmungstransformators verfügbar sind, Folgendes ein:
help(watson_nlp.workflows.sentiment.AggregatedSentiment.train_transformer)
Die Methode train_transformer
erstellt ein Workflowmodell, das automatisch eine Syntaxanalyse und die trainierte Stimmungsklassifikation ausführt. Aktivieren Sie in einem nachfolgenden Schritt die Spracherkennung, damit das Workflowmodell für Eingabetext ohne vorausgesetzte Informationen ausgeführt werden kann.
Das folgende Beispiel zeigt einen Aufruf unter Verwendung der Eingabedaten und des vorab trainierten Modells aus dem vorherigen Abschnitt (Modell trainieren):
from watson_nlp.workflows.sentiment import AggregatedSentiment
sentiment_model = AggregatedSentiment.train_transformer(
train_data_stream = train_stream,
dev_data_stream = dev_stream,
syntax_model=syntax_models,
pretrained_model_resource=pretrained_model_resource,
label_list=['negative', 'neutral', 'positive'],
learning_rate=2e-5,
num_train_epochs=10,
combine_approach="NON_NEUTRAL_MEAN",
keep_model_artifacts=True
)
lang_detect_model = watson_nlp.load('lang-detect_izumo_multi_stock')
sentiment_model.enable_lang_detect(lang_detect_model)
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.
Beispielcode:
input_text = 'new input text'
sentiment_predictions = sentiment_model.run(input_text)
Übergeordnetes Thema: Eigene Modelle erstellen