如何将相似的文本标记聚类

时间:2018-11-04 17:27:32

标签: text scikit-learn cluster-analysis

我正在研究一个将相似的文本标记聚类的项目。目的是将可能是拼写错误的标记以及具有相似拼写的标记分组。这是我的数据片段和预期的聚类:

John (cluster 1)
Mike  (cluster 2)
Joe  (cluster 1)
Jon  (cluster 1)
Jony  (cluster 1)
Ajon  (cluster 1)
Brown  (cluster 3)

我只是在集群上大吃一惊,所以我不确定如何才能实现这一目标。通过ScikitLearn中的各种聚类技术,我遇到了AffinityPropagation来预先计算相似度,但是对于大型数据集(我有大约200k令牌),它是不可行的。所有其他聚类算法都需要向量,但是我不确定如何从这些标记生成特征。

这里的任何指导都是非常有意义的。

谢谢

2 个答案:

答案 0 :(得分:2)

您需要一个相似度函数来编码这样的直觉,即仅几个字母不同的标记可能是拼写错误。

您可以这样做的一种方式:

您可以将每个令牌转换为具有26个维度的矢量(每个字母一个),每个元素代表给定字母出现在令牌中的次数。

在一个特征空间中,只有一个字母不同的标记(可能是拼写错误)将紧密靠近,因为数组中只有一个元素会有所不同。

答案 1 :(得分:0)

我认为您不应该在这里进行群集。

因为像k-mrans这样的方法 force 每个点都变成了一个“集群”。那可能不是您想要的。

您还将遇到一个问题,即几乎所有事物都是“相似的”。在很多游戏中,您必须一次将一个单词变成另一个字母。

不稳定的尝试首先确定一些好的值(例如,按频率),然后再决定以何种容忍度合并替代方案。但是没有传递操作。这比群集和更快更简单。