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

如何保存Spacy NER的ent.label与ent.text?多实体值存储问题

解决Spacy NER多实体标签的字典存储问题

首先明确:Python的字典不允许存在重复键,你期望的输出格式在语法上是无效的——如果强行写重复键,最终字典只会保留最后一个键对应的值。正确的实现方式是让每个标签对应一个列表,用来存储同标签下的所有实体值。

修改后的代码

d = []
# 直接遍历DataFrame的行,无需先转存到列表c
for idx, row in article.iterrows():
    e = {'Urls': row[0]}  # 初始化字典,先存入Url
    a = str(row[2])
    doc = ner(a)
    for ent in doc.ents:
        label = ent.label_
        # 如果标签不在字典里,先创建空列表
        if label not in e:
            e[label] = []
        # 将实体文本追加到对应标签的列表中
        e[label].append(ent.text)
    d.append(e)

正确的输出示例

处理后每个标签会对应一个包含所有实体值的列表,格式如下:

[
    {
        'Urls': 'https://somewebsite.com',
        'Fruit': ['Apple', 'orange', 'watermelon'],
        'Fruit_colour': ['Red', 'orange', 'Green']
    },
    {
        'Urls': 'https://some_other_website.com/',
        'Fruit': ['Papaya', 'Peach', 'Mango'],
        'Fruit_colour': ['Yellow', 'Yellow', 'Green']
    }
]

代码优化说明

  • 去掉了冗余的列表c,直接遍历article.iterrows()的结果,提升代码简洁性
  • 对每个实体标签,先判断是否已存在于字典中,不存在则初始化空列表,再追加实体值,避免覆盖
  • 保持了原逻辑的核心功能,同时解决了多实体标签的存储问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:50:35