2013-02-14 26 views
0

我们正在研究办公室中的一个小型自动分类系统。选择要激活的文本过滤器

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

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

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

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

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

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

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

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

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

任何想法?

+0

老实说,我不知道你想达到什么。你能否详细说明一下?这看起来有点像我的[集群](http://en.wikipedia.org/wiki/Cluster_analysis)问题,但我不确定...当你说“生成过滤器列表”时,你的意思是什么?从集合中选择一些过滤器?用“AND”,“OR”和/或“NOT”结合现有的过滤器?还有别的吗? – mgibsonbr 2013-02-14 23:51:09

回答

0

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

您也可以执行多次传递,以便在第一次传递时,您可以计算出每个文件匹配的筛选数量,然后根据筛选计数对它们进行排序。然后,您可以放弃与更常用的过滤器匹配,并为那些具有较高过滤器匹配数的文件保留不常见的过滤器。

你还应该研究图论算法;你可能能够将这个问题转化为类似的图论问题。

说了这些之后,您可能首先要研究为什么您使用此策略进行自动分类,因为100个匹配看起来有点随意。最后,我怀疑你不会为此任务找到确定性算法。我有一种感觉,它是NP完全的,或者至少是NP-hard。