Scikit learn k-means使用word2vec:查找距离质心最近的单词

Scikit learn k-means使用word2vec:查找距离质心最近的单词,scikit-learn,nlp,k-means,word2vec,Scikit Learn,Nlp,K Means,Word2vec,我使用word2vec对文本进行矢量化,然后使用scikit learn对文本进行聚类。聚类后,如何获得最靠近每个聚类中心的前5个或10个单词?我能够获取集群中的所有单词,但无法获取最近的单词。当我使用tf-idf矢量器时,这是直截了当的,因为tf-idf中的每个功能都映射到一个单词,但word2vec却不是这样 下面是我如何使用word2vec表示k-means的 model = gensim.models.Word2Vec.load('w2v.mdel') word_vectors = v

我使用word2vec对文本进行矢量化,然后使用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\u centers\u
,就像您使用的
sklearn
实现一样),您可以找到最接近这些质心的单词。。然而,我确信它们是多么有意义,特别是如果文档包含几个单词,并且您使用了所有这些单词来计算平均值

这实际上取决于如何使用word2vec对文本进行矢量化。你能详细解释一下吗?@geompalik我现在已经添加了代码是的。我计算了文档中所有单词的w2v的平均值。你能建议一个更好的方法吗?这是另一个问题。在我看来,嵌入中的组合性并不是一个已解决的问题。但我还不明白你想要实现什么。