You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpaCy规则匹配多格式人名实体(含逗号分隔)不生效问题咨询

解决方法

你遇到的问题是EntityRuler默认配置不允许覆盖已有的NER标注结果,加上现有规则没有适配多token人名的情况,仅需两步调整即可仅通过规则实现需求,无需训练自定义模型:

  1. 初始化EntityRuler时开启overwrite_ents配置,允许规则匹配结果覆盖原有NER实体,解决冲突:
# 修改add_pipe行,新增config参数
ruler = nlp.add_pipe("entity_ruler", after='ner', config={"overwrite_ents": True})
  1. 调整匹配规则,适配多token人名(比如Jean Joseph是两个连续PER类型的token),用OP:+表示匹配1个及以上连续的PER类型token:
specific_forms_patterns_persons = [
    {"label": "PER", "pattern": [
        {"ENT_TYPE": "PER"}, 
        {"ORTH": ","}, 
        {"ENT_TYPE": "PER", "OP": "+"}
    ]}
]

修改后运行你的代码即可得到期望输出:

[('Jules, Michelet', 'PER'), ('Laborde, Jean Joseph', 'PER'), ('Jacques Mei', 'PER'), ('Paris', 'LOC')]

补充说明

  • 你提到的三种人名格式都可以通过规则覆盖:无标点的FIRSTNAME LASTNAME本身会被预训练NER直接识别,两种带逗号的格式会被上述规则合并识别,无需额外调整。
  • 如果有部分冷门人名预训练NER识别不到,可以继续在patterns列表中添加对应的全匹配规则即可。

内容的提问来源于stack exchange,提问作者Lter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:30:04