训练实体识别模型 (GeoAI)

摘要

训练指定实体识别模型以从原始文本中提取一组预定义的实体。

了解有关“实体识别”工作原理的详细信息

使用情况

  • 该工具要求安装深度学习框架。 要设置计算机以在 ArcGIS Pro 中使用深度学习框架,请参阅安装 ArcGIS 的深度学习框架

  • 该工具还可用于对现有经过训练的模型进行微调。

  • 要使用 GPU 运行此工具,请将处理器类型环境设置为 GPU。 如果您具有多个 GPU,还可以指定 GPU ID 环境。

  • 输入可以是带有文本字段和命名实体标注的要素类或表,也可以是包含 .json.csv 文件中的训练数据的文件夹。

  • 此工具将使用基于转换器的骨干来训练 NER 模型,并且还支持使用 Mistral LLM 的提示进行上下文学习。 要安装 Mistral 骨干,请参阅 ArcGIS Mistral 骨干

  • 有关运行此工具的要求以及您可能遇到的问题的信息,请参阅深度学习常见问题

参数

标注说明数据类型
输入文件夹或表

输入可以为以下任一项:

  • 要素类或表,其中包含一个文本字段,该文本字段包含模型的输入文本和标注实体,其中所选文本字段将用作模型的输入文本,其余字段将被视为授权实体标注。
  • 包含 NER 任务标准数据集形式的训练数据的文件夹。 训练数据必须为 .json.csv 文件。 文件格式将决定输入的数据集类型。
    • 当输入为文件夹时,支持以下数据集类型:
      • ner_json - 训练数据文件夹应包含一个 .json 文件,其中包含使用 spaCy JSON 训练格式格式的文本和标注实体。
      • IOB - Ramshaw 和 Marcus 在论文 Text Chunking using Transformation-Based Learning 中提出的 IOB(I - 内部,O - 外部,B - 开始标签)格式。

        训练数据文件夹应包含以下两个 .csv 文件:

        • tokens.csv - 包含文本作为输入区段
        • tags.csv - 包含文本区段的 IOB 标签
      • BILUO - IOB 格式的扩展名,另外包含“L - 最后”和“U - 单位”标签。

        训练数据文件夹应包含以下两个 .csv 文件:

        • tokens.csv - 包含文本作为输入区段
        • tags.csv - 包含文本区段的 BILUO 标签
Folder; Feature Layer; Table View; Feature Class
输出模型

将存储训练模型的输出文件夹位置。

Folder
预训练模型文件
(可选)

将用于微调新模型的预训练模型。 输入可以是 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。

可以对具有相似实体的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。

File
地址实体
(可选)

地址实体将被视为一个位置。 在推断过程中,将使用指定的定位器对此类实体进行地理编码,并且将生成实体提取过程的结果要素类。 如果未提供定位器或训练模型未提取地址实体,则会生成包含提取实体的表。

String
最大轮数
(可选)

将用于训练模型的最大轮数。 最大轮数值为 1 意味着数据集将通过神经网络传递一次。 默认值为 5。

Long
模型骨干
(可选)

指定要用作训练新模型的架构的、预先配置的神经网络。

  • bert-base-cased该模型将使用 BERT 神经网络进行训练。 BERT 将使用已掩膜语言建模目标和下一句预测进行预训练。
  • roberta-base该模型将使用 RoBERTa 神经网络进行训练。 RoBERTa 将修改 BERT 的关键超参数,并消除预训练目标以及小批量和更高学习率的下一句训练。
  • albert-base-v1该模型将使用 ALBERT 神经网络进行训练。 ALBERT 将使用一种专注于对句子间一致性进行建模的自监督损失,因而比 BERT 具有更好的可扩展性。
  • xlnet-base-cased该模型将使用 XLNet 神经网络进行训练。 XLNet 是一种广义自回归预训练方法。 该方法允许通过最大限度提升分解顺序的所有排列的预期概率来学习双向上下文,从而克服了 BERT 的缺点。
  • xlm-roberta-base该模型将使用 XLM-RoBERTa 神经网络进行训练。 XLM-RoBERTa 是一种针对 100 种不同语言训练的多语言模型。 与某些 XLM 多语言模型不同,该模型不需要依靠语言张量来了解所使用的是哪种语言,并可根据输入 ID 来识别正确的语言。
  • distilroberta-base该模型将使用 DistilRoBERTa 神经网络进行训练。 DistilRoBERTa 是一种英语语言模型,仅在 OpenWebTextCorpus 上由 roberta-base 神经网络监督进行预训练(OpenWebTextCorpus 是 OpenAI 的 WebText 数据集的复制品)。
  • distilbert-base-cased该模型将使用 DistilBERT 神经网络进行训练。 DistilBERT 是一种较小的通用语言表示模型。
  • mistral模型将利用 Mistral 大型语言模型 (LLM) 进行训练。 Mistral 是一种仅限解码器的变换器模型,采用滑动窗口注意力、分组查询注意力和字节回退 BPE 分词器技术。 要安装 Mistral 骨干,请参阅 ArcGIS Mistral 骨干
