我使用以下python代码生成单词向量的相似性矩阵(我的词汇量大小是77
)。
similarity_matrix = []
index = gensim.similarities.MatrixSimilarity(gensim.matutils.Dense2Corpus(model.wv.syn0))
for sims in index:
similarity_matrix.append(sims)
similarity_array = np.array(similarity_matrix)
similarity_array
的维度是300 X 300
。但是据我所知,维度应该是77 x 77
(因为我的词汇量是77)。
i.e.,
word1, word2, ......, word77
word1 0.2, 0.8, ..., 0.9
word2 0.1, 0.2, ...., 1.0
... ...., ....., ....., ....
word77 0.9, 0.8, ..., 0.1
请告诉我我的代码有什么问题。
而且,我想知道(word1, word2, ..., word77)
用于计算这个相似性矩阵的词汇量的顺序是什么?我可以从order
获得这个model.wv.index2word
吗?
请帮我!
尝试更换
index = gensim.similarities.MatrixSimilarity(gensim.matutils.Dense2Corpus(model.wv.syn0))
至
index = gensim.similarities.MatrixSimilarity(gensim.matutils.Dense2Corpus(model.wv.syn0.T))
这个问题已经发布很久了,但也许我的答案会有所帮助。下面的代码给出了与index = gensim.similarities.MatrixSimilarity(gensim.matutils.Dense2Corpus(model.wv.syn0.T))
相同的结果,带有for循环,但更简洁。
import numpy as np
similarity_matrix = np.dot(model.wv.syn0norm, model.wv.syn0norm.T)
它计算归一化单词矢量之间的点积,即对之间的距离。