今天想学LSTM的情感分类,结果碰到了一系列问题,耽误了很多时间。特此记录!
一.项目来源
lesson53-情感分类实战 B站视频
二.碰到的问题
1.报错AttributeError: module ‘torchtext.data‘ has no attribute ‘Field‘
解决方法1(在这个方法中没啥用,但是记录一下)
- 在2021年3月5日TorchText 0.9.0更新,一些API调用也发生变化
之前我们调用Field,TabularDataset,Iterator,BucketIterator是通过torchtext.data
import torch
import torchtext
from torchtext.data import Field,TabularDataset,Iterator,BucketIterator
在torchtext0.9环境下,会报AttributeError: module ‘torchtext.data’ has no attribute ‘Field’
import torch
import torchtext
from torchtext.legacy.data import Field,TabularDataset,Iterator,BucketIterator
解决方法2(有用的)
因为这个项目是2020年,所以我把torchtext的版本往后退了。
- 先卸载原来的torchtext。
pip uninstall torchtext
- 下载0.6.0版本的
pip install torchtext==0.6.0
2.Can’t find model ‘en’
需要下载en_core_web_sm-3.0.0.tar.gz 在指定虚拟环境下执行命令:
pip install 存放位置/en_core_web_sm-3.0.0.tar.gz
同时需要下载spacy
pip install spacy==3.0.0
注意:spacy的版本要与en_core_web_sm版本要相同!!!spacy的版本要与en_core_web_sm版本要相同!!!spacy的版本要与en_core_web_sm版本要相同!!!重要的抒情说三遍!!!
3.torchtext 下载 IMDB 数据集时出现错误
import torch
from torch import nn, optim
from torchtext import data, datasets
TEXT = data.Field(tokenize='spacy',tokenizer_language='en_core_web_sm')
LABEL = data.LabelField(dtype=torch.float)
train_data, test_data = datasets.IMDB.splits(TEXT, LABEL)
print('Number of training examples:', len(train_data))
print('Number of testing examples:', len(test_data))
虽然没报错了,但是数据集没下载下载,加载数据集为空,如下图: 这里的最后一行代码一般会自动下载imdb数据集,但是常常速度很慢很慢,而且如果没下载完成就退出的话,再运行就不会自动下载了。这里我发现下载的数据集会在project里面的.data\imdb\文件夹下。 解决方法是去 aclImdb_v1.tar.gz下载包,用浏览器下会稍微快点,主要是不会丢失连接。下载完成以后,把压缩包放到.data\imdb\文件夹下并且解压。之后再运行以上代码就不会报错了。
|