具有百分比匹配的文本数据的 Kmeans 聚类

Kmeans clustering of text data with percentage match

我有数百个大字符串,想将它们聚类成组(集群)。我发现 kmeans 是执行此操作的一种方法。但我的问题是它只需要簇的数量作为参数。但是我的要求是将字符串之间的百分比匹配作为参数,并且仅将那些满足或超过该标准的字符串聚类到不同的聚类中。例如,如果字符串 1 和 2 匹配 >90%,那么只有我希望它们在一个簇中。不匹配的可以放在单元素簇中。有没有办法在 R r Python 或任何语言中做到这一点?

聚类算法

k-均值

顾名思义,k-means 将尝试创建 k 个聚类,并将使用聚类中所有值的平均值作为聚类的中心。然后你更新中心的位置,将属性元素更新到最近的中心,并重复直到它不再改变。 如您所见,您只需定义中心的数量(及其起点,但通常这是随机的并重复多次)。

您的分类

你想要的是根据阈值将彼此非常相似的词聚类。 你总是可以通过计算元素之间的距离(距离是你的相似性)来做到这一点。 伪代码为:

1) initialize cluster with first word
2) add all words to cluster that are "close enough" to this word
3) pick a word that has not been clustered yet, and initialize a new cluster with it
4) add all words "close enough" to this word
5) repeat 3 and 4 until all words are used