String
批处理大小
(可选)

一次需要处理的训练样本数。 默认值为 2。

增加批处理大小可以提高工具性能;但是,随着批处理大小的增加,会占用更多内存。 如果发生内存不足错误,请使用较小的批处理大小。

Double
模型参数
(可选)

将用于初始化模型的附加参数。 受支持的模型参数为 sequence_length,此参数用于设置训练数据的最大序列长度,将被考虑用于训练模型。

Value Table
学习率
(可选)

指示在训练过程中将调整多少模型权重的步长。 如果未指定值,将自动派生出最佳学习率。

Double
验证百分比
(可选)

将用于验证模型的训练样本的百分比。 对于基于转换器的模型骨干,默认值为 10;对于 Mistral 骨干,默认值为 50。

Double
当模型停止改进时停止
(可选)

指定模型训练是在模型不再改进或继续时停止还是直至达到最大轮数参数值时才停止。

  • 选中 - 当模型不再改进时,模型训练将停止,不考虑最大轮数参数值。 这是默认设置。
  • 未选中 - 模型训练将一直持续,直至达到最大轮数参数值为止。
Boolean
将模型骨干设置为可训练
(可选)

指定是否冻结预训练模型中的骨干层,以使权重和偏差保持原始设计。

  • 选中 - 不会冻结骨干图层,模型骨干参数值的权重和偏差可能会进行更改以更好地适合您的训练样本。 这将需要花费更多的时间来处理,但通常会产生更好的结果。 这是默认设置。
  • 未选中 - 将冻结骨干图层,在训练过程中不会更改预定义的模型骨干参数值的权重和偏差。

Boolean
文本字段

输入要素类或表中的文本字段,其中包含模型将用作输入的文本。 当输入文件夹或表参数值为要素类或表时,此参数为必需项。

Field
提示
(可选)

特定输入或指令用于指导大型语言模型 (LLM) 生成预期输出。

其默认设置是识别文本中指定类别的命名实体。 同时,避免标记其他类别的实体。

String

arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_model, {pretrained_model_file}, {address_entity}, {max_epochs}, {model_backbone}, {batch_size}, {model_arguments}, {learning_rate}, {validation_percentage}, {stop_training}, {make_trainable}, text_field, {prompt})
名称说明数据类型
in_folder

输入可以为以下任一项:

  • 要素类或表,其中包含一个文本字段,该文本字段包含模型的输入文本和标注实体,其中所选文本字段将用作模型的输入文本,其余字段将被视为授权实体标注。
  • 包含 NER 任务标准数据集形式的训练数据的文件夹。 训练数据必须为 .json.csv 文件。 文件格式将决定输入的数据集类型。
    • 当输入为文件夹时,支持以下数据集类型:
      • ner_json - 训练数据文件夹应包含一个 .json 文件,其中包含使用 spaCy JSON 训练格式格式的文本和标注实体。
      • IOB - Ramshaw 和 Marcus 在论文 Text Chunking using Transformation-Based Learning 中提出的 IOB(I - 内部,O - 外部,B - 开始标签)格式。

        训练数据文件夹应包含以下两个 .csv 文件:

        • tokens.csv - 包含文本作为输入区段
        • tags.csv - 包含文本区段的 IOB 标签
      • BILUO - IOB 格式的扩展名,另外包含“L - 最后”和“U - 单位”标签。

        训练数据文件夹应包含以下两个 .csv 文件:

        • tokens.csv - 包含文本作为输入区段
        • tags.csv - 包含文本区段的 BILUO 标签
Folder; Feature Layer; Table View; Feature Class
out_model

将存储训练模型的输出文件夹位置。

Folder
pretrained_model_file
(可选)

将用于微调新模型的预训练模型。 输入可以是 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。

可以对具有相似实体的预训练模型进行微调以适应新模型。 预训练模型必须已使用将用于训练新模型的相同模型类型和骨干模型进行了训练。

File
address_entity
(可选)

地址实体将被视为一个位置。 在推断过程中,将使用指定的定位器对此类实体进行地理编码,并且将生成实体提取过程的结果要素类。 如果未提供定位器或训练模型未提取地址实体,则会生成包含提取实体的表。

String
max_epochs
(可选)

将用于训练模型的最大轮数。 最大轮数值为 1 意味着数据集将通过神经网络传递一次。 默认值为 5。

Long
model_backbone
(可选)

