尝试使用gensim word2vec

时间:2016-11-18 06:53:43

标签: python-2.7 gensim word2vec

我一直试图运行一个如何使用python的gensim库中的word2vec但我一直收到此错误的例子

    ValueError: The truth value of an array with more than one element is   ambiguous. Use a.any() or a.all()

这是我的代码,它只是一个简单的例子:

    from gensim.models import Word2Vec
    sentences = [['first', 'sentence'], ['second', 'sentence']]
    # train word2vec on the two sentences
    model = Word2Vec(sentences, min_count=1)

注意:我已确保安装了gensim及其所有依赖项。

3 个答案:

答案 0 :(得分:2)

我也遇到了这个问题。对我来说,错误显然有另一个背景:

通常,我将文本数据收集到dtype = np.str的numpy-arrays中。 当我将numpy-text-array加载到gensim-model中时,我收到了您描述的错误。实际上,将数组存储在普通的python-list中代替了这个技巧..

也许这有助于其他人遇到这个问题。

答案 1 :(得分:0)

我也遇到了同样的问题,我所做的是安装python-dev软件包,然后重新安装gensim,不知何故有效,我在ubuntu上这就是我所做的:

sudo apt-get install python-dev
sudo pip uninstall gensim
sudo pip install gensim

当我运行时:

model = gensim.models.Word2Vec(sentences=listSentence,min_count=2,window=3,size=20,workers=1)
print model['Brasil']

它有效,我得到了结果向量:

[-0.01635483  0.02224622 -0.01865266  0.02168317 -0.01231722 -0.0207897
 -0.0014509   0.00264822 -0.01889374 -0.02109174 -0.00244757  0.00024959
 -0.00898884 -0.01826199 -0.01361686 -0.01770178 -0.02431025 -0.01903439
 -0.00775641  0.02353667]

答案 2 :(得分:0)

如果以上所有答案都不起作用,则可以尝试从numpy列表中保存txt,然后像这样。

np.savetxt('train_data.txt', np_api, delimiter=" ", fmt="%s")
sentences = word2vec.LineSentence('train_data.txt')

txt的fmt必须这样

this is the sentence a
this is the sentence b

如果txt包含“ [”或“]”或“'”之类的其他字词,则您可能会得到此答案,您会不会喜欢

"'FindWindowA'": <gensim.models.keyedvectors.Vocab at 0x7f1f74251e80>,
"'FindWindowA']": <gensim.models.keyedvectors.Vocab at 0x7f1f74232978>,
"'FindWindowExA'": <gensim.models.keyedvectors.Vocab at 0x7f1f741e83c8>,