如何集成空缺的entity_ruler标签以显示entity_ruler标签和统计标签

时间:2019-05-04 15:27:54

标签: python spacy rulers

这是我的问题:

我希望在可能的情况下将自定义的entity_ruler标签与spacy的标准统计实体标签集成。我认为(但不确定)在所有情况下,除了完全重叠之外,两个标签都应该出现。

希望是,自定义标尺标签与给定跨度的统计标签精确重叠时,entity_ruler标签将覆盖统计标签,否则所有标准统计标签也将出现。

现在,解析器仅返回entity_ruler标签(和关联的令牌)或统计标签(和关联的令牌),而不是两者的组合。

我已经尝试插入“ enter_ruler”,它们分别为before =“ ner”和after =“ ner”,并带有overwrite = True和overwrite = False。我什至尝试在管道中的其他位置(例如在解析器,标记器等之前)插入entity_ruler。

这是该指令执行此操作的方式,据我所知(尽管我尝试了我能想到的所有其他可能的变化,但没有其他效果):

from spacy.pipeline import EntityRuler
import en_core_web_lg
nlp = spacy.load("en_core_web_lg")
ruler = EntityRuler(nlp)
patterns = [
    {"label": "CEO", "pattern": "John Doe0"},
    {"label": "COO", "pattern": "John Doe1"},
    {"label": "INVESTOR", "pattern": "John Doe2"},
    {"label": "CURRENTCO", "pattern": "Newco0"},
    {"label": "PASTCO", "pattern": "Newco1"},
    ]  
ruler.add_patterns(patterns)
nlp.add_pipe(ruler, before="ner")
print(nlp.pipe_names)
ruler.to_disk("/home/user/anaconda3/envs/SPACY/lib/python3.7/site-  packages/spacy/patterns.jsonl")
ruler = EntityRuler(nlp).from_disk("/home/km/anaconda3/envs/SPACY/lib/python3.7/site-packages/spacy/patterns.jsonl")
text = open(u'/home/user/anaconda3/envs/SPACY/RAW_DATA/snippet.csv').read()
doc = nlp(text)
for ent in doc.ents:
    print(ent.text, ent.start_char, ent.end_char, ent.label_)

返回:

  

John Doe0 0 12首席执行官
  John Doe1 130 142 COO
  Newco0 169175 CURRENTCO
  John Doe1 2997 3012投资者

0 个答案:

没有答案