使用word2vec的k-means:找到离质心最近的单词



我使用word2vec对文本进行矢量化,然后使用k-means对使用scikit-learn的文本进行聚类。聚类后,我如何获得最接近每个聚类质心的前5个或10个单词?我可以得到聚类中的所有单词,但不能得到最接近的单词。当我使用tf-idf矢量器时,它是直接的,因为tf-idf中的每个特征都映射到一个单词,但word2vec

不是这样的

下面是我如何使用word2vec的k-means

model = gensim.models.Word2Vec.load('w2v.mdel')
word_vectors =  vecTransform(input) #Convert input text to word vectors
km = KMeans(n_clusters=5)
idx = km.fit_predict(word_vectors)

实际上,重要的是vecTransform。如果对于给定的文本文档,您对它包含的单词的w2v表示进行平均以获得文档表示,那么您仍然处于与初始w2v向量相同维度的空间中。因此,给定k-means算法的质心(km.cluster_centers_,因为您似乎使用sklearn实现),您可以找到最接近这些质心的单词。然而,我确信它们是多么有意义,特别是如果文档包含几个单词,并且您使用所有的平均过程。

最新更新