尝试使用 gensim word2vec 时使用 a.all() 或 a.any() 错误

use a.all() or a.any() error while trying to use 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 及其所有依赖项。

我也遇到了同样的问题,我所做的是安装 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]

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

通常,我将text-data收集到dtype=np.str的numpy-arrays中。 当我将 numpy-text-array 加载到 gensim-model 时,我收到了您描述的错误。实际上,将数组存储在正常的 python-list 中反而起到了作用..

也许这可以帮助其他人 运行 解决这个问题。

如果以上所有答案都不起作用,您可以尝试从您的 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 中有其他词,如“["or "]”或“'”,你可能会得到这个答案,你不会喜欢的

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