0 / 0
Go back to the English version of the documentation
使用定制变换器模型抽取目标观点
Last updated: 2024年11月07日
使用定制变换器模型抽取目标观点

您可以针对基于 Slate IBM Foundation 模型的目标观点抽取来训练自己的模型。 可以通过在特定输入数据上对该用例进行训练,针对您的用例对该预先训练的模型进行查找调整。

注: 训练变换器模型是 CPU 和内存密集型的。 根据训练数据的大小,环境可能不足以完成训练。 如果在训练期间迂到 Notebook 内核问题,请创建具有较大 CPU 和内存量的定制 Notebook 环境,并使用该环境来运行 Notebook。 使用基于 GPU 的环境进行训练,并推断时间 (如果可供您使用)。 请参阅 创建您自己的环境模板

用于训练的输入数据格式

您必须为训练功能提供训练和开发数据集。 开发数据通常是训练数据的 10% 左右。 每个训练或开发样本都表示为 JSON 对象。 它必须具有 texttarget_提及 字段。 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 型号的列表,请参阅下表:

可用 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将定制目标观点模型存储为任何其他模型,如 保存和装入定制模型中所述。

要装入定制目标观点模型,需要执行其他步骤:

  1. 确保您在项目的 管理 选项卡上的 " 访问控制 " 页面上具有访问令牌。 只有项目管理员才能创建访问令牌。 访问令牌可以具有 查看者编辑者 访问许可权。 只有编辑者才能将该令牌插入到 Notebook 中。

  2. 通过单击 Notebook 操作栏中的 更多> 插入项目令牌 ,将项目令牌添加到 Notebook。 然后运行单元。

    通过运行插入的隐藏代码单元,将创建可用于 ibm-watson-studio-lib 库中的函数的 wslib 对象。 有关可用 ibm-watson-studio-lib 函数的信息,请参阅 使用 ibm-watson-studio-lib for Python

  3. 将模型下载并解压缩到本地运行时环境:

    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)
    
  4. 从抽取的文件夹装入模型:

    custom_TSA_model = watson_nlp.load(model_folder)
    

父主题: 创建您自己的模型

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more