Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么';在spaCy中加入词典(地名录)以提高NER的理想方式是什么?_Python_Nlp_Named Entity Recognition_Spacy - Fatal编程技术网

Python 什么';在spaCy中加入词典(地名录)以提高NER的理想方式是什么?

Python 什么';在spaCy中加入词典(地名录)以提高NER的理想方式是什么?,python,nlp,named-entity-recognition,spacy,Python,Nlp,Named Entity Recognition,Spacy,我目前正致力于替换一个基于nltk实体提取和regexp匹配的系统,其中我有几个命名实体字典。字典实体既有普通类型(个人(员工)等),也有自定义类型(如技能)。我想使用预先训练好的spaCy模型,并以某种方式包括我的字典,以提高NER的准确性。以下是我对可能的方法的看法: 使用spaCy的Matcher API,迭代字典,并使用回调添加每个短语以添加实体 我刚刚发现了spacy查找,这似乎是一种提供要匹配的单词/短语长列表的简单方法 但是如果我想要模糊匹配呢?有没有一种方法可以直接添加到Voc

我目前正致力于替换一个基于nltk实体提取和regexp匹配的系统,其中我有几个命名实体字典。字典实体既有普通类型(个人(员工)等),也有自定义类型(如技能)。我想使用预先训练好的spaCy模型,并以某种方式包括我的字典,以提高NER的准确性。以下是我对可能的方法的看法:

  • 使用spaCy的Matcher API,迭代字典,并使用回调添加每个短语以添加实体

  • 我刚刚发现了spacy查找,这似乎是一种提供要匹配的单词/短语长列表的简单方法

  • 但是如果我想要模糊匹配呢?有没有一种方法可以直接添加到Vocab中,从而通过bloomfilter/n-gram单词向量进行模糊匹配,或者有没有适合这种需要的扩展?否则,我想我可以复制spacy查找并用其他东西替换flashtext机制,例如Levenshtein distance

  • 在玩spaCy的时候,我试着直接用字典中的一个单词(没有任何句子上下文)来训练NER,这确实“管用”。但是,当然,我必须非常小心,以防止模型忘记一切


感谢任何帮助,我觉得这一定是一个非常普遍的要求,我很想听到什么最适合人们

我建议你看看斯帕西的。如果将现有词典转换为模式进行匹配,则可以为每个实体和新类型添加规则

这是非常强大的,因为您可以将其与标准spacy模型中现有的统计NER相结合,以实现您提到的一些“模糊匹配”。从文档中:

实体标尺旨在与spaCy现有的统计模型集成,并增强命名实体识别器。如果将其添加到“ner”组件之前,实体识别器将尊重现有实体跨度并调整其周围的预测。在某些情况下,这可以显著提高准确性。如果在“ner”组件之后添加,则实体标尺仅会将跨度添加到文档中,前提是这些跨度与模型预测的现有实体不重叠。要覆盖重叠的实体,可以在初始化时设置overwrite_ents=True


我将Matcher用于动态生成的回调。我认为它工作得很好

我很好奇为什么Matcher不支持模糊匹配,这是spacy的作者在一个封闭的问题上发现的

您确实希望预计算搜索集,而不是在matcher中动态计算它们。一旦预先计算了相似性值,就可以使用扩展属性和匹配器中的>=比较来执行搜索。 我认为在这种情况下,实现细节非常重要,而掩盖它们的API实际上是一种伤害


我认为这是一个很好的观点,它告诉你如何构建你想要的东西

一个相关的概念:集成方法,将多个基本估计器的预测与给定的学习算法相结合,以提高单个估计器的通用性/鲁棒性。()这里有几个NER标记(基于神经网络,模式和地名录可以组合,每一个都是单独的估计器)