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

如何修改spaCy NER实体移除函数 仅删除人名和组织机构名称

问题原因

你之前的代码会无差别删除所有spaCy识别到的命名实体,且采用文本匹配的判断逻辑,所以金额、时间这类非目标实体也会被误删,示例中的6被识别为MONEY类型实体,也被纳入了删除范围。

修改方案

调整判断逻辑,仅过滤实体类型为PERSON(人名)和ORG(组织机构)的token即可,不需要提前收集所有实体的文本,直接通过每个token的ent_type_属性判断所属实体类型,逻辑更精准,也能避免同文本内容的误判。

修改后代码

import spacy
sp = spacy.load('en_core_web_sm')
def NER_removal(text):
    document = sp(text)
    text_no_namedentities = []
    for item in document:
        # 仅跳过人名和组织机构类实体
        if item.ent_type_ in ("PERSON", "ORG"):
            continue
        text_no_namedentities.append(item.text)
    return " ".join(text_no_namedentities)

测试效果

调用NER_removal("John loves to play at Sofi stadium at 6.00 PM and he earns $6"),输出结果为:
loves to play at stadium at 6.00 PM and he earns $6
符合保留金额数字的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:15:03