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

Posted

技术标签:

【中文标题】k-means 使用 word2vec :找到离质心最近的词【英文标题】:k-means using word2vec : Find nearest words to centroids 【发布时间】:2017-03-10 10:18:28 【问题描述】:

我使用 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)

【问题讨论】:

这真的取决于你如何使用 word2vec 来矢量化文本。你能详细说明一下吗? @geompalik 我现在已经添加了我的代码 【参考方案1】:

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

【讨论】:

是的。我正在平均文档中所有单词的所有 w2v。你能建议一个更好的方法吗? 先验这将是另一个问题。在我看来,嵌入中的组合性并不是一个已解决的问题。不过,我还没有理解你想要达到的目标。

以上是关于k-means 使用 word2vec :找到离质心最近的词的主要内容,如果未能解决你的问题,请参考以下文章

如何在sklearn中检查k-means中给定向量的集群细节

如何使用 word2vec 找到最接近向量的单词

找到 K-means 集群中的最小方差

实施肘部方法以找到 R 中 K-Means 聚类的最佳聚类数 [关闭]

如何在 Python 中使用 K-Means 聚类找到最佳的聚类数量

如何使用 Word2Vec 获取单词列表的向量?