指定要用作训练新模型的架构的、预先配置的神经网络。

  • bert-base-cased该模型将使用 BERT 神经网络进行训练。 BERT 将使用已掩膜语言建模目标和下一句预测进行预训练。
  • roberta-base该模型将使用 RoBERTa 神经网络进行训练。 RoBERTa 将修改 BERT 的关键超参数,并消除预训练目标以及小批量和更高学习率的下一句训练。
  • albert-base-v1该模型将使用 ALBERT 神经网络进行训练。 ALBERT 将使用一种专注于对句子间一致性进行建模的自监督损失,因而比 BERT 具有更好的可扩展性。
  • xlnet-base-cased该模型将使用 XLNet 神经网络进行训练。 XLNet 是一种广义自回归预训练方法。 该方法允许通过最大限度提升分解顺序的所有排列的预期概率来学习双向上下文,从而克服了 BERT 的缺点。
  • xlm-roberta-base该模型将使用 XLM-RoBERTa 神经网络进行训练。 XLM-RoBERTa 是一种针对 100 种不同语言训练的多语言模型。 与某些 XLM 多语言模型不同,该模型不需要依靠语言张量来了解所使用的是哪种语言,并可根据输入 ID 来识别正确的语言。
  • distilroberta-base该模型将使用 DistilRoBERTa 神经网络进行训练。 DistilRoBERTa 是一种英语语言模型,仅在 OpenWebTextCorpus 上由 roberta-base 神经网络监督进行预训练(OpenWebTextCorpus 是 OpenAI 的 WebText 数据集的复制品)。
  • distilbert-base-cased该模型将使用 DistilBERT 神经网络进行训练。 DistilBERT 是一种较小的通用语言表示模型。
  • mistral模型将利用 Mistral 大型语言模型 (LLM) 进行训练。 Mistral 是一种仅限解码器的变换器模型,采用滑动窗口注意力、分组查询注意力和字节回退 BPE 分词器技术。 要安装 Mistral 骨干,请参阅 ArcGIS Mistral 骨干
String
batch_size
(可选)

一次需要处理的训练样本数。 默认值为 2。

增加批处理大小可以提高工具性能;但是,随着批处理大小的增加,会占用更多内存。 如果发生内存不足错误,请使用较小的批处理大小。

Double
model_arguments
[model_arguments,...]
(可选)

将用于初始化模型的附加参数。 受支持的模型参数为 sequence_length,此参数用于设置训练数据的最大序列长度,将被考虑用于训练模型。

Value Table
learning_rate
(可选)

指示在训练过程中将调整多少模型权重的步长。 如果未指定值,将自动派生出最佳学习率。

Double
validation_percentage
(可选)

将用于验证模型的训练样本的百分比。 对于基于转换器的模型骨干,默认值为 10;对于 Mistral 骨干,默认值为 50。

Double
stop_training
(可选)

指定模型训练是在模型不再改进或继续时停止还是直至达到 max_epochs 参数值时才停止。

  • STOP_TRAINING当模型不再改进时,模型训练将停止,不考虑 max_epochs 参数值。 这是默认设置。
  • CONTINUE_TRAINING模型训练将一直持续,直至达到 max_epochs 参数值为止。
Boolean
make_trainable
(可选)

指定是否冻结预训练模型中的骨干层,以使权重和偏差保持原始设计。

  • TRAIN_MODEL_BACKBONE不会冻结骨干图层,model_backbone 参数值的权重和偏差可能会进行更改以更好地适合您的训练样本。 这将需要花费更多的时间来处理,但通常会产生更好的结果。 这是默认设置。
  • FREEZE_MODEL_BACKBONE将冻结骨干图层,在训练过程中不会更改预定义的 model_backbone 参数值的权重和偏差。
Boolean
text_field

输入要素类或表中的文本字段,其中包含模型将用作输入的文本。 当 in_folder 参数值为要素类或表时,此参数为必需项。

Field
prompt
(可选)

特定输入或指令用于指导大型语言模型 (LLM) 生成预期输出。

其默认设置是识别文本中指定类别的命名实体。 同时,避免标记其他类别的实体。

String

代码示例

TrainEntityRecognitionModel(独立脚本)

以下示例演示了如何使用 TrainEntityRecognitionModel 函数。

# Name: TrainEntityRecognizer.py
# Description: Train an Entity Recognition model to extract useful entities such as "Address", "Date" from text.  

# Import system modules
import arcpy

arcpy.env.workspace = "C:/textanalysisexamples/data"

# Set local variables
in_folder = "train_data"
out_folder = "test_bio_format"

# Run Train Entity Recognition Model
arcpy.geoai.TrainEntityRecognitionModel(in_folder, out_folder)

许可信息

  • Basic: 否
  • Standard: 否
  • Advanced: 是

相关主题