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

创建自定义NER模型数据集时遇NameError: 'nlp'未定义如何解决?

解决NameError: name 'nlp' is not defined问题

这个错误的原因很直接:你已经导入了spaCy的相关库,但没有创建spaCy的语言处理实例(即nlp对象),代码执行到doc = nlp(text)时找不到这个变量,所以抛出NameError。

两种解决方式:

  • 方式1:创建空白语言管道(推荐用于自定义NER训练)
    如果是从零开始构建自定义NER模型,不需要预训练模型的其他组件,直接初始化空白管道即可,根据你的文本语言选择对应代码:

    # 中文文本用"zh",英文用"en",其他语言参考spaCy文档
    nlp = spacy.blank("zh")
    
  • 方式2:加载预训练模型
    如果你需要利用预训练模型的分词、词性标注等基础功能来辅助标注,可以加载spaCy的预训练模型:

    # 中文预训练小模型,英文替换为"en_core_web_sm"
    nlp = spacy.load("zh_core_web_sm")
    

完整示例代码

import spacy
from spacy.tokens import Doc
from spacy.training import Example

# 先初始化nlp对象
nlp = spacy.blank("zh")

# 后续你的数据集构建代码
texts = ["示例文本1", "示例文本2"]
LABELS = ["PERSON", "ORG"]  # 替换成你的自定义标签
train_data = []
for text in texts:
    doc = nlp(text)
    entities = []
    for label in LABELS:
        # 在这里补充你的实体标注逻辑,比如定位实体的起始/结束索引
        # 示例:entities.append((start_idx, end_idx, label))
        pass
    train_data.append((text, {"entities": entities}))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:32:30