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

AttributeError: 'Vocab'对象无'stoi'属性报错原因及解决方法求问

问题原因

该报错确实由torchtext版本差异导致:
torchtext ≤0.8.x的旧版本中,Vocab对象默认公开stoi字典属性,用于存储词到数字索引的映射;而0.9.0及以上的新版本移除了该公开属性,对应功能替换为get_stoi()方法,也可直接通过vocab[目标词]的方式查询索引。

解决方案

有两种可行修复方式,可根据需求选择:

  • 方案1:版本降级,无需修改代码
    直接安装适配旧版API的torchtext版本即可,对应适配PyTorch 1.7.x版本,安装命令:
    pip install torchtext==0.8.1
    
  • 方案2:修改现有代码适配新版torchtext
    将_dynamic_dict方法中所有调用src_vocab.stoi[w]的部分,替换为src_vocab[w]或者src_vocab.get_stoi()[w]即可,修改后代码如下:
    def _dynamic_dict(self, examples_iter):
        for example in examples_iter:
            src = example["src"]
            src_vocab = torchtext.vocab.Vocab(Counter(src))
            self.src_vocabs.append(src_vocab)
            # Mapping source tokens to indices in the dynamic dict.
            src_map = torch.LongTensor([src_vocab[w] for w in src])
            example["src_map"] = src_map
    
            if "tgt" in example:
                tgt = example["tgt"]
                mask = torch.LongTensor(
                        [0] + [src_vocab[w] for w in tgt] + [0])
                example["alignment"] = mask
            yield example
    

内容的提问来源于stack exchange,提问作者U. Iceman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:36:04