Python 3.x 使用Google新闻语料库word2vec模型python的句子间余弦相似度

Python 3.x 使用Google新闻语料库word2vec模型python的句子间余弦相似度,python-3.x,nlp,word2vec,cosine-similarity,sentence-similarity,Python 3.x,Nlp,Word2vec,Cosine Similarity,Sentence Similarity,我试图使用word2vec谷歌新闻语料库在两个长度不等的句子之间找到余弦相似性,但我得到了一个错误:AxisError:axis1超出维度1数组的范围 下面是我的代码: from gensim.models import KeyedVectors EMBEDDING_FILE = '/root/input/GoogleNews-vectors-negative300.bin.gz' # from above word2vec = KeyedVectors.load_word2vec_format

我试图使用word2vec谷歌新闻语料库在两个长度不等的句子之间找到余弦相似性,但我得到了一个错误:
AxisError:axis1超出维度1数组的范围

下面是我的代码:

from gensim.models import KeyedVectors
EMBEDDING_FILE = '/root/input/GoogleNews-vectors-negative300.bin.gz' # from above
word2vec = KeyedVectors.load_word2vec_format(EMBEDDING_FILE, binary=True)

vocab = word2vec.vocab.keys()
wordsInVocab = len(vocab)

import numpy as np

def sent_vectorizer(sent, model):
    sent_vec = np.zeros(50)
    numw = 0
    for w in sent:
        try:
            vc=model[w]
            vc=vc[0:50]

            sent_vec = np.add(sent_vec, vc) 
            numw+=1
        except:
            pass
    return sent_vec / np.sqrt(sent_vec.dot(sent_vec))

a = sent_vectorizer('Football is played in Brazil',word2vec)
b =sent_vectorizer('Cricket is played in India',word2vec)

word2vec.cosine_similarities(b,a)
我把句子转换成向量,因为余弦_相似性以向量数组作为输入。
如何解决此问题?

word2vec.cosine\u相似性
将向量作为第一个参数,将矩阵作为第二个参数


您正在传递第二个参数的
vector
。再添加一个轴或使用
np.stack
a
b
堆叠在一起。

您应该显示您遇到的所有错误的完整错误堆栈,以便回答者可以看到您的代码和所用库中与该错误相关的精确行。还有:(1)当源词向量是300维时,你使用50维向量有什么原因吗?(2) 由于你的句子是字符串,你的
for w in sent:
循环将依次生成
w
每个字符,而不是每个单词,这可能不是你想要的;(3) 将向量除以其自身点积的sqrt是一种奇怪而迂回的方法,可以简单地对向量进行单位规格化(将其除以其自身的大小)。