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:
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. |
- 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
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