用于文本聚类的 k-means

k-means for text clustering

我正在尝试为文本聚类实施 k-means,特别是英语句子。到目前为止,我对每个文档(句子)都有一个术语频率矩阵。我对 k-means 在文本数据上的实际实现有点困惑。这是我对它应该如何工作的猜测。

  1. 算出所有句子中唯一单词的个数(很大的一个数,称之为n)。

  2. 创建 k n 维向量(簇)并用一些随机数填充 k 向量的值(我如何决定这些数字的界限是?)

  3. 确定每个q句子到随机k簇、重新定位簇等的欧氏距离(如果n非常大像英语,计算这些向量的欧几里德距离不会很费钱吗?)

感谢您的任何见解!

评论有点长

如果您有文档术语矩阵,请找到(协方差矩阵的)主成分。确定原始数据在主成分中的系数space。您可以在此 space.

中进行 k 均值聚类

对于文本数据,您通常需要一堆维度——20、50、100,甚至更多。另外,我会推荐高斯混合 models/expectation-maximization 聚类而不是 k-means,但那是另一回事了。

在这里重新提出一个有点老的问题,但值得将两者联系起来...

通常,您会使用某种 locally-sensitive 散列法而不是依赖单词出现的频率。但无论哪种方式,手动组装特征矩阵都是一件非常麻烦的事情。

指导您如何使用 scikit-learn 从文档列表创建特征矩阵,并解释了这些步骤。我认为它会帮助您了解所需步骤的顺序。