gensim cPickle.UnpicklingError: unpickling stack underflow

yws3nbqq  于 23天前  发布在  其他
关注(0)|答案(7)|浏览(20)

我在这个FastText预训练的Word2Vec模型中加载wiki.en.vec时遇到了这个错误。请查看here,了解这个模型。

已加载的模型:

$x_1a^b_1x$

使用的参数:

$x_1a^b_2x$

luaexgnf

luaexgnf1#

Word2Vec.load() 仅加载来自gensim的模型(它使用Python pickling)。
我相信 .vec 文件是原始Google word2vec.c(以及现在FastText)用于其顶级向量所使用的格式,因此 KeyedVectors.load_word2vec_format() 可能有效,也许可以使用 binary=False 参数。
方法 gensim.models.wrappers.fasttext.FastText.load_fasttext_format() 可能也与引入OOV词向量合成的ngrams有关,这也可能是有意义的......但我不确定它是否已经在发布的gensim中做到了正确的事情,与PR-in-progress #1341 相比。

mwecs4sa

mwecs4sa2#

@jayantj@prakhar2b wdyt?

zlwx9yxi

zlwx9yxi3#

是的,KeyedVectors.load_word2vec_format() 在这里肯定会起作用,而且 binary=False 也是默认参数。
至于OOV词合成,你所说的not sure if it's yet doing the right thing in the released gensim是什么意思?我认为对于OOV,我们需要提供n-gram信息,这些信息在.bin文件中提供。
目前,我们使用gensim.models.wrappers.fasttext.FastText.load_fasttext_format()来加载完整的模型,以便使用两个vec and bin文件。有了PR#1341,我们只需要一个bin文件,我相信其他功能仍然保持不变。
cc @jayantj@menshikh-iv

oalqel3c

oalqel3c4#

是的,使用.bin.vec文件,您可以使用-

from gensim.models.wrappers.fasttext import FastText
model = FastText.load_fasttext_format('/path/to/model')  # without the .bin/.vec extension

加载完整的模型。使用.vec文件,您只能加载词向量(而不是词汇表之外的单词信息),并使用-

from gensim.models.keyedvectors import KeyedVectors
model = KeyedVectors.load_word2vec_format('/path/to/model.vec')  # with the .vec extension
n3ipq98p

n3ipq98p5#

@jayantj 谢谢你,让我先尝试使用 load_fasttext_formatFastText Package 器。

jhkqcmku

jhkqcmku6#

@prakhar2b 我的"不确定"评论是关于我在另一个问题或正在进行的PR中看到的讨论,也许是那个也在讨论是否丢弃未训练的n-gram是否是必要的优化——我的印象是我们的计算可能在某些(也许只是OOV)词上与原始FB fasttext有所偏离。(即使这是可以辩护的,因为未训练的n-gram仍然只是随机向量,它可能不是整体上的“正确事情”,因为它可能会违反用户期望,即无论是加载到原始FT代码还是gensim FT代码中,OOV词从相同的加载模型中获得相同的向量。)

aamkag61

aamkag617#

我们绝对想遵循原始的FT所做的一切——对于任何迁移/尝试两者的人来说,这都是最不令人惊讶的道路。

相关问题