【发布时间】:2018-03-08 02:37:56
【问题描述】:
我正在使用 gensim 编写代码,并且很难对代码中的 ValueError 进行故障排除。我终于能够压缩 GoogleNews-vectors-negative300.bin.gz 文件,这样我就可以在我的模型中实现它了。我也试过gzip,结果不成功。代码中的错误发生在最后一行。我想知道可以做些什么来修复错误。有什么解决方法吗?最后,有没有可以参考的网站?
非常感谢您的协助!
import gensim
from keras import backend
from keras.layers import Dense, Input, Lambda, LSTM, TimeDistributed
from keras.layers.merge import concatenate
from keras.layers.embeddings import Embedding
from keras.models import Mode
pretrained_embeddings_path = "GoogleNews-vectors-negative300.bin"
word2vec =
gensim.models.KeyedVectors.load_word2vec_format(pretrained_embeddings_path,
binary=True)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-3-23bd96c1d6ab> in <module>()
1 pretrained_embeddings_path = "GoogleNews-vectors-negative300.bin"
----> 2 word2vec =
gensim.models.KeyedVectors.load_word2vec_format(pretrained_embeddings_path,
binary=True)
C:\Users\green\Anaconda3\envs\py35\lib\site-
packages\gensim\models\keyedvectors.py in load_word2vec_format(cls, fname,
fvocab, binary, encoding, unicode_errors, limit, datatype)
244 word.append(ch)
245 word = utils.to_unicode(b''.join(word),
encoding=encoding, errors=unicode_errors)
--> 246 weights = fromstring(fin.read(binary_len),
dtype=REAL)
247 add_word(word, weights)
248 else:
ValueError: string size must be a multiple of element size
【问题讨论】:
-
我可以毫无错误地执行您的代码。您确定您拥有最新版本的 gensim 吗?您实际上是压缩矢量文件(正如您在帖子中所写)还是您的意思是“解压缩”?您是否尝试过设置
binary=false来检查您是否有文本文件而不是二进制文件? -
我使用 Winzip 压缩文件。我也试过二进制=假。我使用最新版本的 gensim 得到了相同的结果。我正在使用 Python 3.6。
-
我怀疑您的文件已损坏,或者不是真正的未压缩二进制文件。 Gensim 可以很好地读取
.gz文件,因此您可以使用该原始文件。尝试下载新鲜并确保大小符合预期。如果您仍然有问题,请报告您正在尝试的文件的 MD5 哈希,以便与其他人的版本进行比较。 -
谢谢。我偶然发现了 wget 包并以这种方式下载了 bin 文件。我再试一次。