集群文件名图形以重新组合文件夹中的文件

时间:2014-07-29 20:42:41

标签: algorithm cluster-analysis

我正在为文件夹层次结构中找到的类似文件名的(模糊)聚类寻找已知的好算法。

为了保持SO规则和精神,让我详细解释一下背景,以便你的答案可以简洁而不是通用。


上下文

我的目标是开发一个应用程序:

  • 获取一组文件(内容和名称)
  • 将文件名与识别群集
  • 进行比较
  • 比较内容以查找重复项(这是不在范围内)
  • 建议文件删除和文件重新组合基于已识别的群集和相同的内容。

例如,给定3个文件夹:

  • folder 1file_1file_7file_23,...
  • folder 2file_1的副本,...
  • folder 3file_5,...

我建议:

  • 删除file_1folder 2的副本,而不是folder 1中的副本,因为folder 1中的群集中有较大部分。
  • file_5folder 3移至folder 1,因为它会扩展现有群集。

我读过两个概念:

我假设我能够创建一个图表,其中节点是文件名,边缘是距离(我已经发布了separate question用于距离计算。)

似乎this kind of algorithm可以从此图表中找到群集。


问题

作为一名程序员,而不是数学家,我希望能找到一些最佳方向的建议,以寻找适用于这种特定聚类文件名的有效聚类算法(基于具有可比目标的现有项目)。

1 个答案:

答案 0 :(得分:1)

由于您正在寻找良好的聚类算法,我不会进入文本和文档的相似性分数。但是,您可以在Natural Language Processing中找到有用的研究材料。当涉及文档的上下文时,您甚至可以Topic Modeling

听起来你不想在算法中挖掘太多数学。我将建议一个简单的方法(下面)。

假设您已获得阈值相似度图,则该图可以表示为矩阵或列表字典。在阈值处理后,图形可以是稀疏的或密集的。

如果它非常密集,请尝试Spectral Clustering

如果稀疏,请尝试Affinity Propagation

它们都有很好的文档记录,并在数据科学中使用的大多数编程语言中实现。例如,在Python中,您有Scikit-Learn;在R中,您有This

您提出的有趣概念。祝你好运!