文本聚类应用程序含义

时间:2016-03-09 15:11:46

标签: python text scikit-learn cluster-analysis lsa

在scikit-learn网站上有一个应用于文本挖掘的k-means的例子。感兴趣的摘录如下:

if opts.n_components:
    original_space_centroids = svd.inverse_transform(km.cluster_centers_)
    order_centroids = original_space_centroids.argsort()[:, ::-1]
else:
    order_centroids = km.cluster_centers_.argsort()[:, ::-1]

terms = vectorizer.get_feature_names()
for i in range(true_k):
    print("Cluster %d:" % i, end='')
    for ind in order_centroids[i, :10]:
        print(' %s' % terms[ind], end='')
    print()

link示例)

我的第一个问题是关于km.cluster_centers_。每个术语实际上都是一个维度,因此按术语的聚类中心值是术语维度中每个聚类的“位置”。这些值是否已排序,因为每个术语维度中特定术语的较高值表示表示群集的术语的“强度”?如果是这样,请解释为什么会这样。

其次,该算法提供了在聚类之前对术语文档矩阵执行LSA的选项。我是否可以假设这通过维度的正交性来帮助每个聚类的唯一性?或者还有其他什么呢?在聚类之前执行SVD是否典型?

提前致谢!

1 个答案:

答案 0 :(得分:0)

让我们从问题一开始吧!每个km.cluster_centers_代表“术语频率空间”中群集的中心。在这些上执行a(在这种情况下反向)argsort给出了这些聚类中心具有最高频率的项,因为高数字表示更高的项频率。反过来也会很有趣,它会显示集群频率较低的术语。

tl; dr :对字词进行排序,以显示群集中频率最高的字词

现在是第二个问题。来自LSA的组件是正交的,但这并不意味着使用LSA的数据投影是正交的。 LSA已经被用作降维技术,所以基本上它摆脱了你的术语矩阵中没有意义的信息,这意味着聚类应该提供更多信息,因为它们不是来自潜在的嘈杂的功能。在群集之前执行维数降低实际上取决于您的数据,但通常它不会受到影响,但它会为任何计算增加时间。

tl; dr 没有使用LSA来减少尺寸以改善聚类。

希望有所帮助。