创建自定义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
相关产品推荐
相关产品推荐

