0

我们正在办公室开发一个小型自动分类系统。

我们有很多过滤器。它们被编写为 python 函数,它们要么匹配文件 - 要么不匹配。

对于每个文件,我们运行所有过滤器。它从上到下扫描文件,如果匹配过滤器 - 文件将被分类,日志文件将包含文件的路径和类别的名称。

每个文件必须只属于一个类别。

对于每个文件,我们运行所有过滤器并生成一个大的 excel 文件,其中包含每个文件,所有过滤器都适用于该文件。

文件名 | 过滤器的名称,例如,文件如下所示:

  • 测试.docx | 财务报告
  • 测试.docx | 普通文件
  • 通过.txt | 密码文件

等等等等。如您所见,一个文件可以匹配多个过滤器。

我们需要基于这个文件工作(因为我们无法访问过滤器本身),并生成一个过滤器列表,以便每个过滤器不会匹配超过 100 个文件 - 即使这意味着某些文件不会分类。当然,我们希望每个过滤器只匹配少量文件。

行日志文件的顺序很重要。在示例日志文件中,如果“财务报告”和“普通文档”过滤器都打开,它将始终被归类为第一个匹配项 - “财务报告”。

有任何想法吗?

4

1 回答 1

0

您可以尝试保持对过滤器的命中计数,并为每个评估的文件,将其标记为具有最低命中计数的过滤器。这种策略倾向于将命中分布在过滤器周围。

您还可以进行多次传递,以便在第一次传递中计算出每个文件匹配的过滤器数量,然后根据过滤器命中数对它们进行排序。然后,您可以丢弃针对更常见过滤器的匹配项,并为那些过滤器匹配计数高的文件保留不常见的过滤器。

你还应该研究图论算法;您也许可以将此问题转换为类似的图论问题。

话虽如此,您可能想首先检查为什么要使用此策略进行自动分类,因为 100 次匹配似乎有点随意。最后,我怀疑您不会为这项任务找到确定性算法。我觉得它是 NP 完全的,或者至少是 NP 难的。

于 2013-02-14T23:51:33.890 回答