这是一个家庭作业问题。我有一个充满文字的巨大文件。我的挑战是将这些单词分类为充分代表单词的不同组/群。我处理它的策略是使用K-Means算法,如您所知,采用以下步骤。
理论上,我有点得到它,但并不完全。我想在每一步,我都有与之相对应的问题,这些是:
我如何决定k随机方法,技术上我可以说5,但这可能不一定是一个好的随机数。那么这个k纯粹是一个随机数,还是实际上是由启发式驱动的,例如数据集的大小,所涉及的单词数等等。
如何将每个单词与最近的平均值相关联?从理论上讲,我可以得出结论,每个单词的距离与最近的均值相关联,因此,如果有3个均值,任何属于特定聚类的单词都取决于它具有最短距离的平均值。但是,这实际上是如何计算的?在两个单词“group”,“textword”和假设一个平均单词“pencil”之间,如何创建相似度矩阵。
如何计算质心?
当您重复步骤2和步骤3时,您假设每个先前的群集都是新数据集吗?
很多问题,我显然不清楚。如果有任何我可以阅读的资源,那就太好了。维基百科还不够:(
答案 0 :(得分:11)
由于您不知道确切的群集数量 - 我建议您使用一种层次聚类:
这是一个小例子:
P.S。你可以在网上找到很多论文,其中描述了基于最小生成树构建的聚类
P.P.S。如果要检测语义相似字词的群集,则需要一些自动词库构造
的算法答案 1 :(得分:0)
你必须为k-means选择“k”是k-means的最大缺点之一。 但是,如果你在这里使用搜索功能,你会发现一些问题,这些问题涉及选择k的已知启发式方法。主要是通过多次比较运行算法的结果。
至于“最近”。 K-means实际上不使用距离。有些人认为它使用的是欧几里得,其他人说它是欧几里德的平方。从技术上讲,k-means感兴趣的是方差。它通过将每个对象分配给集群以使方差最小化来最小化整体方差。同样地,平方偏差的总和 - 一个对象对总方差的贡献 - 在所有维度上正好是欧氏距离平方的定义。由于平方根是单调的,你也可以使用欧氏距离。
无论如何,如果你想使用带有单词的k-means,你首先需要将这些单词表示为平方欧几里德距离有意义的向量。我认为这不容易,甚至不可能。
答案 2 :(得分:0)
关于距离:实际上,Levenshtein(或编辑)距离满足三角不等式。它还满足其他必要属性成为度量(并非所有距离函数都是度量函数)。因此,您可以使用此度量函数实现聚类算法,这是您可以用来计算相似度矩阵S的函数:
- > S_ {i,j} = d(x_i,x_j)= S_ {j,i} = d(x_j,x_i)
值得一提的是,Damerau-Levenshtein距离不满足三角不等式,所以要小心。
关于k-means算法:是的,在基本版本中,您必须手动定义K参数。对于给定的度量,算法的其余部分是相同的。