使用gensim word2vec计算余弦相似度

时间:2019-07-13 20:19:52

标签: python word2vec cosine-similarity

我试图在word2vec模型上计算余弦相似度,以便最终绘制相似度的直方图。

我使用了来自20个新闻组的70%的宗教数据来训练LDA模型并计算相似度。然后我将政治数据进行测试。我想用word2vec做类似的事情。

这是我的LDA代码。

#Training
#%%Lemmatize
lmtzr = WordNetLemmatizer()
lemmatized = []
for x in no_stop:
    #lemmatise
    lem = [lmtzr.lemmatize(t) for t in x]
    lemmatized.append(lem)

#create dictionary
id2word = gensim.corpora.Dictionary(lemmatized)


corpus = [id2word.doc2bow(doc) for doc in lemmatized]

#%% LDA

n = 5
lda = models.ldamodel.LdaModel(corpus, id2word=id2word, num_topics=n,minimum_probability = 0)

#Similarity
index_lda = similarities.MatrixSimilarity(lda[corpus]) 

label = []
rel_index = []

#train
for c in lemmatized: 
    c_vectorise = id2word.doc2bow(c)
    similar = index_lda[lda[c_vectorise]]
    #print(similar)
    rel_index.append(np.median(similar)) 

我的测试集做了类似的事情,我绘制了相似度的直方图。

现在,我想使用Word2vec重新创建它。以下代码是我训练word2vec模型的方式。

word2vec = Word2Vec(sentences=lemmatized, window=5, min_count=5, workers=4, sg=0)
index2word_set = set(word2vec.wv.index2word)
word2vec.save('.../Code/w2v.path')
word_vectors = word2vec.wv 

我不确定要去哪里计算余弦相似度。

0 个答案:

没有答案