实体识别,也被称为命名实体识别 (NER),是从语句、段落、文本报告或其他形式的非结构化文本中提取信息的过程。 GeoAI 工具箱中的文本分析工具集中的工具可以使用自然语言处理 (NLP) 技术训练实体识别模型,并利用这些模型从非结构化文本中提取实体。
训练实体识别模型工具用于训练 NLP 模型,以从训练数据集中提供的预定义实体集(如组织、人物、日期或国家/地区)中提取实体。 已训练的实体识别模型可以与使用深度学习提取实体工具配合使用,将这些实体从原始文本中提取到结构化格式。
可能的应用
以下是此工具的潜在应用:
- 从犯罪报告中提取位置、报告警官或所用武器等数据。 这有助于显示趋势并帮助规划补救措施。
- 例如,可以从推文或社交媒体帖子中提取位置或是否需要帮助等信息。 这有助于在自然灾害期间识别需要立即帮助的区域。
ArcGIS 中的实体识别模型基于两个后端(一个基于转换器架构,另一个基于 spaCy 库),其工作原理基于嵌入、编码、关注、预测框架。
- 嵌入 - 在此过程中,将输入文本转换为密集单词嵌入。 这些嵌入从输入文本中捕捉语义信息,以便于模型进行处理。
- 编码 - 在此过程中,上下文被编码为一个单词矢量。 这是通过残差三元卷积神经网络 (CNN) 实现的。
- 关注 - 上一步骤的矩阵输出将减少为一个单一矢量,该矢量将被传递给标准前馈网络进行预测。 此步骤的效果类似于关注机制。
- 预测 - 模型的最后一步是根据输入文本进行预测。 在此处,来自关注图层的矢量被传递给多图层感知器,以输出实体标注 ID。
基于转换器的后端使用了 Vaswani 等人在论文《Attention Is All You Need》中提出的架构。这样,可以提高模型的准确性和可并行性,且训练所需的标注数据的准确性更低。 在 ArcGIS 中,基于转换器的实体识别模型内部包含两个组件:
- 编码器 - 编码器作为模型的主干,用于将输入文本转换为固定大小的要素表示形式。 模型使用了 BERT、ALBERT 和 RoBERTa 等基于转换器架构的熟知的编码器,这些编码器已在大量文本上进行了预训练。
- 令牌级别分类器 - 令牌级别分类器作为模型的主要组件,将每个令牌的要素表示分类为表示不同实体的多个类别。 分类器通常是神经网络中的一个简单线性图层。
注:
NLP 模型作为功能强大的工具,可在处理大量非结构化文本时自动执行分析。 与其他类型的模型相似,需要确保将其应用于相关任务,并在模型训练过程中提供适当的人工监督和透明度,以了解所使用的模型类型和训练数据集。
使用实体识别模型
您可以利用使用深度学习提取实体工具将训练好的实体识别模型应用于非结构化文本,并以结构化数据的形式提取有用的信息。 您可以使用来自 ArcGIS Living Atlas of the World 的预训练实体识别模型,也可以使用训练实体识别模型工具训练自己的模型。
使用深度学习提取实体工具的输入是一个包含要执行命名实体识别的文本文件的文件夹。 输入模型可以是 Esri 模型定义 JSON 文件 (.emd),或深度学习模型包 (.dlpk)。 模型包含深度学习模型文件的路径(包含模型权重)和其他模型参数。 某些模型可能还有其他模型参数。
该工具将创建一个表,其中包含从输入文件夹的每个文本文件中提取的实体。 如果提供了定位器且模型能够提取地址,则通过对提取的地址进行地理编码,将生成一个要素类。 如果一个文本文件包含多个地址,则需通过对每个地址进行地理编码并复制其他实体,为该文本文件创建一个要素。
虽然该工具可以在 CPU 上运行,但建议使用 GPU 进行处理,因为深度学习计算成本较高。 要使用 GPU 运行此工具,需将处理器类型环境设置为 GPU。 如果您具有多个 GPU,则改为指定 GPU ID 环境设置。
训练实体识别模型
您可以使用训练实体识别模型工具来训练用于命名实体识别的 NLP 模型。 该工具采用机器学习方法,通过为其提供包含输入文本和标注实体对的训练样本来训练模型。 训练 NLP 模型是一项计算密集型任务,因此建议使用 GPU。
训练数据以文件夹的形式提供,其中包含用于 NER 任务的标准数据集形式的训练数据。 训练数据以 .json 或 .csv 文件的形式存在。 支持的数据集类型如下:
- ner_json - 文件夹必须包含一个 .json 文件,该文件包含使用 spaCy 的 JSON 训练格式进行格式化的文本和标注实体。
- IOB - Ramshaw 和 Marcus 在论文《Text Chunking using Transformation-Based Learning》中提出的内部、外部、开头 (IOB) 格式。 在此格式中,文件夹中必须包含以下两个 .csv 文件:
- token.csv - 此文件必须包含文本作为输入区段。
- tags.csv - 此文件必须包含文本区段的 IOB 标签
- BILUO - IOB 格式的扩展,包含以下标签:B 表示“开头”,I 表示“内部”,L 表示“结尾”,U 表示“单位”,O 表示“外部”。 使用此格式时,包含训练数据的文件夹必须包含以下两个 .csv 文件:
- token.csv - 此文件必须包含文本作为输入区段。
- tags.csv - 此文件必须包含文本区段的 BILUO 标签
有关这些格式和以这些格式标注数据的详细信息,请访问使用 Doccano 指南标注文本。
在训练实体识别模型时,可以选择从头开始训练模型,或进一步微调已经训练好的模型。
如果您已经有一个与训练样本中的目标实体集相同的预训练实体识别模型,则可以选择在新的训练数据上进行进一步微调。 微调现有模型通常比训练新模型更快,并且此过程仅需要较少的训练样本。 在微调预训练模型时,请确保保留与预训练模型中使用的相同的主干模型。
预训练模型可以是 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。 输出模型也以这些格式保存在指定的输出模型文件夹中。
ArcGIS 中的实体识别模型对地址实体与其他实体的处理方式不同。 如果要将实体视为位置,需在工具参数中将其指定为地址实体。 在推断过程中,这些实体使用指定的定位器进行地理编码,且实体提取过程将生成要素类。 如果未提供定位器,或训练的模型不提取地址实体,则将生成包含提取的实体的表格。
训练深度学习模型是一个迭代过程,训练数据通过神经网络多次传递。 通过训练数据实体的每个训练传递称为一个时期。 最大时期数参数用于指定在训练模型时,模型看到训练数据的最多次数。 这取决于您正在训练的模型、任务的复杂性和您拥有的训练样本数量。 如果您拥有大量的训练样本,则可以使用较小的值。 通常情况下,最佳做法是保持重复训练更多的时期,直到验证损失持续下降。
模型主干参数用于指定作为模型编码器并提取输入文本的要素表示的预配置神经网络。 该模型支持基于 BERT、ALBERT、RoBERTa 和 spaCy 的编码器,这些编码器基于转换器架构,并以半监督方式在大量文本上进行预训练。
模型训练以批处理方式进行,批处理大小参数用于指定一次处理的训练样本数。 增加批量大小可以提高工具性能;但是随着批量大小增加,所用内存也将随之增加。 如果在训练模型时发生内存不足错误,需降低批量大小。
学习率参数是最重要的超参数之一。 它是模型在训练过程中调整权重的速度。 如果指定的学习率较低,则模型改进速度较慢,并可能需要很长时间完成训练,这会导致时间和资源浪费。 如果学习率较高,则可能适得其反,模型可能学习效果不佳。 使用较高的学习率可能会导致模型权重大幅调整,从而生成错误的结果。 通常情况下,建议不要为学习率参数指定一个值,因为该工具可使用基于 Leslie N. Smith 的论文《Cyclical Learning Rates for Training Neural Networks》的自动学习率查找器。
该工具使用训练数据的一部分(默认为 10%)作为验证集。 验证百分比参数允许您调整用于验证的训练数据量。
默认情况下,该工具使用提前停止技术,当模型在后续训练时期中不再改进时,模型训练会停止。 您可以取消选中当模型停止改进时停止复选框来关闭此行为。
您还可以指定预训练模型中的主干图层是否将被冻结,以使权重和偏差保持原始设计。 默认情况下,主干模型的图层不会被冻结,可以更改模型主干值的权重和偏差以适应训练样本。 这需要更多的处理时间,但通常会产生更好的结果。
参考
Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. "Attention Is All You Need." December 6, 2017. https://arxiv.org/abs/1706.03762.
Honnibal, Matthew. "Embed, encode, attend, predict: The new deep learning formula for state-of-the-art NLP models." https://explosion.ai/blog/deep-learning-formula-nlp.
Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "Fully Understanding the Hashing Trick." May 22, 2018. https://arxiv.org/pdf/1805.08539.pdf.
"Doccano." https://github.com/doccano/doccano.
Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." May 24, 2019. https://arxiv.org/pdf/1810.04805.pdf.
Smith, Leslie N. "Cyclical Learning Rates for Training Neural Networks." April 4, 2017. https://doi.org/10.48550/arxiv.1506.01186.
Ramshaw, Lance, and Mitch Marcus. "Text Chunking using Transformation-Based Learning." 1995. In Third Workshop on Very Large Corpora.