You need to enable JavaScript to run this app. AttributeError: 'list'对象无'ents'属性,spaCy命名实体识别报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

AttributeError: 'list'对象无'ents'属性,spaCy命名实体识别报错如何解决

问题解决说明

错误根因

  1. 属性调用逻辑错误:你定义的doc是Python列表类型,列表内的每个元素才是spaCy处理后得到的Doc对象,ents是Doc类的专属属性,列表本身不具备该属性,因此触发AttributeError。
  2. 实体属性调用错误:你原有实体识别代码中调用的entity.label也存在问题,spaCy中label属性返回的是实体类型的哈希值,要获取可读的实体类型字符串,需要调用entity.label_属性。
  3. 原始代码缩进不规范:你贴出的读取CSV的代码存在缩进错误,with代码块、for循环下的代码需要统一缩进4个空格,否则运行时会触发缩进错误。

修复方案

方案一:逐段提取实体(保留原分段处理逻辑)

遍历列表中的每个Doc对象,再分别提取对应实体即可,修改后的实体识别代码如下:

for single_doc in doc:
    for entity in single_doc.ents:
        print(entity.text, entity.label_)

方案二:合并全量文本后统一识别(可选)

如果需要将CSV中所有字段内容作为整体做实体识别,可以调整读取逻辑拼接所有文本后统一处理,代码如下:

import csv
import spacy

# 初始化nlp模型,替换为你实际加载的对应语言模型即可
nlp = spacy.load("en_core_web_sm")

all_content = ""
with open(r'C:\Users\DELL\Desktop\Final project\Requirements1.csv', encoding='utf-8') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=';')
    for row in csv_reader:
        for field in row:
            all_content += field + " "

# 统一处理生成单个Doc对象
doc = nlp(all_content)

# 提取实体
for entity in doc.ents:
    print(entity.text, entity.label_)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 01:45:04