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

加载IMDB数据集时build_vocab_from_iterator报'tuple'无lower属性的问题

错误原因与解决方法

原因分析

  • WikiText2数据集的训练迭代器返回的每一项都是纯文本字符串,直接用tokenizer处理完全适配
  • IMDB数据集的训练迭代器返回的每一项是**(标签, 文本)**的二元组,当你直接把元组传给basic_english tokenizer时,tokenizer内部会尝试调用字符串的lower()方法做小写转换,但元组没有这个属性,因此抛出'tuple' object has no attribute 'lower'错误

修正后的代码

from torchtext.datasets import WikiText2, IMDB
from torchtext.data.utils import get_tokenizer
from torchtext.vocab import build_vocab_from_iterator

tkzer = get_tokenizer('basic_english')

# WikiText2的处理逻辑不变
tr_iter = WikiText2(split='train')
vocabulary_wiki = build_vocab_from_iterator(map(tkzer, tr_iter), specials=['<unk>'])

# IMDB的处理:先提取每个元组中的文本部分,再分词
tr_iter_imdb = IMDB(split='train')
# 生成只包含文本的迭代器
text_iter_imdb = (text for label, text in tr_iter_imdb)
# 基于文本迭代器构建词汇表
vocabulary_imdb = build_vocab_from_iterator(map(tkzer, text_iter_imdb), specials=['<unk>'])

关键说明

  • 用生成器表达式(text for label, text in tr_iter_imdb)从IMDB的元组数据中剥离出纯文本内容,确保tokenizer处理的是字符串类型
  • 后续的map(tkzer, text_iter_imdb)就和WikiText2的处理逻辑一致,能正常完成分词和词汇表构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 06:22:07