我试图在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
我不确定要去哪里计算余弦相似度。