我正在研究一个将相似的文本标记聚类的项目。目的是将可能是拼写错误的标记以及具有相似拼写的标记分组。这是我的数据片段和预期的聚类:
John (cluster 1)
Mike (cluster 2)
Joe (cluster 1)
Jon (cluster 1)
Jony (cluster 1)
Ajon (cluster 1)
Brown (cluster 3)
我只是在集群上大吃一惊,所以我不确定如何才能实现这一目标。通过ScikitLearn中的各种聚类技术,我遇到了AffinityPropagation来预先计算相似度,但是对于大型数据集(我有大约200k令牌),它是不可行的。所有其他聚类算法都需要向量,但是我不确定如何从这些标记生成特征。
这里的任何指导都是非常有意义的。
谢谢
答案 0 :(得分:2)
您需要一个相似度函数来编码这样的直觉,即仅几个字母不同的标记可能是拼写错误。
您可以这样做的一种方式:
您可以将每个令牌转换为具有26个维度的矢量(每个字母一个),每个元素代表给定字母出现在令牌中的次数。
在一个特征空间中,只有一个字母不同的标记(可能是拼写错误)将紧密靠近,因为数组中只有一个元素会有所不同。
答案 1 :(得分:0)
我认为您不应该在这里进行群集。
因为像k-mrans这样的方法 force 每个点都变成了一个“集群”。那可能不是您想要的。
您还将遇到一个问题,即几乎所有事物都是“相似的”。在很多游戏中,您必须一次将一个单词变成另一个字母。
不稳定的尝试首先确定一些好的值(例如,按频率),然后再决定以何种容忍度合并替代方案。但是没有传递操作。这比群集和更快更简单。