如何解决对大小写不佳的句子执行命名实体识别以提取公司名称
我有一个句子数据库,我试图从中提取任何和所有公司名称。截至目前,我正在使用 spaCy 的命名实体识别,并为具有标准大写的句子取得了良好的效果。 当我尝试对没有标准大写的句子做同样的事情时,问题就出现了。特别是,对于使用“标题大小写”的数据库子集,我的性能很差(即除介词/文章/等之外的所有单词都大写)。
以下是此类句子的一些示例,以及我使用 spaCy 获得的当前结果以及我想要的结果:
句子 | 当前提取 | 所需的提取物 |
---|---|---|
加勒比航空公司转变其收入会计流程 | 加勒比航空公司改变其收入核算 | 加勒比航空公司 |
Scular 通过 Absorb LMS 推动员工发展 | Scular 通过 Absorb 推动员工发展 | (Scular,Absorb LMS) |
Oracle 解决方案将运营成本降低了 25% | Oracle 解决方案降低运营成本 | Oracle |
Pandora 首席财务官通过 Coupa 缩短采购时间 | 潘多拉首席财务官削减采购时间 | (潘多拉,Coupa) |
如您所见,大写过多使得 spaCy 相信实体名称中包含的单词比实际情况多得多。 所以我的问题是如何缓解这个问题?是否有其他图书馆可能对这种大写不那么敏感,或者我可以通过“truecasing”来预处理句子。标准程序是什么?
为了完整起见,这里是我如何使用 spaCy 库
nlp = spacy.load("en_core_web_md")
for sentence in sentences:
doc = nlp(sentence)
for ent in doc.ents:
... store in database (ORG) ...
解决方法
您似乎已经对可能的解决方案有了一个想法...
我的建议:
- 预处理和 truecase 句子(相当复杂/困难)
- 使用具有无壳模型的其他框架(例如 BERT)
- 使用足够的数据(必须注释)重新训练 Spacy 的模型
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。