训练文本分类模型 (GeoAI)

摘要

训练单标注或多标注的文本分类模型,可将非结构化文本分配到预定义的类别或标注中。

了解有关“文本分类”工作原理的详细信息

使用情况

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

  • 此工具还用于微调现有已训练模型。

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

  • 工具的输入是包含训练数据的表或要素类,其中包含一个文本字段,用于存储输入文本,以及一个标注字段,用于存储目标类标注。

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

参数

标注说明数据类型
输入表

要素类或表,其中包含一个文本字段,用于存储模型的输入文本;以及一个标注字段,用于存储目标类标注。

Feature Layer; Table View
文本字段

输入要素类或表中包含将由模型进行分类的文本的文本字段。

Field
标注字段

输入要素类或表中包含用于训练模型的目标类标注的文本字段。 对于多标注文本分类,需指定多个文本字段。

Field
输出模型

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

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

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

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

File
最大新纪元
(可选)

应用于将训练模型的最大新纪元数。 最大新纪元值为 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(OpenAI 的 WebText 数据集复本)上监督 roberta-base 的预训练英语模型。
  • distilbert-base-cased将使用 DistilBERT 神经网络训练模型。 DistilBERT 通用语言表示模型更小。
String
批量大小
(可选)

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

增加批量大小可以提高工具性能;但是随着批量大小增加,所用内存也将随之增加。 如果出现内存不足错误,则降低批量大小。

Double
模型参数
(可选)

用于初始化模型的其他参数(例如,训练数据最大序列长度 seq_len),将在模型训练中考虑这些参数。

有关可用的模型参数的列表,请参阅 TextClassifier 文档中的关键字参数。

Value Table
学习率
(可选)

步长用于指示在训练过程中调整模型权重的大小。 如果未指定值,则将自动确定最佳学习率。

Double
验证百分比
(可选)

将用于验证模型的训练样本的百分比。 默认值为 10。

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

指定模型训练将在模型不再改进,还是达到最大新纪元参数值时停止。

  • 选中 - 当模型不再改进时,无论所指定的最大新纪元参数值是什么,模型训练都将停止。 这是默认设置。
  • 未选中 - 模型训练将一直持续,直至达到最大新纪元参数值为止。
Boolean
创建可训练模型骨干
(可选)

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

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

Boolean
移除 HTML 标签
(可选)

指定是否从输入文本中移除 HTML 标签。

  • 选中 - 将从输入文本中移除 HTML 标签。 这是默认设置。
  • 未选中 - 不会从输入文本中移除 HTML 标签。

Boolean
移除 URL
(可选)

指定是否从输入文本中移除 URL。

  • 选中 - 将从输入文本中移除 URL。 这是默认设置。
  • 未选中 - 不会从输入文本中移除 URL。

Boolean

arcpy.geoai.TrainTextClassificationModel(in_table, text_field, label_field, out_model, {pretrained_model_file}, {max_epochs}, {model_backbone}, {batch_size}, {model_arguments}, {learning_rate}, {validation_percentage}, {stop_training}, {make_trainable}, {remove_html_tags}, {remove_urls})
名称说明数据类型
in_table

要素类或表,其中包含一个文本字段,用于存储模型的输入文本;以及一个标注字段,用于存储目标类标注。

Feature Layer; Table View
text_field

输入要素类或表中包含将由模型进行分类的文本的文本字段。

Field
label_field
[label_field,...]

输入要素类或表中包含用于训练模型的目标类标注的文本字段。 对于多标注文本分类,需指定多个文本字段。

Field
out_model

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

Folder
pretrained_model_file
(可选)

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

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

File
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(OpenAI 的 WebText 数据集复本)上监督 roberta-base 的预训练英语模型。
  • distilbert-base-cased将使用 DistilBERT 神经网络训练模型。 DistilBERT 通用语言表示模型更小。
String
batch_size
(可选)

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

增加批量大小可以提高工具性能;但是随着批量大小增加,所用内存也将随之增加。 如果出现内存不足错误,则降低批量大小。

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

用于初始化模型的其他参数(例如,训练数据最大序列长度 seq_len),将在模型训练中考虑这些参数。

有关可用的模型参数的列表,请参阅 TextClassifier 文档中的关键字参数。

Value Table
learning_rate
(可选)

步长用于指示在训练过程中调整模型权重的大小。 如果未指定值,则将自动确定最佳学习率。

Double
validation_percentage
(可选)

将用于验证模型的训练样本的百分比。 默认值为 10。

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
remove_html_tags
(可选)

指定是否从输入文本中移除 HTML 标签。

  • REMOVE_HTML_TAGS将从输入文本中移除 HTML 标签。 这是默认设置。
  • DO_NOT_REMOVE_HTML_TAGS不会从输入文本中移除 HTML 标签。
Boolean
remove_urls
(可选)

指定是否从输入文本中移除 URL。

  • REMOVE_URLS将从输入文本中移除 URL。 这是默认设置。
  • DO_NOT_REMOVE_URLS不会从输入文本中移除 URL。
Boolean

代码示例

TrainTextClassificationModel(Python 窗口)

以下 Python 窗口脚本演示了如何使用 TrainTextClassificationModel 函数。

# Name: TrainTextClassification.py
# Description: Train a text classifier model to classify text in different classes.  
#
# Requirements: ArcGIS Pro Advanced license

# Import system modules
import arcpy
import os

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

# Set local variables
in_table = "training_data_textclassifier.csv"
out_folder = "c\\textclassifier"

# Run Train Text Classification Model
arcpy.geoai.TrainTextClassificationModel(in_table, out_folder, 
            max_epochs=2, text_field="Address", label_field="Country", batch_size=16)