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

复现自然语言处理模型时如何定义sample及解决sample未定义报错

NLP复现代码中sample未定义报错的解决方法

报错场景

复现自然语言处理模型时运行如下代码触发报错:

for doc in sample['documents']: 

报错信息:NameError: name 'sample' is not defined(即'sample' 未定义)。

sample的正确定义方式

sample代表NLP任务中待处理的单条数据样本,代码要求该样本为字典结构,且必须包含documents键,对应值为关联的文档内容列表,常见定义方式分三类:

  • 从加载好的公开数据集中取样本
    用数据集读取工具加载完对应任务的数据集后,直接按索引提取单条数据即可,参考代码:
    from datasets import load_dataset
    # 替换为你复现任务对应的数据集名称、对应拆分集
    dataset = load_dataset("目标数据集名", split="test")
    # 提取指定索引的单条数据作为sample
    sample = dataset[0]
    
    # 可选:校验字段是否符合预期
    assert "documents" in sample.keys(), "数据集字段不匹配,缺少documents键"
    
  • 手动构造测试用sample
    如果仅需调试循环逻辑、验证后续代码流程,可以手动构造符合格式要求的字典:
    sample = {
        "documents": [
            "第一份测试文档的文本内容",
            "第二份测试文档的文本内容",
            "第三份测试文档的文本内容"
        ],
        # 可按后续代码需求补充其他字段,比如查询文本、样本ID等
        "query": "测试查询",
        "id": 0
    }
    
  • 批量处理场景下的sample定义
    如果原逻辑是要遍历处理整个数据集的所有样本,报错原因是缺失了遍历数据集的外层循环,补全即可:
    # 遍历数据集时会依次将每条样本赋值给sample
    for sample in dataset:
        for doc in sample['documents']:
            # 写入你原有的单文档处理逻辑
            pass
    

注意:定义完成后需确认sample为字典类型,且documents对应的值为可迭代的文本列表,避免触发键不存在、类型不匹配的其他报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:27:21