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

torchtext 0.6.0跑Transformer教程报Vocab对象不可调用如何解决

核心功能说明

你提到的vocab(tokenizer(item))写法的预期作用,是将分词后得到的token列表映射为词汇表对应的整数索引,并非调用vectors属性。vectors属性用于存储预训练词向量,和此处的ID映射需求无关。

报错原因

不管是torchtext 0.6.0还是0.10.0版本,原生的Vocab类都没有实现__call__方法,不支持直接调用。教程中出现的可调用写法,要么是对Vocab实例做了自定义封装,要么是搭配了torchtext提供的转换包装类使用,原生场景下无法直接使用该写法。

适配torchtext 0.6.0的修改方案

直接使用0.6.0版本Vocab暴露的stoi属性(字符串到索引的映射字典)完成转换即可,修改后的代码如下:

# 可提前配置未登录词的默认索引,避免出现KeyError
unk_idx = vocab.stoi.get('<unk>', 0)
data = [torch.tensor([vocab.stoi.get(token, unk_idx) for token in tokenizer(item)], dtype=torch.long) for item in raw_text_iter]
return torch.cat(tuple(filter(lambda t: t.numel() > 0, data)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:12:02