Estrazione delle opinioni delle destinazioni con un modello di trasformatore personalizzato
Puoi addestrare i tuoi propri modelli per l'estrazione delle opinioni delle destinazioni 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.
- Formato dei dati di input per l'addestramento
- Caricamento delle risorse del modello preaddestrate
- Formazione del modello
- Applicazione del modello ai nuovi dati
- Memorizzazione e caricamento del modello
Formato dei dati di input per l'addestramento
È necessario fornire un dataset 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 target_menzioni . Il testo rappresenta il testo di esempio di addestramento e il campo target_menzionato è un array, che contiene una voce per ogni citazione di destinazione con il suo testo, ubicazionee opinione.
Considera l'utilizzo di Watson Knowledge Studio per consentire agli esperti in materia del tuo dominio di annotare facilmente il testo e creare dati di formazione.
Di seguito è riportato un esempio di array con dati di addestramento di esempio:
[
{
"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"
}
]
}
]
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à
. Richiede il modello di analisi della sintassi per il linguaggio dei dati di input.read_json_to_stream
Codice di esempio:
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)
Caricamento delle risorse del modello preaddestrate
Il modello Slate IBM Foundation preaddestrato deve essere caricato prima di passarlo all'algoritmo di addestramento.
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 |
Per caricare il modello:
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
Addestramento del modello
Per tutte le opzioni disponibili per la configurazione dell'addestramento di sentiment transformer, immettere:
help(watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train)
Il metodo
creerà un nuovo modello di blocco delle opinioni delle destinazioni.train
Di seguito è riportata una chiamata di esempio che utilizza i dati di input e il modello preaddestrato dalla sezione precedente (Addestramento del modello):
# Train the model
custom_tsa_model = watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train(
train_stream,
dev_stream,
pretrained_model_resource,
num_train_epochs=5
)
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. Poiché il modello personalizzato creato è un modello di blocchi, devi eseguire l'analisi della sintassi sul testo di input e passare i risultati ai metodi run()
.run()
Codice di esempio:
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)
Memorizzazione e caricamento del modello
Il modello di opinione delle destinazioni personalizzate può essere archiviato come qualsiasi altro modello come descritto in Salvataggio e caricamento dei modelli personalizzati, utilizzando
.ibm_watson_studio_lib
Per caricare il modello di opinione delle destinazioni personalizzate, sono richiesti ulteriori passi:
Assicurati di avere un token di accesso nella pagina Controllo accesso nella scheda Gestisci del progetto. Solo gli amministratori del progetto possono creare token di accesso. Il token di accesso può avere le autorizzazioni di accesso Visualizzatore o Editor . Solo gli editor possono inserire il token in un notebook.
Aggiungere il token del progetto al notebook facendo clic su Altro> Inserisci token del progetto dalla barra delle azioni del notebook. Quindi eseguire la cella.
Eseguendo la cella di codice nascosto inserito, viene creato un oggetto
che è possibile utilizzare per le funzioni nella libreriawslib
. Per informazioni sulle funzioniibm-watson-studio-lib
disponibili, vedi Using ibm - watson - studio - lib for Python.ibm-watson-studio-lib
Scaricare ed estrarre il modello nell'ambiente di runtime locale:
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)
Caricare il modello dalla cartella estratta:
custom_TSA_model = watson_nlp.load(model_folder)
Argomento principale: Creazione di propri modelli