Text 如何对相似的文本标记进行集群

Text 如何对相似的文本标记进行集群,text,scikit-learn,cluster-analysis,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中的各种聚类技术,我遇到了Af

我正在做一个项目,对类似的文本标记进行集群。目的是将可能是拼写错误的标记和具有相似拼写的标记进行分组。以下是我的数据片段和预期的集群化:

John (cluster 1)
Mike  (cluster 2)
Joe  (cluster 1)
Jon  (cluster 1)
Jony  (cluster 1)
Ajon  (cluster 1)
Brown  (cluster 3)
我只是在尝试集群化,所以我不确定如何才能实现这一点。通过查看ScikitLearn中的各种聚类技术,我遇到了AffinityPropagation来预计算相似度,但它对于大型数据集来说并不可行(我有大约200k个标记)。所有其他聚类算法都需要向量,但我不确定如何从这些标记生成特征

这里的任何指导都将非常感谢


谢谢你

你需要一个相似性函数来编码直觉,即只有几个字母不同的标记可能是拼写错误

一种方法是:

您可以将每个标记转换为26维的向量(每个字母一个),每个元素表示给定字母在标记中出现的次数


只有一个字母不同的标记(可能拼写错误)将在该功能空间中靠得很近,因为数组中只有一个元素是不同的。

我不认为在这里应该进行聚类

因为像k-mrans这样的方法将每个点强制成一个“簇”。这可能不是你想要的

你也会遇到这样一个问题,即在过渡过程中,几乎所有事情都是“相似的”。在很多游戏中,你必须一次将一个单词转换成另一个字母


尝试首先确定一些好的值(例如,通过频率),然后决定合并备选方案的容差。但是没有传递操作。这比集群更简单、更快。

这些标记的来源是什么?例如,您可以为每个令牌生成一个嵌入(浮点值的密集向量),并使用这些向量作为聚类算法的输入。谢谢,这听起来是一个有趣的方法。让我明天试一试。好吧,乔恩和乔有两个共同点。但“一”和“尼奥”三者都有共同之处。字母直方图可以用于语言检测,但我不会将其用于相似性。至少,使用字母bigrams或trigrams。。。