【发布时间】:2020-05-10 20:34:17
【问题描述】:
我创建了一个语料库文件,然后存储在一个 pickle 文件中。 我的消息文件是不同新闻文章数据框的集合。
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
import re
ps = PorterStemmer()
corpus = []
for i in range(0, len(messages)):
review = re.sub('[^a-zA-Z]', ' ', messages['text'][i])
review = review.lower()
review = review.split()
review = [ps.stem(word) for word in review if not word in stopwords.words('english')]
review = ' '.join(review)
#print(i)
corpus.append(review)
import pickle
with open('corpus.pkl', 'wb') as f:
pickle.dump(corpus, f)
我在笔记本电脑(jupyter notebook)和谷歌 colab 上运行的代码相同。
corpus.pkl => 谷歌colab,下载代码如下:
from google.colab import files
files.download('corpus.pkl')
corpus1.pkl => 从 jupyter notebook 代码中保存。
现在当我运行这段代码时:
import pickle
with open('corpus.pkl', 'rb') as f: # google colab
corpus = pickle.load(f)
我收到以下错误:
UnpicklingError: pickle data was truncated
但这很好用:
import pickle
with open('corpus1.pkl', 'rb') as f: # jupyter notebook saved
corpus = pickle.load(f)
两者之间的唯一区别是corpus1.pkl 是通过 Jupyter notebook 运行和保存(在本地),而corpus.pkl 是保存在 google collab 上并下载。
谁能告诉我为什么会这样?
供参考..
corpus.pkl => 36 MB
corpus1.pkl => 50.5 MB
【问题讨论】:
-
你应该展示你是如何生成文件的,因为看起来它们是用相同的代码读取的。
-
这里有多个故障点:[colab] -> [从 colab 下载] -> [您的机器之前的网络中的某些东西]。我猜你尝试再次下载它,并在下载前检查 colab 中的文件大小。
-
我使用相同的代码来创建这两个文件,一个在我的笔记本电脑(jupyter notebook)中,另一个在google callab中。
-
@Iñigo 的建议奏效了。我还在 Google Collab 中上传了 pickle 文件,但遇到了与您相同的错误。我刚刚删除了上传的文件并重新上传,一切正常。
标签: python data-science pickle data-science-experience