您可以针对基于 Slate IBM Foundation 模型的目标观点抽取来训练自己的模型。 可以通过在特定输入数据上对该用例进行训练,针对您的用例对该预先训练的模型进行查找调整。
用于训练的输入数据格式
您必须为训练功能提供训练和开发数据集。 开发数据通常是训练数据的 10% 左右。 每个训练或开发样本都表示为 JSON 对象。 它必须具有 text 和 target_提及 字段。 text 表示训练示例文本, target_提及 字段是一个数组,其中包含每个目标提及项的条目及其 文本, 位置和 观点。
请考虑使用 Watson Knowledge Studio 使域主题专家能够轻松地对文本进行注释并创建训练数据。
以下是具有样本训练数据的数组的示例:
[
{
"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"
}
]
}
]
训练和开发数据集将创建为来自 JSON 对象数组的数据流。 要创建数据流,可以使用实用程序方法 read_json_to_stream
。 它需要输入数据语言的语法分析模型。
样本代码:
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)
装入预训练的模型资源
需要先装入预先训练的 Slate IBM Foundation 模型,然后再将其传递到训练算法。
有关可用 Slate 型号的列表,请参阅下表:
模型 | 描述 |
---|---|
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased |
通用、多用途模型 |
pretrained-model_slate.125m.finance_many_transformer_en_cased |
根据金融内容进行预训练的模型 |
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased |
针对网络安全内容进行预训练的模型 |
pretrained-model_slate.125m.biomedical_many_transformer_en_cased |
针对生物医学内容进行预训练的模型 |
要装入模型:
# Load the pretrained Slate IBM Foundation model
pretrained_model_resource = watson_nlp.load('<pretrained Slate model>')
训练模型
对于可用于配置观点变换器训练的所有选项,请输入:
help(watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train)
train
方法将创建新的目标观点块模型。
以下是一个样本调用,它使用先前部分中的输入数据和预先训练的模型 (训练模型):
# Train the model
custom_tsa_model = watson_nlp.blocks.targeted_sentiment.SequenceTransformerTSA.train(
train_stream,
dev_stream,
pretrained_model_resource,
num_train_epochs=5
)
在新数据上应用模型
在数据集上训练模型后,使用 run()
方法在新数据上应用模型,就像在任何现有预训练块上使用一样。 由于创建的定制模型是块模型,因此您需要对输入文本运行语法分析并将结果传递到 run()
方法。
样本代码:
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)
存储和装入模型
可以使用 ibm_watson_studio_lib
将定制目标观点模型存储为任何其他模型,如 保存和装入定制模型中所述。
要装入定制目标观点模型,需要执行其他步骤:
确保您在项目的 管理 选项卡上的 " 访问控制 " 页面上具有访问令牌。 只有项目管理员才能创建访问令牌。 访问令牌可以具有 查看者 或 编辑者 访问许可权。 只有编辑者才能将该令牌插入到 Notebook 中。
通过单击 Notebook 操作栏中的 更多> 插入项目令牌 ,将项目令牌添加到 Notebook。 然后运行单元。
通过运行插入的隐藏代码单元,将创建可用于
ibm-watson-studio-lib
库中的函数的wslib
对象。 有关可用ibm-watson-studio-lib
函数的信息,请参阅 使用 ibm-watson-studio-lib for Python。将模型下载并解压缩到本地运行时环境:
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)
从抽取的文件夹装入模型:
custom_TSA_model = watson_nlp.load(model_folder)
父主题: 创建您自己的模型