Estrazione delle opinioni con un modello di trasformatore personalizzato
Puoi addestrare i tuoi propri modelli per l'estrazione delle opinioni in base al modello Slate IBM Foundation. Questo modello preaddestrato può essere ottimizzato per il tuo caso di utilizzo addestrandolo sui tuoi specifici dati di input.
Per un elenco dei modelli Slate disponibili, vedere questa tabella:
Modello | Descrizione |
---|---|
|
Modello generico e multiuso |
|
Modello preaddestrato sui contenuti finanziari |
|
Modello preaddestrato sui contenuti di sicurezza informatica |
|
Modello preaddestrato sui contenuti biomedici |
- Formato dei dati di input per l'addestramento
- Caricamento delle risorse del modello preaddestrate
- Formazione del modello
- Applicazione del modello ai nuovi dati
Formato dei dati di input per l'addestramento
È necessario fornire una serie di dati di formazione e sviluppo alla funzione di formazione. I dati di sviluppo sono di solito circa il 10% dei dati di formazione. Ogni esempio di addestramento o sviluppo è rappresentato come un oggetto JSON. Deve avere un testo e un campo etichette . Il testo rappresenta il testo di esempio di addestramento e il campo etichette è un array, che contiene esattamente un'etichetta di positivo, neutroo negativo.
Di seguito è riportato un esempio di array con dati di addestramento di esempio:
[
{
"text": "I am happy",
"labels": ["positive"]
},
{
"text": "I am sad",
"labels": ["negative"]
},
{
"text": "The sky is blue",
"labels": ["neutral"]
}
]
I dataset di formazione e sviluppo vengono creati come flussi di dati da array di oggetti JSON. Per creare i flussi di dati, è possibile utilizzare il metodo di utilità
: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)
Caricamento delle risorse del modello preaddestrate
Il modello Slate IBM Foundation preaddestrato deve essere caricato prima di passare all'algoritmo di addestramento. Inoltre, è necessario caricare i modelli di analisi della sintassi per i linguaggi utilizzati nei testi di input.
Per caricare il modello:
# 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]
Addestramento del modello
Per tutte le opzioni disponibili per la configurazione dell'addestramento di sentiment transformer, immettere:
help(watson_nlp.workflows.sentiment.AggregatedSentiment.train_transformer)
Il metodo
crea un modello di flusso di lavoro, che esegue automaticamente l'analisi della sintassi e la classificazione delle opinioni formate. In una fase successiva, abilitare il rilevamento della lingua in modo che il modello di flusso di lavoro possa essere eseguito sul testo di input senza alcuna informazione prerequisita.train_transformer
La seguente è una chiamata di esempio che utilizza i dati di input e il modello preaddestrato dalla sezione precedente (addestramento del modello):
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)
Applicazione del modello ai nuovi dati
Dopo aver addestrato il modello su un dataset, applica il modello ai nuovi dati utilizzando il metodo
, come si utilizzerebbe su uno qualsiasi dei blocchi preaddestrati esistenti.run()
Codice di esempio:
input_text = 'new input text'
sentiment_predictions = sentiment_model.run(input_text)
Argomento principale: Creazione di propri modelli