我试图为文本聚类实现k-means,特别是英语句子。到目前为止,我的每个文档(句子)都有一个术语频率矩阵。我对文本数据的k-means的实际实现有点困惑。这是我对它应该如何运作的猜测。
计算所有句子中的唯一单词数量(大数字,称之为n
)。
创建k
n
维度向量(群集)并使用一些随机数填充k
向量的值(如何确定这些数字的界限)是?)
确定每个q
句子到随机k
群集,重新定位群集等的欧几里德距离(如果n
非常大,就像英语一样,不计算这些向量的欧几里德距离是非常昂贵的吗?)
感谢您的任何见解!
答案 0 :(得分:1)
评论时间有点长。
如果您有文档术语矩阵,则找到(协方差矩阵的)主成分。确定主成分空间中原始数据的系数。你可以在这个空间里进行k-means聚类。
对于文本数据,您通常需要一堆维度--20,50,100甚至更多。另外,我建议使用高斯混合模型/期望最大化聚类而不是k均值,但这是另一个故事。
答案 1 :(得分:1)
在这里重新提出一个稍微陈旧的问题,但值得将两者联系起来......
通常,您使用某种本地敏感的散列而不是依赖于单词出现的频率。但无论哪种方式,手动组装特征矩阵都是一个巨大的麻烦。
这个SO answer为您提供了如何使用scikit-learn和解释步骤从文档列表创建特征矩阵的指南。我认为它会帮助您了解所需的步骤顺序。