实体识别,也称为指定实体识别 (NER),是从句子、段落、文本报告或其他形式的非结构化文本中提取信息的过程。 GeoAI 工具箱中的文本分析工具集包含使用自然语言处理 (NLP) 技术来训练实体识别模型并使用这些模型从非结构化文本中提取实体的工具。
训练实体识别模型工具用于训练 NLP 模型,以从训练数据集中提供的预定义实体集(如组织、人物、日期或国家/地区)中提取实体。 经训练的实体识别模型可以与使用深度学习提取实体工具配合使用,以将这些实体从原始文本中提取为结构化格式。
可能的应用
以下是此工具的潜在应用:
- 从犯罪报告中提取位置、报告官员或使用武器等数据。 这可以帮助显示趋势和规划补救工作。
- 可以从推文或社交媒体帖子中提取位置或是否需要帮助等信息。 这可以帮助确定在自然灾害期间需要即使救助的区域。
ArcGIS 中的实体识别模型基于转换器架构,该架构适用于嵌入、编码、参与、预测框架。
- 嵌入 - 在此过程中,输入文本将被转换成密集单词嵌入。 这些嵌入从输入文本中捕获语义信息,并且更便于模型使用。
- 编码 - 在这个过程中,上下文将被编码为单词矢量。 这是使用残差三元卷积神经网络 (CNN) 完成的。
- 参加 - 上一步的矩阵输出被简化为单个矢量,该矢量将传递给标准前馈网络进行预测。 这一步与注意机制有类似的效果。
- 预测 - 模型的最后一步是根据输入文本进行预测。 在这一步骤中,来自注意力图层的矢量被传递给多图层感知器以输出实体标注 ID。
基于转换器的后端使用 Vaswani 等人在 Attention is All You Need 论文中提出的架构为基础。这样可以在仅需要不太准确的标注数据训练模型的同时,实现更准确且可并行化的模型。 在内部,ArcGIS 中基于转换器的实体识别模型包括两个组件:
- 编码器 - 编码器作为模型骨干,将输入文本转换为固定大小矢量形式的要素表示。 该模型使用熟知的编码器,例如基于转换器架构的 BERT、ALBERT 和 RoBERTa,并在大量文本上进行了预训练。
- 令牌级分类器 - 令牌级分类器可以作为模型中心词,并将每个令牌的要素表示分类为代表各种实体的多个类别。 分类器通常是神经网络中的简单线性图层。
ArcGIS 中的实体识别模型也支持 Mistral 模型主干。 Mistral 是一个基于变换器架构的大型语言模型,仅作为解码器模型运行。 Mistral 架构的关键组件包括以下内容:
- 滑动窗口注意力 - 通过将长文本分成较小的重叠段来有效处理长文本,在保留重要上下文的同时降低计算成本和内存使用量。
- 分组查询注意力 - 通过将相似的查询聚类在一起来提高效率,从而最大限度地减少注意力计算量并加快处理速度。
- 字节回退 BPE(字节对编码)分词器技术 - 将文本转换为标记以供模型处理。
注:
当自动分析大量非结构化文本时,NLP 模型工具具有强大的功能。 与其他类型的模型一样,应注意确保将其应用于相关任务时,具有适当的人工监督水平以及模型类型和用于训练模型的训练数据集的透明度水平。
使用实体识别模型
您可以通过使用深度学习提取实体工具将经训练的实体识别模型应用于非结构化文本,并以结构化数据的形式从中提取有用信息。 您可以使用来自 ArcGIS Living Atlas of the World 的预训练实体识别模型,或使用训练实体识别模型工具训练您自己的模型。
使用深度学习提取实体工具的输入是一个文件夹,其中包含将执行指定实体识别的文本文件或要素类或表中的文本列。 输入模型可以是 Esri 模型定义 JSON 文件 (.emd),也可以是深度学习模型包 (.dlpk)。 该模型包含深度学习模型文件的路径(包含模型权重)和其他模型参数。 某些模型可能包含其他模型参数。
该工具将创建一个表,其中包含从每个文本文件中提取的实体。 如果提供了定位器并且模型可以提取地址,则将通过对提取的地址进行地理编码来生成要素类。 如果文本文件包含多个地址,则可以通过对每个地址进行地理编码并复制该文本文件的其他实体来创建要素。
虽然该工具可以在 CPU 上运行,但由于深度学习计算成本非常高,因此建议使用 GPU 进行处理。 要使用 GPU 运行此工具,请将处理器类型环境设置为 GPU。 如果您具有多个 GPU,还可以指定 GPU ID 环境设置。
训练实体识别模型
您可以使用训练实体识别模型工具来训练 NLP 模型以进行指定实体识别。 该工具使用机器学习方法,并通过向模型提供由输入文本对和该文本中的标注实体组成的训练样本来训练模型。 通过 Mistral 模型主干使用情境学习,通过输入提示引导模型的理解和响应,并为模型提供具体示例以帮助其推断所需的输出。 训练 NLP 模型是一项计算密集型任务,为此建议使用 GPU。
输入可以为以下任一项:
- 要素类或表,其中包含一个文本字段,该文本字段包含模型的输入文本和标注实体,其中所选文本字段将用作模型的输入文本,其余字段将被视为授权实体标注。
- 包含 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 标签
- 当输入为文件夹时,支持以下数据集类型:
训练实体识别模型时,可以选择从头开始训练模型、进一步微调已训练模型或者使用上下文学习。
如果您已经可以访问具有与训练样本中相同的目标实体集的预训练实体识别模型,则可以选择在新的训练数据上进一步对其进行微调。 微调现有模型通常比训练新模型更快,而且这个过程也需要更少的训练样本。 在微调预训练模型时,请确保保留与预训练模型中使用的骨干模型相同的骨干模型。
预训练模型可以是 Esri 模型定义文件 (.emd) 或深度学习包文件 (.dlpk)。 输出模型也以这些格式保存在指定的输出模型文件夹中。
ArcGIS 中的实体识别模型将地址实体与其他实体区别对待。 如果要将实体视为位置,则应在工具参数中将其指定为地址实体。 在推断过程中,将使用指定的定位器对这些实体进行地理编码,并且将生成实体提取过程的结果要素类。 如果未提供定位器或训练模型未提取地址实体,则会生成包含提取实体的表。
训练深度学习模型是一个迭代过程,其中输入训练数据将多次通过神经网络。 通过整个训练数据的每次训练都称为一个轮数。 最大轮数参数指定模型在训练时所看到训练数据的最大次数。 这取决于您正在训练的模型、任务的复杂性以及训练样本的数量。 如果您有大量训练样本,则可以使用较小的值。 通常情况下,较好的做法是重复训练更多轮数直到验证损失持续下降。
模型骨干参数指定用作模型编码器并提取输入文本要素表示的预配置神经网络。 该参数支持基于 BERT、ALBERT 和 RoBERTa 的编码器,这些编码器基于转换器架构,并以半监督方式对大量文本进行预训练。 模型主干参数还支持 Mistral 大型语言模型 (LLM)。 Mistral 一种仅限解码器的变换器模型,采用滑动窗口注意力机制实现高效的长文本处理,使用分组查询注意力机制简化计算,使用字节回退 BPE 分词器技术处理不同的文本输入。
模型训练分批进行,批处理大小参数指定一次为训练处理的训练样本数。 增加批处理大小可以提高工具性能;但是,随着批处理大小的增加,会占用更多内存。 如果在训练模型时发生内存不足错误,请使用较小的批处理大小。
学习率参数是最重要的超参数之一。 它是在训练期间调整模型权重的速率。 如果指定了低学习率,则模型改进缓慢并且可能需要很长时间来训练,从而导致时间和资源的浪费。 高学习率可能会适得其反,模型无法达到理想学习效果。 在高学习率的情况下,模型权重可能会被大幅调整,从而导致结果错误。 通常情况下,最好不要指定学习率参数的值,因为该工具使用了基于 Leslie N. Smith 在 Cyclical Learning Rates for Training Neural Networks 中提取的自动学习率查找器。
该工具使用部分训练数据作为验证集。 验证百分比参数允许您调整用于验证的训练数据量。 对于 Mistral 模型,必须保留至少 50% 的数据进行验证,因为 Mistral 需要的训练集较小,并且依赖较大的验证集来评估模型性能。
默认情况下,该工具使用提前停止技术,当模型在连续训练轮数中不再改进时,该技术会停止模型训练。 可以通过取消选中模型停止改进时停止复选框来关闭此行为。
还可以指定是否冻结预训练模型中的骨干层,以使权重和偏差保持原始设计。 默认情况下,不会冻结骨干模型的图层,可能会更改模型骨干值的权重和偏差以更好地适合您的训练样本。 这将需要花费更多的时间来处理,但通常会产生更好的结果。
资源
有关详细信息,请参阅以下内容:
"Attention Is All You Need" by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, and Illia Polosukhin on arXivLabs at Cornell University
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.
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.
"Mistral." https://docs.mistral.ai/getting-started/open_weight_models/.