跳转到主要内容
Chinese, Simplified

命名实体识别规范

在此页面上

使用步骤

命名实体识别的目标是在序列中定位和分类命名实体。命名实体是根据用例选择的预定义类别,例如人名、组织、地点、代码、时间符号、货币价值等。本质上,NER旨在为序列中的每个令牌(通常是一个单词)分配一个类。正因为如此,NER也被称为令牌分类。

在简单变换器中执行命名实体识别的过程没有偏离标准模式。

  • 初始化NERModel
  • 使用Train_model()训练模型
  • 使用eval_mode()评估模型
  • 使用predict()对(未标记的)数据进行预测

支持的型号类型

新的模型类型会定期添加到库中。命名实体识别任务当前支持下面给出的模型类型。

Model Model code for NERModel
ALBERT albert
BERT bert
BERTweet bertweet
BigBird bigbird
CamemBERT camembert
DeBERTa deberta
DeBERTa deberta
DeBERTaV2 deberta-v2
DistilBERT distilbert
ELECTRA electra
HerBERT herbert
LayoutLM layoutlm
LayoutLMv2 layoutlmv2
Longformer longformer
MobileBERT mobilebert
MPNet mpnet
RemBERT rembert
RoBERTa roberta
SqueezeBert squeezebert
XLM xlm
XLM-RoBERTa xlmroberta
XLNet xlnet

提示:模型代码用于指定Simple Transformers模型中的model_type。

自定义标签

NERModel中使用的默认标签列表来自使用以下标签/标签的CoNLL数据集。

[“O”,“B-MISC”,“I-MISC”、“B-PER”、“I-PER”、”B-ORG“、”I-ORG“、“B-LOC”、”I-LOC“]

然而,命名实体识别是一项非常通用的任务,有许多不同的应用。您很可能希望定义并使用自己的令牌标记/标签。

这可以通过在创建NERModel时将标签列表传递给labels参数来实现。

custom_labels = ["O", "B-SPELL", "I-SPELL", "B-PER", "I-PER", "B-ORG", "I-ORG", "B-PLACE", "I-PLACE"]

model = NERModel(
    "bert", "bert-cased-base", labels=custom_labels
)

 

预测警告

默认情况下,NERModel会在空格上将输入序列拆分为predict()方法,并为拆分序列的每个“单词”分配一个NER标记。这在某些语言(例如中文)中可能是不可取的。为了避免这种情况,可以在调用NERModel.product()方法时指定split_on_space=False。在这种情况下,必须提供一个列表列表作为predict()方法的to_predict输入。内部列表将是属于单个序列的拆分“单词”列表,外部列表是所有序列的列表。

延迟加载Data

在内存中保存大型数据集所需的系统内存可能非常大。在这种情况下,可以延迟从磁盘加载数据,以最大限度地减少内存消耗。

若要启用延迟加载,必须在NEArgs中将lazy_loading标志设置为True。

model_args = NERArgs()
model_args.lazy_loading = True

注意:数据必须以CoNLL格式作为文件的路径输入,才能使用延迟加载。请参阅此处以获取正确的格式。

注意:这通常会比较慢,因为功能转换是动态完成的。然而,速度和内存消耗之间的权衡应该是合理的。

提示:有关配置模型以正确读取延迟加载数据文件的信息,请参阅配置NER模型。

原文地址
https://simpletransformers.ai/docs/ner-specifics/
本文地址
Article

微信

知识星球

微信公众号

视频号