【发布时间】:2020-08-10 13:36:39
【问题描述】:
我使用的是 spacy 2.3.2 版本 同时预测像 santosh12647578 kadge16577 这样的名称。 spacy 将它们标识为 PERSON 实体。 如果在其中遇到数字,我如何告诉 spacy 不要将其视为 PERSON 实体。
我可以为此使用实体标尺吗?如果可以我应该如何处理这个 任何帮助将不胜感激
【问题讨论】:
标签: python-3.x nlp spacy
我使用的是 spacy 2.3.2 版本 同时预测像 santosh12647578 kadge16577 这样的名称。 spacy 将它们标识为 PERSON 实体。 如果在其中遇到数字,我如何告诉 spacy 不要将其视为 PERSON 实体。
我可以为此使用实体标尺吗?如果可以我应该如何处理这个 任何帮助将不胜感激
【问题讨论】:
标签: python-3.x nlp spacy
您可以在 NER 统计模型之后使用基于规则的组件来纠正常见错误。
import spacy
nlp = spacy.load('en_core_web_lg')
def reduce_person_entities(doc):
new_ents = []
for ent in doc.ents:
if ent.label_ == "PERSON" and any(char.isdigit() for tok in ent for char in tok.text):
pass
else:
new_ents.append(ent)
doc.ents = new_ents
return doc
nlp.add_pipe(reduce_person_entities, after='ner')
doc = nlp('Some example usernames include kadge16577 (Kadge Smith).')
for ent in doc.ents:
print(ent, ent.label_)
输出
Kadge Smith PERSON
【讨论】:
is_digit作为条件