命名实体识别规范
在此页面上
使用步骤
命名实体识别的目标是在序列中定位和分类命名实体。命名实体是根据用例选择的预定义类别,例如人名、组织、地点、代码、时间符号、货币价值等。本质上,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模型。
Tags
最新内容
- 12 hours ago
- 14 hours ago
- 14 hours ago
- 3 days 5 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 13 hours ago
- 3 days 14 hours ago
- 1 week ago
- 1 week ago