Python 导入GoogleNews-vectors-negative300.bin
我正在使用gensim编写代码,并且很难排除代码中的ValueError故障。我终于能够压缩GoogleNews-vectors-negative300.bin.gz文件,以便在我的模型中实现它。我还尝试了gzip,但没有成功。代码中的错误出现在最后一行。我想知道可以做些什么来修复错误。有什么解决办法吗?最后,有我可以参考的网站吗 感谢您的帮助Python 导入GoogleNews-vectors-negative300.bin,python,gensim,Python,Gensim,我正在使用gensim编写代码,并且很难排除代码中的ValueError故障。我终于能够压缩GoogleNews-vectors-negative300.bin.gz文件,以便在我的模型中实现它。我还尝试了gzip,但没有成功。代码中的错误出现在最后一行。我想知道可以做些什么来修复错误。有什么解决办法吗?最后,有我可以参考的网站吗 感谢您的帮助 import gensim from keras import backend from keras.layers import Dense, Inpu
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
从keras导入后端
从keras.layers导入稠密、输入、λ、LSTM、时间分布
从keras.layers.merge导入连接
从keras.layers.embedings导入嵌入
从keras.models导入模式
预训练的嵌入路径=“GoogleNews-vectors-negative300.bin”
word2vec=
gensim.models.KeyedVectors.load\u word2vec\u格式(预训练嵌入路径,
二进制=真)
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
1预训练的嵌入路径=“GoogleNews-vectors-negative300.bin”
---->2字2VEC=
gensim.models.KeyedVectors.load\u word2vec\u格式(预训练嵌入路径,
二进制=真)
C:\Users\green\Anaconda3\envs\py35\lib\site-
load_word2vec_格式的packages\gensim\models\keyedvectors.py(cls、fname、,
fvocab、二进制、编码、unicode_错误、限制、数据类型)
244字。附加(ch)
245 word=utils.to_unicode(b.)。连接(word),
编码=编码,错误=unicode\u错误)
-->246权重=从字符串(fin.read(二进制)读取),
dtype=实际值)
247添加单词(单词、权重)
248其他:
ValueError:字符串大小必须是元素大小的倍数
您必须编写完整的路径
使用以下路径:
以下命令有效
brew install wget
wget -c "https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz"
这将下载GZIP压缩文件,您可以使用以下方法解压缩该文件:
gzip-d GoogleNews-vectors-negative300.bin.gz
然后,您可以使用下面的命令获取wordVector
from gensim import models
w = models.KeyedVectors.load_word2vec_format(
'../GoogleNews-vectors-negative300.bin', binary=True)
试试这个-
import gensim.downloader as api
wv = api.load('word2vec-google-news-300')
vec_king = wv['king']
另外,请访问此链接:我可以执行您的代码而不会出错。你确定你有最新版本的gensim吗?你是真的压缩了矢量文件(正如你在文章中写的)还是说“解压”?您是否尝试设置
binary=false
以检查是否可以使用文本文件而不是二进制文件?我使用Winzip压缩文件。我还尝试了binary=false。我用最新版本的gensim得到了相同的结果。我正在使用Python 3.6。我怀疑您的文件已损坏,或者不是真正的未压缩二进制文件。Gensim可以很好地读取.gz
文件,因此您可以使用该原始文件。尝试下载fresh&确保大小符合预期。如果您仍然有问题,请报告您正在尝试的文件的MD5哈希,以与其他人的版本进行比较。谢谢。我偶然发现了wget包,并以这种方式下载了bin文件。我会再试一次。欢迎链接到解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及它为什么在那里,然后引用您链接到的页面的最相关部分,以防目标页面不可用。如果每个人都能使用这个链接,我们(Skymind)将不胜感激:@CrabMan我们每个月都会收到几千张托管该文件的账单,它会耗尽我们所有的AWS积分。不幸的是,该模型无法推断不熟悉单词的向量。这是Word2Vec的一个限制:如果这个限制对您很重要,请查看FastText模型。我收到了以下警告:/usr/local/lib/python3.6/dist-packages/smart\u-open/smart\u-open\u-lib.py:253:UserWarning:此函数不推荐使用,请改用smart\u-open.open。有关详细信息,请参见迁移说明:https://github.com/RaRe-Technologies/smart_open/blob/master/README.rst#migrating-到新打开的函数“有关详细信息,请参阅迁移说明:%s”%\u migration\u notes\u URL
有什么解决方法吗?