基于Spacy Rule的匹配实体正在覆盖现有实体,如何保留

时间:2017-08-01 09:33:02

标签: python nlp spacy

我正在使用Spacy 1.8.2。我添加了一些自定义实体:

def add_entity(matcher, document, i, matches):
        ent_id, label, start, end = matches[i]      
        document.ents += (Span(document, start, end, label),)   

nlp.matcher.add_entity("person_one",on_match=add_entity)  
nlp.matcher.add_pattern("person_one",[{ENT_TYPE:"PERSON"}],label = "PERSON_ONE")

现在, PERSON_ONE 实体已识别,但 PERSON实体不是

我希望所有默认实体以及与任何自定义规则匹配的任何范围的自定义实体。

1 个答案:

答案 0 :(得分:0)

看起来spaCy不支持重叠实体;见here

  

问题是Matcher类自动设置命名实体注释,但命名实体注释不允许重叠实体。缺乏重叠的实体并不理想,但它是一个标准的限制,并没有那么成问题。

如上所述,这是NER系统的一个非常标准的限制。

解决此问题的一种非常简单的方法是运行NER两次,一次使用规则,一次不使用,并合并实体。