我希望根据标签对许多提要进行聚类。 一个典型的例子是推特提要。每个提要都有与之关联的用户定义标签。通过分析标签,是否有可能将提要聚类到不同的组中,并告诉这么多提要基于这么多标签。 一个例子是 -
- Feed1 - 印度尼西亚地震 #earthquake #asia #bad
- Feed2 - 我所在地区发生大地震#earthquake #bad
- Feed3 - 我 parent 去了新加坡#asia #tour
- Feed4 - XYZ 公司正在裁员#XYZ #layoff#bear
- Feed5 - XYZ 正计划裁员 #XYZ #layoff#bad
- Feed6 - XYZ 裁员狂潮 #layoff#XYZ #worst
聚类后
- #asia , # earthquake - Feed1 , Feed2
- #XYZ,#layoff - Feed4,Feed 5,Feed6
这里的聚类完全基于标签。 有什么好的算法可以实现吗
最佳答案
如果我对您的问题的理解正确,您希望将标签聚类在一起,然后根据提要中的标签将提要放入这些聚类中。
为此,您可以根据标签一起出现的提要数量在标签之间创建相似性度量。对于您的示例,这将是这样的
#earthquake | #asia | #bad | ...
#earthquake 1 | 1/2 | 2/2
#asia 1/2 | 1 | 1/2
#bad 2/3 | 1/3 | 1
...
此处,(i,j)
处的值等于(i,j) 的频率/(i) 的频率
。
现在您有了标签之间的相似度矩阵,您几乎可以使用任何适合您需要的聚类算法。由于标签的数量可能非常大,并且在运行算法之前很难估计集群的数量,我建议使用一些分层集群算法,如 Fast Modularity 集群,它也非常快 (See some details here)。但是,如果您对要将其分成的聚类数量有一些估计,那么光谱聚类也可能有用 ( See some details here )。
将标签聚类后,您可以使用一种简单的方法将每个提要分配到一个聚类。这可以非常简单,例如,计算提要中每个集群的标签数量,并分配具有最大匹配标签数量的集群。
如果您的聚类策略很灵活,那么您也可以尝试以类似的方式将 Feed 聚类在一起,方法是根据 Feed 之间的公共(public)标签数量创建 Feed 之间的相似性,然后对 Feed 应用聚类算法相似度矩阵。
关于algorithm - 基于标签的聚类算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877083/