文本分类的工作原理
文本分类是为句子、段落、文本报告或其他形式的非结构化文本分配预定义类别或标注的过程。 GeoAI 工具箱中的文本分析工具集包含使用自然语言处理 (NLP) 技术来训练文本分类模型以及使用模型对文本进行分类的工具。
训练文本分类模型工具训练 NLP 模型,以根据作为训练数据集的一部分提供的已知类或类别对文本进行分类。 经过训练的模型可以与使用深度学习分类文本工具配合使用,以将相似的文本分类到这些类别中。
可能的应用
以下是此工具的潜在应用:
不完整的地址可以按它们所属的国家来分类。 这有助于分配适当的定位器以更准确地对这些地址进行地理编码。
地理定位的推特可以根据它们是否表明对疫苗迟疑的情绪进行分类。 这可以帮助确定公共教育活动可以提高公众信心和疫苗接种率的区域。
根据事件报告对犯罪类型进行分类。 这可以通过按类别聚合犯罪来帮助了解趋势,并有助于规划补救工作。

ArcGIS 中的文本分类模型以 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 运行。
训练数据以输入表的形式提供,其中包含一个用作预测变量的文本字段和一个包含表中每个输入文本的目标类标注的标注字段。
当训练文本分类模型时,可以从头开始训练模型、微调已训练模型或者使用上下文学习。 通常,使用转换器架构的语言模型被认为是少样本学习模型。
但是,如果您可以访问具有与训练样本中相同的目标类集的预训练文本分类模型,则可以在新的训练数据上对其进行微调。 微调现有模型通常比训练新模型更快,并且此过程仅需要较少的训练样本。 在微调预训练模型时,请确保保留与预训练模型中使用的相同的主干模型。
此预训练模型可以是 Esri 模型定义文件或深度学习包文件。 输出模型也以这些格式保存在指定的输出模型文件夹中。
训练深度学习模型是一个迭代过程,训练数据通过神经网络多次传递。 通过整个训练数据的每次训练都称为一个轮数。 最大轮数参数用于指定在训练模型时,模型看到训练数据的最多次数。 这取决于您正在训练的模型、任务的复杂性以及训练样本的数量。 如果您有很多训练样本,则可以使用较小的值。 通常情况下,较好的做法是重复训练更多轮直到验证损失持续下降。
模型主干参数用于指定作为模型编码器并提取输入文本的要素表示的预配置神经网络。 该模型支持基于 BERT、ALBERT 和 RoBERTa 的编码器,这些编码器基于转换器架构,并以半监督方式对大量文本进行预训练。 这些编码器可以很好地理解语言,以固定长度矢量形式表示输入文本,并将其作为模型分类中心词的输入。 模型主干参数还支持 Mistral 大型语言模型 (LLM)。 Mistral 一种仅限解码器的变换器模型,采用滑动窗口注意力机制实现高效的长文本处理,使用分组查询注意力机制简化计算,使用字节回退 BPE 分词器技术处理不同的文本输入。
模型训练分批进行,批处理大小参数指定一次为训练处理的训练样本数。 增加批处理大小可以提高工具性能。 但是,随着批处理大小的增加,会占用更多内存。 如果在训练模型时发生内存不足错误,需降低批量大小。
学习率参数是最重要的超参数之一。 它是模型在训练过程中调整权重的速度。 如果指定的学习率较低,则模型改进速度较慢,并可能需要很长时间完成训练,这会导致时间和资源浪费。 高学习率可能会适得其反,无法达到理想学习效果。 使用较高的学习率可能会导致模型权重大幅调整,从而生成错误的结果。 通常情况下,最好不要指定学习率参数的值,因为该工具使用了基于 Leslie N. Smith 的 "训练神经网络的循环学习率"论文的自动学习率查找器。
该工具使用部分训练数据(默认为 10%)作为验证集。 验证百分比参数允许您调整用于验证的训练数据量。 对于 Mistral 模型,必须保留至少 50% 的数据进行验证,因为 Mistral 需要的训练集较小,并且依赖较大的验证集来评估模型性能。
默认情况下,该工具使用提前停止技术,当模型在后续几轮训练中不再改进时,模型训练会停止。 可以通过取消选中模型停止改进时停止参数来关闭此行为。
您还可以指定预训练模型中的主干图层是否将被冻结,以使权重和偏差保持原始设计。 默认情况下,主干模型的图层不会被冻结,可以更改模型主干值的权重和偏差以适应训练样本。 这需要更多的处理时间,但通常会产生更好的结果。
文本数据通常包含 HTML 标签和 URL 形式的噪声。 您可以使用移除 HTML 标签和移除 URL 参数来预处理文本并在处理前移除标签。
参考
Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, and Illia Polosukhin. "Attention Is All You Need." December 6, 2017. https://arxiv.org/abs/1706.03762.
Devlin, Jacob, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding." May 24, 2019. https://doi.org/10.48550/arxiv.1810.04805.
"Encoder models." https://huggingface.co/course/chapter1/5?fw=pt.
Brown, Tom B. et al. "Language Models are Few-Shot Learners." July 22, 2020. https://doi.org/10.48550/arxiv.2005.14165.
Smith, Leslie N. "Cyclical Learning Rates for Training Neural Networks." April 4, 2017. https://doi.org/10.48550/arxiv.1506.01186.
"Mistral." https://docs.mistral.ai/getting-started/open_weight_models/.