为什么gensim的Word2Vec不能识别'compute_loss'关键字?

时间:2017-07-24 08:47:11

标签: python gensim word2vec

根据 gensim.models.Word2Vec API reference,“compute_loss”是有效的关键字。但是,我收到的错误是unexpected keyword

更新

GitHub上的Word2Vec类does have是'compute_loss'关键字,但我的本地库没有。 我看到gensim文档和库彼此偏离。 我发现conda repository中的win-64/gensim-2.2.0-np113py35_0.tar.bz2 - 文件不是最新的。

然而,在使用conda卸载gensim之后,pip install gensim没有改变任何内容,因为它仍然不起作用。

显然,GitHub上的源代码和分布式库是不同的,但教程似乎假设代码与GitHub一样。

/ END OF UPDATE

我关注并下载了tutorial notebook on Word2Vec

在输入[25]中,“训练损失计算”标题之后的第一个单元格,我在Word2Vec类'初始值设定项中出错。

输入:

# instantiating and training the Word2Vec model
model_with_loss = gensim.models.Word2Vec(sentences, min_count=1, 
compute_loss=True, hs=0, sg=1, seed=42)

# getting the training loss value
training_loss = model_with_loss.get_latest_training_loss()
print(training_loss)

输出:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-25-c2933abf4b08> in <module>()
      1 # instantiating and training the Word2Vec model
----> 2 model_with_loss = gensim.models.Word2Vec(sentences, min_count=1, compute_loss=True, hs=0, sg=1, seed=42)
      3 
      4 # getting the training loss value
      5 training_loss = model_with_loss.get_latest_training_loss()

TypeError: __init__() got an unexpected keyword argument 'compute_loss'

我通过conda安装了gensim 2.2.0,并从gensim存储库中获得了一个新的克隆(使用教程笔记本)。我在Windows 10上使用64位Python 3.5.3。(Anaconda)

我试图寻找同样遭遇的人,但我没有成功。

你知道这个的原因,以及如何解决这个问题?显然,GitHub上的源代码和分布式库是不同的,但教程似乎假设代码与GitHub一样。

我之前也posted the question在官方邮件列表中。

1 个答案:

答案 0 :(得分:2)

更新: compute_loss已于7月25日在2.3.0版本中添加。的 / UPDATE

问题中引用的笔记本位于开发分支上。 分支的notebook与最新分发一致。

{6}在this commit中添加了compute_loss参数。last upload到PYPI是6月21日,仅仅两天之后。 (截至今日)。 compute_loss未包含在分发中。 (v2.2.0中的最后一次提交是this。)

我认为解决方案是等待下一版本的gensim,同时从存储库下载代码。

然而,至少在Windows上,这可能会给gensim FAST版本带来挑战。请参阅Using Gensim shows "Slow version of gensim.models.doc2vec being used"

如何从GitHub安装gensim在install documentation

中有解释