Rilevamento di entit ... con un modello di trasformatore personalizzato
Se non si dispone di una serie fissa di termini o non è possibile esprimere le entità che si desidera rilevare come espressioni regolari, è possibile creare un modello di trasformatore personalizzato. Il modello si basa sul modello Slate IBM Foundation preaddestrato.
Quando si utilizza il modello preformato, è possibile creare modelli multilingue. Non è necessario avere modelli separati per ogni lingua.
Sono necessari dati di addestramento sufficienti per ottenere una qualità elevata (2000 - 5000 per tipo entità). Se hai delle GPU disponibili, usale per l'addestramento.
L'addestramento dei modelli di trasformatore richiede molta CPU e memoria. Gli ambienti predefiniti non sono abbastanza grandi per completare l'addestramento. Creare un ambiente notebook personalizzato con una maggiore quantità di CPU e memoria e utilizzarla per eseguire il notebook. Se hai delle GPU disponibili, ti consigliamo vivamente di utilizzarle. Consultare Creazione del proprio template ambiente.
Formato dati di input
I dati di addestramento sono rappresentati come un array con più oggetti JSON. Ogni oggetto JSON rappresenta un'istanza di addestramento e deve avere un campo
e text
. Il campi mentions
rappresenta il testo della frase di addestramento e text
è un array di oggetti JSON con il testo, il tipo e l'ubicazione di ciascuna citazione:mentions
[
{
"text": str,
"mentions": [{
"location": {
"begin": int,
"end": int
},
"text": str,
"type": str
},...]
},...
]
Esempio:
[
{
"id": 38863234,
"text": "I'm moving to Colorado in a couple months.",
"mentions": [{
"text": "Colorado",
"type": "Location",
"location": {
"begin": 14,
"end": 22
}
},
{
"text": "couple months",
"type": "Duration",
"location": {
"begin": 28,
"end": 41
}
}]
}
]
Addestramento del tuo modello
L'algoritmo del trasformatore utilizza il modello Slate preaddestrato.
Per un elenco dei modelli Slate disponibili, vedere questa tabella:
Modello | Descrizione | Disponibile in versione release | Disponibile nella versione runtime |
---|---|---|---|
|
Modello generico e multiuso | 23.1, 24.1 | |
|
Modello preaddestrato sui contenuti finanziari | 24.1 | |
|
Modello preaddestrato sui contenuti di sicurezza informatica | 24.1 | |
|
Modello preaddestrato sui contenuti biomedici | 24.1 |
Per ottenere le opzioni disponibili per la configurazione dell'addestramento di Transformer, immettere:
help(watson_nlp.workflows.entity_mentions.transformer.Transformer.train)
Esempio di codice
import watson_nlp
from watson_nlp.toolkit.entity_mentions_utils.train_util import prepare_stream_of_train_records_from_JSON_collection
# load the syntax models for all languages to be supported
syntax_model = watson_nlp.load('syntax_izumo_en_stock')
syntax_models = [syntax_model]
# load the pretrained Slate model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
# prepare the train and dev data
# entity_train_data is a directory with one or more json files in the input format specified above
train_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')
dev_data_stream = prepare_stream_of_train_records_from_JSON_collection('entity_train_data')
# train a transformer workflow model
trained_workflow = watson_nlp.workflows.entity_mentions.transformer.Transformer.train(
train_data_stream=train_data_stream,
dev_data_stream=dev_data_stream,
syntax_models=syntax_models,
template_resource=pretrained_model_resource,
num_train_epochs=3,
)
Applicazione del modello ai nuovi dati
Applica il modello di flusso di lavoro del trasformatore addestrato ai nuovi dati utilizzando il metodo
, come si utilizzerebbe su uno qualsiasi dei blocchi preaddestrati esistenti.run()
Esempio di codice
trained_workflow.run('Bruce is at Times Square')
Memorizzazione e caricamento del modello
Il modello di trasformatore personalizzato può essere memorizzato come qualsiasi altro modello come descritto in Salvataggio e caricamento di modelli personalizzati, utilizzando
.ibm_watson_studio_lib
Per caricare il modello di trasformatore personalizzato, sono necessari 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 ed 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 = 'trained_workflow_file' model_folder = 'trained_workflow_folder' wslib.download_file('trained_workflow', file_name=model_zip) with zipfile.ZipFile(model_zip, 'r') as zip_ref: zip_ref.extractall(model_folder)
Caricare il modello dalla cartella estratta:
trained_workflow = watson_nlp.load(model_folder)
Argomento principale: Creazione di propri modelli