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中给定向量的集群细节
实施肘部方法以找到 R 中 K-Means 聚类的最佳聚类数 [关闭]