0 / 0
Retourner à la version anglaise de la documentation
Extraction du sentiment à l'aide d'un modèle de transformateur personnalisé
Dernière mise à jour : 07 nov. 2024
Extraction du sentiment à l'aide d'un modèle de transformateur personnalisé

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 :

Liste des modèles Slate disponibles et leurs descriptions
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
Remarque: l'entraînement des modèles de transformateur consomme beaucoup d'UC et de mémoire. En fonction de la taille de vos données d'entraînement, il se peut que l'environnement ne soit pas assez grand pour effectuer l'entraînement. Si vous exécutez des problèmes avec le noyau du bloc-notes pendant la formation, créez un environnement de bloc-notes personnalisé avec une plus grande quantité d'UC et de mémoire, et utilisez ce dernier pour exécuter votre bloc-notes. Utilisez un environnement basé sur GPU pour l'entraînement et le temps d'inférence, s'il est disponible pour vous. Voir Création de votre propre modèle d'environnement.

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

Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus