我怎样才能让 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
而不是他们现在分配的实体。这也适用于其他一些 'skills'。
{"label":"SKILL|django","pattern":[{"LOWER":"django"}]}
{"label":"SKILL|pytorch","pattern":[{"LOWER":"pytorch"}]}
有没有人知道为什么它不遵守我自己创建的实体?
有没有一种方法可以让我的实体优先于模型中已有的实体?
谢谢!
我找到了解决办法。
通过在管道中的 NER(解析器之后)之前添加 new_ruler
,它赋予创建的实体优先级
nlp.add_pipe(new_ruler, after='parser')
我加载并添加到实体标尺的 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
而不是他们现在分配的实体。这也适用于其他一些 'skills'。
{"label":"SKILL|django","pattern":[{"LOWER":"django"}]}
{"label":"SKILL|pytorch","pattern":[{"LOWER":"pytorch"}]}
有没有人知道为什么它不遵守我自己创建的实体?
有没有一种方法可以让我的实体优先于模型中已有的实体?
谢谢!
我找到了解决办法。
通过在管道中的 NER(解析器之后)之前添加 new_ruler
,它赋予创建的实体优先级
nlp.add_pipe(new_ruler, after='parser')