簡體   English   中英

如何讓 SpaCy 識別所有給定的實體

[英]How can I make SpaCy recognize all my given entities

我有很多 JSONL 格式的模式列表,我加載並添加到實體標尺

new_ruler = EntityRuler(nlp).from_disk(project_path + "data/skill_patterns.jsonl")
nlp.add_pipe(new_ruler)

當我打印結果時: print([(ent.text, ent.label_) for ent in doc.ents])我的輸出是:

[('data science','SKILL|data-science'), ('CV', 'ORG'), ('Kandidaat', 'FAC'), ('één', 'CARDINAL'), ('LSTM',
 'ORG'), ('Parts', 'GPE'), ('Speech', 'GPE'), ('POS', 'ORG'), ('Entity Recognition', 'ORG'), 
('NER', 'ORG'), ('Word2vec', 'ORG'), ('GloVe', 'ORG'), ('Recursive', 'NORP'), ('Neural Networks', 'ORG'),
 ('Ensemble', 'PERSON'), ('Dynamic', 'NORP'), ('Intent detection', 'PERSON'), ('Phrase matching.-', 'ORG'),
 ('Microsoft', 'NORP'), ('Azure.-', 'ORG'), ('één', 'CARDINAL'), ('Python', 'WORK_OF_ART'),
 ('Pytorch', 'GPE'), ('Django', 'GPE'), ('GoLanguage.-', 'GPE'), ('Kandidaat', 'FAC'), ('1 november 2020', 'DATE')]

現在我知道一個事實,例如('Pytorch', 'GPE')('Django', 'GPE')在我的模式列表中,應該被識別為SKILL而不是他們現在分配的實體。 這也適用於許多其他“技能”。

{"label":"SKILL|django","pattern":[{"LOWER":"django"}]}
{"label":"SKILL|pytorch","pattern":[{"LOWER":"pytorch"}]}

有沒有人知道為什么它不遵守我自己創建的實體?

有沒有辦法讓我的實體優先於模型中已有的實體?

謝謝!

我找到了解決辦法。

通過在new_ruler的 NER(解析器之后)之前添加new_ruler ,它賦予創建的實體優先級

nlp.add_pipe(new_ruler, after='parser')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM