选择要激活的文本过滤器

时间:2013-02-14 23:39:54

标签: python algorithm filter

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

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

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

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

对于每个文件,我们运行了所有过滤器并生成了一个包含每个文件的大型Excel文件,所有过滤器都适用于此文件。

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

  • test.docx |财务报告
  • test.docx |普通文件
  • pass.txt |密码文件

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

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