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.
- Formato de datos de entrada para el entrenamiento
- Carga de los recursos de modelo entrenados previamente
- Entrenamiento del modelo
- Aplicación del modelo en datos nuevos
- Almacenamiento y carga del modelo
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:
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:
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.
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 bibliotecaibm-watson-studio-lib
. Para obtener información sobre las funciones deibm-watson-studio-lib
disponibles, consulte Utilización de ibm-watson-studio-lib para Python.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)
Cargue el modelo desde la carpeta extraída:
custom_TSA_model = watson_nlp.load(model_folder)
Tema principal: Crear sus propios modelos