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')
tr_iter = WikiText2(split='train')
vocabulary = build_vocab_from_iterator(map(tkzer, tr_iter), specials=['<unk>'])
tr_iter_imdb = IMDB(split='train')
vocabulary = build_vocab_from_iterator(map(tkzer, tr_iter_imdb), specials=['<unk>'])
WikiText2的代码运行良好。但是当涉及到IMDB时,我在运行 build_vocab_from_iterator 时得到以下错误。
“tuple”对象没有属性“lower”
有人能帮我理解为什么会这样吗?我认为这与IMDB数据结构不同,不同于WikiText2。在这种情况下,我如何为IMDB数据集构建vocab。
1条答案
按热度按时间ghg1uchk1#
IMDB()
返回一个包含int和str的元组:我建议你检查元组中的文本是否是你想要的,然后更新你的map函数,如下所示:
map(lambda x : tkzer(x[1]),tr_iter_imdb)