我一直试图运行一个如何使用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及其所有依赖项。
答案 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>,