Go back to the English version of the documentation使用定制变换器模型抽取观点
使用定制变换器模型抽取观点
Last updated: 2024年11月07日
您可以根据 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 |
针对生物医学内容进行预训练的模型 |
注: 训练变换器模型是 CPU 和内存密集型的。 根据训练数据的大小,环境可能不足以完成训练。 如果在训练期间迂到 Notebook 内核问题,请创建具有较大 CPU 和内存量的定制 Notebook 环境,并使用该环境来运行 Notebook。 使用基于 GPU 的环境进行训练,并推断时间 (如果可供您使用)。 请参阅 创建您自己的环境模板。
用于训练的输入数据格式
您需要为训练功能提供训练和开发数据集。 开发数据通常是训练数据的 10% 左右。 每个训练或开发样本都表示为 JSON 对象。 它必须具有 文本 和 标签 字段。 text 表示训练示例文本, labels 字段是一个数组,其中正好包含一个 正, 中性或 负的标签。
以下是具有样本训练数据的数组的示例:
[
{
"text": "I am happy",
"labels": ["positive"]
},
{
"text": "I am sad",
"labels": ["negative"]
},
{
"text": "The sky is blue",
"labels": ["neutral"]
}
]
训练和开发数据集将创建为来自 JSON 对象数组的数据流。 要创建数据流,可以使用实用程序方法 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)
装入预训练的模型资源
需要先装入预先训练的 Slate IBM Foundation 模型,然后再将其传递到训练算法。 此外,您需要装入输入文本中使用的语言的语法分析模型。
要装入模型:
# 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]
训练模型
对于可用于配置观点变换器训练的所有选项,请输入:
help(watson_nlp.workflows.sentiment.AggregatedSentiment.train_transformer)
train_transformer
方法创建工作流程模型,该模型自动运行语法分析和已训练的观点分类。 在后续步骤中,启用语言检测,以便工作流程模型可以在没有任何先决条件信息的情况下对输入文本运行。
以下是使用先前部分中的输入数据和预训练模型 (训练模型) 的样本调用:
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)
在新数据上应用模型
在数据集上训练模型后,使用 run()
方法在新数据上应用模型,就像在任何现有预训练块上使用一样。
样本代码:
input_text = 'new input text'
sentiment_predictions = sentiment_model.run(input_text)
父主题: 创建您自己的模型