为啥我的文本聚类会这样做

Posted

技术标签:

【中文标题】为啥我的文本聚类会这样做【英文标题】:Why does my text clustering do this为什么我的文本聚类会这样做 【发布时间】:2017-02-09 14:13:30 【问题描述】:

我有一个带有产品名称的未标记数据集。比如棒球衫、飞行员夹克、现役经典拳击手等。

我用数据创建了一个 tf-idf 矩阵,然后我在矩阵上运行了 k-means。我绘制了一个簇内平方和,以找到最好的 k,即 5。

聚类后我发现了文档之间的余弦相似度

# cosine similarity between each document
from sklearn.metrics.pairwise import cosine_similarity
dist = 1.0 - cosine_similarity(tfidf_matrix)
print dist

然后我在 dist 上使用 MDS 将其缩减为二维,以便我可以绘制集群

from sklearn.manifold import MDS
mds = MDS(n_components=2, dissimilarity="precomputed", random_state=1)
xs, ys = pos[:, 0], pos[:, 1]

除了圆周之外,聚类图看起来还不错。它这样做有什么原因吗?其余的集群似乎都聚集在一个相似的区域周围。

【问题讨论】:

【参考方案1】:

TF-IDF 仅适用于长文本

正因为如此,几乎每个文档都完全不同,它们像这样“散开”。

我怀疑 k-means 是否也有效。

【讨论】:

那么这是否意味着那些不在圆周上的不是完全不同的,是长文本? 研究它们,你有数据。我假设这里的大多数文本与任何其他文本完全不同,因此可视化尝试将它们均匀地隔开(“统一”)。要使 TF-IDF 正常工作,您的文本应该有 100 多个单词每个

以上是关于为啥我的文本聚类会这样做的主要内容,如果未能解决你的问题,请参考以下文章

机器学习入门-文本数据-使用聚类增加文本的标签属性

分布式文本聚类框架

文本聚类和主题提取

推荐系统中的产品聚类:一种文本聚类的方法

如何正确使用 scikit-learn 进行文本聚类

Sklearn Pipeline:如何构建kmeans,聚类文本?