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

torchtext报错AttributeError: module 'torchtext.data' has no attribute 'Field'求助

问题描述
  • 代码片段:
import torchtext as data
import torchtext.datasets as datasets
...
text_field = data.Field(lower=True)
...
  • 运行错误:
Traceback (most recent call last):
  File "C:\Users\emre.sinoforoglu\Desktop\cnn-text-classification-pytorch-master\main.py", line 71, in <module>
    text_field = data.Field(lower=True)
                 ^^^^^^^^^^
AttributeError: module 'torchtext.data' has no attribute 'Field'
  • 环境版本:
torch                        2.0.0
torchtext                    0.15.0
  • 尝试过的无效操作:
    • 改为import torchtext.legacy.data as data,出现ModuleNotFoundError: No module named 'torchtext.legacy'
    • 卸载后安装torchtext 0.8.0,提示找不到对应版本:
ERROR: Could not find a version that satisfies the requirement torchtext==0.8.0 (from versions: 0.1.1, 0.2.0, 0.2.1, 0.2.3, 0.3.1, 0.4.0, 0.5.0, 0.6.0, 0.12.0, 0.13.0, 0.13.1, 0.14.0, 0.14.1, 0.15.0, 0.15.1)
ERROR: No matching distribution found for torchtext==0.8.0
解决办法

办法一:适配torchtext 0.15.0的新API

torchtext从0.12版本开始重构了API,Field类被拆分,改用分词器、词汇表组合的方式实现相同功能,示例代码如下:

  1. 导入所需模块:
from torchtext.vocab import build_vocab_from_iterator
from torchtext.data.utils import get_tokenizer
# 替换成你实际使用的数据集
from torchtext.datasets import AG_NEWS
  1. 定义分词器(对应原Field(lower=True)的小写处理):
tokenizer = get_tokenizer('basic_english', lower=True)
  1. 构建词汇表:
# 获取数据集迭代器
train_iter = AG_NEWS(split='train')

# 生成词汇迭代器
def yield_tokens(data_iter):
    for text, _ in data_iter:
        yield tokenizer(text)

# 构建词汇表,添加未知词、填充词等特殊符号
vocab = build_vocab_from_iterator(yield_tokens(train_iter), specials=["<unk>", "<pad>"])
# 未知词默认用<unk>的索引替代
vocab.set_default_index(vocab["<unk>"])
  1. 定义文本转换函数(替代原Field的转换逻辑):
text_transform = lambda x: vocab(tokenizer(x))

之后即可用text_transform处理输入文本,实现原Field的功能。

办法二:安装兼容的旧版本依赖

torchtext 0.8.0仅兼容PyTorch 1.7.x版本,你当前使用的PyTorch 2.0.0无法匹配,可选择以下两种方案:

  1. 降级PyTorch到1.7.1,再安装torchtext 0.8.0:
pip install torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2
pip install torchtext==0.8.0
  1. 保留PyTorch 2.0.0,安装兼容的torchtext 0.14.0版本(该版本仍保留legacy模块):
pip install torchtext==0.14.0

安装完成后,使用如下导入语句即可恢复原代码逻辑:

import torchtext.legacy.data as data
text_field = data.Field(lower=True)

内容的提问来源于stack exchange,提问作者Yiğit Yılmaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:53:20