Python 3.x 使用Google新闻语料库word2vec模型python的句子间余弦相似度
我试图使用word2vec谷歌新闻语料库在两个长度不等的句子之间找到余弦相似性,但我得到了一个错误: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
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是一种奇怪而迂回的方法,可以简单地对向量进行单位规格化(将其除以其自身的大小)。