用 spaCy 标记电话号码

数据挖掘 命名实体识别 斯派西
2022-02-18 00:00:21

我必须对给定的一组句子进行 BIO 标记。

例如:

sentence = 'My name is XYZ, I live in United States of America,
            my Phone number is (123)123-1234"

电话号码可以是任何格式。

预期结果:

在此处输入图像描述

但我得到:

在此处输入图像描述

代码:

import spacy
s= 'I live in United states of America, my Phone number is (123)123-1234'
nlp = spacy.load('en_core_web_sm')
doc = nlp(s)
test = pd.DataFrame([(e.text, e.pos_,e.ent_iob_,e.ent_type_) for e in doc])

有人可以帮忙吗?

1个回答

目前,您正在使用预训练的 NER 模型来标记单个句子。

  • 预训练模型不是专门针对电话号码进行训练的,它执行一般的 NER。这就是为什么它还会标记人员/组织名称、地点、日期等。您可以训练自定义 NER 模型,但您需要大量带有电话号码注释的数据。
  • 一个句子对调试很有用,但您必须至少有一个带有电话号码注释的中等大小的数据样本,以便评估您的方法。一个句子是不够的,因为系统出现一些错误是正常的,关键是要尽量减少代表性样本上的错误数量。
  • 最后,考虑 NER 的替代方案很重要:电话号码遵循非常特定的格式,在这种情况下使用一些简单的模式匹配可能更有效。