0 / 0
Go back to the English version of the documentation
使用定制变换器模型检测实体
Last updated: 2024年11月21日
使用定制变换器模型检测实体

如果您没有固定术语集,或者无法将您喜欢检测的实体表示为正则表达式,那么可以构建定制变换器模型。 该模型基于预先训练的 Slate IBM Foundation 模型。

使用预先训练的模型时,可以构建多语言模型。 您不必为每种语言都有单独的模型。

您需要足够的训练数据来实现高质量 (每个实体类型 2000-5000)。 如果有可用的 GPU ,请将其用于训练。

注:

训练变换器模型是 CPU 和内存密集型的。 预定义环境的大小不足以完成训练。 创建具有较大 CPU 和内存量的定制 Notebook 环境,并使用该环境来运行 Notebook。 如果您有可用的 GPU ,那么强烈建议使用这些 GPU。 请参阅 创建您自己的环境模板

输入数据格式

训练数据表示为具有多个 JSON 对象的数组。 每个 JSON 对象都表示一个训练实例,并且必须具有 textmentions 字段。 text 字段表示训练语句文本, mentions 是 JSON 对象的数组,其中包含每个提及项的文本,类型和位置:

[
  {
    "text": str,
    "mentions": [{
      "location": {
        "begin": int,
        "end": int
      },
      "text": str,
      "type": str
    },...]
  },...
]

示例:

[
    {
        "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
                     }
            }]
    }
]

训练模型

变换器算法正在使用预先训练的 Slate 模型。

有关可用 Slate 型号的列表,请参阅下表:

可用 Slate 模型列表及其说明
模型 描述 已发布版本可用 运行时版本中可用
pretrained-model_slate.153m.distilled_many_transformer_multilingual_uncased 通用、多用途模型 23.1, 24.1
pretrained-model_slate.125m.finance_many_transformer_en_cased 根据金融内容进行预训练的模型 24.1
pretrained-model_slate.110m.cybersecurity_many_transformer_en_uncased 针对网络安全内容进行预训练的模型 24.1
pretrained-model_slate.125m.biomedical_many_transformer_en_cased 针对生物医学内容进行预训练的模型 24.1

要获取可用于配置 Transformer 训练的选项,请输入:

help(watson_nlp.workflows.entity_mentions.transformer.Transformer.train)

样本代码

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,
)

在新数据上应用模型

使用 run() 方法在新数据上应用经过训练的变换器工作流程模型,就像在任何现有预训练块上使用一样。

代码样本

trained_workflow.run('Bruce is at Times Square')

存储和装入模型

定制变换器模型可以存储为任何其他模型,如 保存和装入定制模型中所述,使用 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 = '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)
    
  4. 从抽取的文件夹装入模型:

    trained_workflow = 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