【问题标题】:spacy identifies names with digit in it as PERSON entityspacy 将带有数字的名称标识为 PERSON 实体
【发布时间】:2020-08-10 13:36:39
【问题描述】:

我使用的是 spacy 2.3.2 版本 同时预测像 santosh12647578 kadge16577 这样的名称。 spacy 将它们标识为 PERSON 实体。 如果在其中遇到数字,我如何告诉 spacy 不要将其视为 PERSON 实体。

我可以为此使用实体标尺吗?如果可以我应该如何处理这个 任何帮助将不胜感激

【问题讨论】:

    标签: python-3.x nlp spacy


    【解决方案1】:

    您可以在 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
    

    【讨论】:

    • 连字符和`等特殊字符也是非字母数字的。使用此代码,则名称如 santosh` kadge 将不会被识别为人员实体然后如何处理
    • @Santosh Kadge 然后你可以使用is_digit作为条件
    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多