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

spaCy如何通过IOB格式的实体数据初始化Doc对象

你遇到的报错是因为传入Doc构造函数的ents参数不符合spaCy要求的IOB标签格式规范,两种错误写法的问题分别如下:

  • 用二元组("", "O")传参:ents参数要求每个元素为单个IOB格式字符串,不接受元组类型
  • 传空字符串/纯实体名:IOB标签必须遵循固定格式,非实体统一用O,实体开头token用B-实体类型,实体后续token用I-实体类型,不允许空值或不带前缀的实体名

对应你的业务场景,修改后的可运行代码如下:

import spacy
from spacy.tokens import Doc
nlp = spacy.load("en_core_web_sm")

token_texts = ["I", "like", "potatoes", "!"]
# 第三个token是单个token构成的food实体,用B-food,其余非实体用O
labels = ["O", "O", "B-food", "O"]
whitespaces = [True, True, False, False]
doc = Doc(nlp.vocab, words=token_texts, ents=labels, spaces=whitespaces)

# 验证实体是否设置成功
print([(ent.text, ent.label_) for ent in doc.ents])
# 输出:[('potatoes', 'food')]

如果是多token构成的实体,例如["fried", "potatoes"]都属于food实体,那么对应的IOB标签应为["B-food", "I-food"]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:18:01