Vous pouvez entraîner vos propres modèles pour l'extraction des sentiments en fonction du modèle Slate IBM Foundation. Ce modèle préentraîné peut être optimisé pour votre cas d'utilisation en l'entrainant sur vos données d'entrée spécifiques.
Pour une liste des modèles Slate disponibles, consultez ce tableau :
Modèle | Descriptif |
---|---|
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased |
Modèle générique et polyvalent |
pretrained-model_slate.125m.finance_many_transformer_en_cased |
Modèle pré-entraîné sur le contenu financier |
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased |
Modèle pré-formé sur les contenus de cybersécurité |
pretrained-model_slate.125m.biomedical_many_transformer_en_cased |
Modèle pré-entraîné sur le contenu biomédical |
- Format des données d'entrée pour la formation
- Chargement des ressources de modèle préentraînées
- Entraînement du modèle
- Application du modèle sur de nouvelles données
Format des données d'entrée pour la formation
Vous devez fournir un ensemble de données d'entraînement et de développement à la fonction d'entraînement. Les données de développement représentent généralement environ 10% des données d'apprentissage. Chaque exemple d'entraînement ou de développement est représenté sous la forme d'un objet JSON. Il doit comporter un texte et une zone labels . Le texte représente l'exemple de texte d'apprentissage et la zone labels est un tableau qui contient exactement un libellé positif, neutreou négatif.
Voici un exemple de tableau avec des exemples de données d'apprentissage:
[
{
"text": "I am happy",
"labels": ["positive"]
},
{
"text": "I am sad",
"labels": ["negative"]
},
{
"text": "The sky is blue",
"labels": ["neutral"]
}
]
Les ensembles de données d'entraînement et de développement sont créés en tant que flux de données à partir de tableaux d'objets JSON. Pour créer les flux de données, vous pouvez utiliser la méthode d'utilitaire prepare_data_from_json
:
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)
Chargement des ressources de modèle préentraînées
Le modèle Slate IBM Foundation préformé doit être chargé avant d'être transmis à l'algorithme d'entraînement. En outre, vous devez charger les modèles d'analyse de syntaxe pour les langues utilisées dans vos textes d'entrée.
Pour charger le modèle:
# 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]
Entraînement du modèle
Pour toutes les options disponibles pour la configuration de l'entraînement du transformateur de sentiment, entrez:
help(watson_nlp.workflows.sentiment.AggregatedSentiment.train_transformer)
La méthode train_transformer
crée un modèle de flux de travaux qui exécute automatiquement l'analyse de la syntaxe et la classification des sentiments entraînés. Dans une étape ultérieure, activez la détection de langue afin que le modèle de flux de travaux puisse s'exécuter sur du texte d'entrée sans informations prérequises.
Voici un exemple d'appel utilisant les données d'entrée et le modèle préentraîné de la section précédente (entraînement du modèle):
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)
Application du modèle sur de nouvelles données
Après avoir entraîné le modèle sur un jeu de données, appliquez le modèle sur de nouvelles données à l'aide de la méthode run()
, comme vous l'utiliseriez sur l'un des blocs pré-entraînés existants.
Exemple de code :
input_text = 'new input text'
sentiment_predictions = sentiment_model.run(input_text)
Rubrique parent : Création de vos propres modèles