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

Puede entrenar sus propios modelos para la extracción de opiniones de destinos 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.

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 texto y un campo target_mentions . El texto representa el texto de ejemplo de entrenamiento y el campo target_mentions es una matriz, que contiene una entrada para cada mención de destino con su texto, ubicacióny opinión.

Considere la posibilidad de utilizar Watson Knowledge Studio para permitir a los expertos en la materia de su dominio anotar fácilmente texto y crear datos de entrenamiento.

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

[
  {
    "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"
      }
    ]
  }
]

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 read_json_to_stream. Requiere el modelo de análisis de sintaxis para el lenguaje de los datos de entrada.

Código de ejemplo:

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)

Carga de los recursos de modelo entrenados previamente

Es necesario cargar el modelo de IBM Foundation preentrenado antes de pasarlo al algoritmo de entrenamiento.

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.

Para cargar el modelo:

# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')

Entrenamiento del modelo

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

help(watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train)

El método train creará un nuevo modelo de bloque de opinión de destinos.

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

# Train the model
custom_tsa_model = watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train(
    train_stream,
    dev_stream,
    pretrained_model_resource,
    num_train_epochs=5
)

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. Puesto que el modelo personalizado creado es un modelo de bloque, debe ejecutar el análisis de sintaxis en el texto de entrada y pasar los resultados a los métodos run() .

Código de ejemplo:

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)

Almacenamiento y carga del modelo

El modelo de opinión de destinos personalizados se puede almacenar como cualquier otro modelo tal como se describe en Guardar y cargar modelos personalizados, utilizando ibm_watson_studio_lib.

Para cargar el modelo de opinión de destinos personalizados, son necesarios pasos adicionales:

  1. Asegúrese de que tiene una señal de acceso en la página Control de acceso de la pestaña Gestionar del proyecto. Solo los administradores del proyecto pueden crear señales de acceso. La señal de acceso puede tener permisos de acceso de Visor o Editor . Solo los editores pueden inyectar la señal en un cuaderno.

  2. Añada la señal de proyecto al cuaderno pulsando Más > Insertar señal de proyecto en la barra de acciones del cuaderno. A continuación, ejecute la célula.

    Al ejecutar la celda de código oculto insertada, se crea un objeto wslib que puede utilizar para las funciones de la biblioteca ibm-watson-studio-lib . Para obtener información sobre las funciones de ibm-watson-studio-lib disponibles, consulte Utilización de ibm-watson-studio-lib para Python.

  3. Descargue y extraiga el modelo en el entorno de ejecución local:

    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)
    
  4. Cargue el modelo desde la carpeta extraída:

    custom_TSA_model = watson_nlp.load(model_folder)
    

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