Extraindo o sentimento de destinos com um modelo de transformador customizado....
É possível treinar seus próprios modelos para a extração de sentimento de destino com base no modelo do Slate IBM Foundation Esse modelo pré-treinado pode ser ajustado para seu caso de uso treinando-o em seus dados de entrada específicos.
- Formato de dados de entrada para treinamento
- Carregando os recursos do modelo pré-treinado
- Treinando o modelo
- Aplicando o modelo em novos dados
- Armazenando e carregando o modelo
Formato de dados de entrada para treinamento
Deve-se fornecer um conjunto de dados de treinamento e desenvolvimento para a função de treinamento. Os dados de desenvolvimento geralmente estão em torno de 10% dos dados de treinamento Cada amostra de treinamento ou de desenvolvimento é representada como um objeto JSON Ele deve ter um campo text e target_menções . O text representa o texto de exemplo de treinamento e o campo target_menções é uma matriz, que contém uma entrada para cada menção de destino com seu text, locatione sentimento..
Considere usar o Watson Knowledge Studio para permitir que seus especialistas no assunto do domínio anotem facilmente texto e criem dados de treinamento.
A seguir está um exemplo de uma matriz com dados de treinamento de amostra:
[
{
"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"
}
]
}
]
Os conjuntos de dados de treinamento e desenvolvimento são criados como fluxos de dados de matrizes de objetos JSON. Para criar os fluxos de dados, é possível usar o método de utilitário read_json_to_stream Ele requer o modelo de análise de sintaxe para a linguagem de seus dados de entrada
Código de amostra:
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)
Carregando os recursos do modelo pré-treinado
O modelo Slate IBM Foundation pré-treinado precisa ser carregado antes de passá-lo para o algoritmo de treinamento.
Para obter uma lista de modelos Slate disponíveis, consulte esta tabela:
| Modelo | Descrição |
|---|---|
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased |
Modelo genérico e multifuncional |
pretrained-model_slate.125m.finance_many_transformer_en_cased |
Modelo pré-treinado em conteúdo financeiro |
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased |
Modelo pré-treinado em conteúdo de segurança cibernética |
pretrained-model_slate.125m.biomedical_many_transformer_en_cased |
Modelo pré-treinado em conteúdo biomédico |
Para carregar o modelo:
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
Treinando o modelo
Para todas as opções que estão disponíveis para configurar o treinamento do transformador de sentimento, insira:
help(watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train)
O método train criará um novo modelo de bloco de impressão de destino
A seguir há uma chamada de amostra que usa os dados de entrada e o modelo pré-treinado da seção anterior (treinamento do 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
)
Aplicando o modelo em novos dados
Depois de treinar o modelo em um conjunto de dados, aplique o modelo em novos dados usando o método run() , como você usaria em qualquer um dos blocos pré-treinados existentes Como o modelo customizado criado é um modelo de bloco, é necessário executar análise de sintaxe no texto de entrada e transmitir os resultados para os métodos run() .
Código de amostra:
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)
Armazenando e carregando o modelo
O modelo de impressão de destinos customizados pode ser armazenado como qualquer outro modelo conforme descrito em Salvando e carregando modelos customizados, usando ibm_watson_studio_lib.
Para carregar o modelo de impressão de destinos customizados, etapas adicionais são necessárias::
Assegure-se de que você tenha um token de acesso na página Controle de acesso na guia Gerenciar do seu projeto. Somente os administradores do projeto podem criar tokens de acesso. O token de acesso pode ter permissões de acesso Visualizador ou Editor . Somente os editores podem injetar o token em um bloco de notas.
Inclua o token do projeto no bloco de notas, clicando em Mais> Inserir token do projeto na barra de ação do bloco de notas Em seguida, execute a célula
Ao executar a célula de código oculta inserida, é criado um objeto
wslibque pode ser usado para funções na bibliotecaibm-watson-studio-libPara obter informações sobre as funçõesibm-watson-studio-libdisponíveis, consulte Usando ibm-watson-studio-lib para Python.Faça download e extraia o modelo para seu ambiente de tempo de execução 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)Carregue o modelo da pasta extraída:
custom_TSA_model = watson_nlp.load(model_folder)