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

spaCy 3无法添加负样本至训练集,该如何解决?

解决spaCy 3中添加无实体负样本到DocBin的问题
  • 核心思路:无实体的负样本不需要强行创建占位Span,直接把doc.ents设为空元组即可,DocBin就能正常接收该文档。
  • 具体操作代码示例:
    import spacy
    from spacy.tokens import DocBin
    
    nlp = spacy.load("zh_core_web_sm") # 替换成你使用的语言模型
    doc = nlp("这段文本里没有任何需要标注的实体")
    # 关键操作:将doc.ents设为空元组,明确表示该文档无实体
    doc.ents = ()
    # 加入DocBin并保存
    db = DocBin()
    db.add(doc)
    db.to_disk("negative_samples.spacy")
    
  • 原理说明:spaCy的Doc.ents本身支持空元组值,这完全匹配负样本的定义——没有任何实体标注。之前尝试用doc.char_span(0,0,"NO_ENTITY")是无效操作,因为spaCy不认可零长度的Span作为有效实体,直接设空元组才是正确逻辑。
  • 批量处理提示:处理数据集时,对有实体的文本正常创建Span并赋值给doc.ents,对无实体的文本执行doc.ents = (),最后统一将两类文档加入DocBin即可,两者都能被正确保存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:25:19