How to use Spacy nlp custom ner to identity 2 types of docs at once(如何使用Spacy NLP自定义NER同时识别两种类型的文档)
本文介绍了如何使用Spacy NLP自定义NER同时识别两种类型的文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想创建一个Spacy NER模型,该模型根据文档类型识别和使用标记。
输入为json格式。示例-
{"text":{"a":"ABC DEF.","b":"CDE FG."},
"annotations":[
{"start":0,"end":3,"doc_type":"a","label":{"text":"FIRST"},"text":"ABC"},
{"start":4,"end":6,"doc_type":"b","label":{"text":"SECOND"},"text":"FG"}
]
}
在此,我希望模型确定第一个文本的类型为&q;a&q;,因此文本应该首先使用标记进行标记。同样,第二个文本的类型为
我该如何着手解决这个问题?谢谢!
推荐答案
您的数据描述有些含糊,但考虑到以下假设:
- 您不知道文档是A类型还是B类型,您需要对其进行分类。
- A类和B类单据的NER完全不同。
您应该做的是使用(最多)三个独立的空间管道。使用带有TextCAT模型的第一个管道将文档分类为A和B类型,然后为A类型文档提供一个用于NER的管道,为B类型文档提供一个管道。分类后,只需将文本传递到适当的NER管道。
这不是最高效的管道,但设置起来非常简单--您只需训练三个单独的模型,然后用一些胶水代码将它们粘合在一起。
您也可以单独训练模型,并将它们组合到一个空间管道中,使用某种特殊组件使NER的执行具有条件,但这将非常难以设置,因此我建议首先使用单独的管道方法。
也就是说,根据您的问题,您可能不需要两个NER模型,两种类型的文档的学习实体都是有效的。所以我也建议你试着把你所有的训练数据放在一起,只训练一个NER模型,看看效果如何。如果这样做有效,那么您可以拥有一个单独的管道,其中包含不直接相互交互的文本猫和NER模型。为了回应这条评论,当我说<2-0]时,我指的是语言对象,它就是spacy.load
返回的对象。因此,您使用配置训练模型,每个模型都在一个目录中,然后执行以下操作:
import spacy
classifier = spacy.load("classifier")
ner_a = spacy.load("ner_a")
ner_b = spacy.load("ner_b")
texts = ["I like cheese", ... raw texts ... ]
for text in texts:
doc = classifier(text)
if doc.cats["a"] > doc.cats["b"]:
nerdoc = ner_a(text)
else:
nerdoc = ner_b(text)
... do something with the doc here ...
这篇关于如何使用Spacy NLP自定义NER同时识别两种类型的文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何使用Spacy NLP自定义NER同时识别两种类型的文档
猜你喜欢
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 计算测试数量的Python单元测试 2022-01-01