0 / 0
Volver a la versión inglesa de la documentación
Extracción de opiniones con un modelo de transformador personalizado
Última actualización: 07 nov 2024
Extracción de opiniones con un modelo de transformador personalizado

Puede entrenar sus propios modelos para la extracción de opiniones basándose en el modelo de Slate IBM Foundation. Este modelo entrenado previamente se puede ajustar para su caso de uso entrenándolo en los datos de entrada específicos.

Para obtener una lista de modelos Slate disponibles, consulte esta tabla:

Lista de modelos Slate disponibles y sus descripciones
Modelo Descripción
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased Modelo genérico y polivalente.
pretrained-model_slate.125m.finance_many_transformer_en_cased Modelo previamente capacitado en contenido financiero.
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased Modelo previamente capacitado en contenidos de ciberseguridad
pretrained-model_slate.125m.biomedical_many_transformer_en_cased Modelo preentrenado en contenidos biomédicos.
Nota: El entrenamiento de modelos de transformador es intensivo en CPU y memoria. En función del tamaño de los datos de entrenamiento, es posible que el entorno no sea lo suficientemente grande para completar el entrenamiento. Si experimenta problemas con el kernel del cuaderno durante el entrenamiento, cree un entorno de cuaderno personalizado con una cantidad mayor de CPU y memoria y utilícelo para ejecutar el cuaderno. Utilice un entorno basado en GPU para el entrenamiento y también para el tiempo de inferencia, si está disponible para usted. Consulte Creación de su propia plantilla de entorno.

Formato de datos de entrada para el entrenamiento

Debe proporcionar un conjunto de datos de entrenamiento y desarrollo a la función de entrenamiento. Los datos de desarrollo suelen estar en torno al 10% de los datos de entrenamiento. Cada ejemplo de entrenamiento o desarrollo se representa como un objeto JSON. Debe tener un campo text y un campo labels . El texto representa el texto de ejemplo de entrenamiento y el campo labels es una matriz, que contiene exactamente una etiqueta de positivo, neutralo negativo.

A continuación se muestra un ejemplo de una matriz con datos de entrenamiento de ejemplo:

  [
      {
      "text": "I am happy",
      "labels": ["positive"]
      },
      {
      "text": "I am sad",
      "labels": ["negative"]
      },
      {
      "text": "The sky is blue",
      "labels": ["neutral"]
      }
  ]

Los conjuntos de datos de entrenamiento y desarrollo se crean como corrientes de datos a partir de matrices de objetos JSON. Para crear las secuencias de datos, puede utilizar el método de programa de utilidad 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)

Carga de los recursos de modelo entrenados previamente

El modelo de Slate IBM Foundation preentrenado debe cargarse antes de que pase al algoritmo de entrenamiento. Además, debe cargar los modelos de análisis de sintaxis para los idiomas que se utilizan en los textos de entrada.

Para cargar el modelo:

# 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]

Entrenamiento del modelo

Para todas las opciones disponibles para configurar el entrenamiento del transformador de opinión, entre:

help(watson_nlp.workflows.sentiment.AggregatedSentiment.train_transformer)

El método train_transformer crea un modelo de flujo de trabajo, que ejecuta automáticamente el análisis de sintaxis y la clasificación de opinión entrenada. En un paso posterior, habilite la detección de idioma para que el modelo de flujo de trabajo pueda ejecutarse en texto de entrada sin ninguna información de requisito previo.

A continuación se muestra una llamada de ejemplo que utiliza los datos de entrada y el modelo preentrenado de la sección anterior (Entrenamiento del modelo):

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)

Aplicación del modelo en datos nuevos

Después de entrenar el modelo en un conjunto de datos, aplique el modelo en los datos nuevos utilizando el método run() , como utilizaría en cualquiera de los bloques entrenados previamente existentes.

Código de ejemplo:

input_text = 'new input text'
sentiment_predictions = sentiment_model.run(input_text)

Tema principal: Crear sus propios modelos

Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información