我们正在办公室开发一个小型自动分类系统。
我们有很多过滤器。它们被编写为python函数,它们或者匹配文件 - 或者不匹配。
对于每个文件,我们运行所有过滤器。它从上到下扫描文件,如果它与过滤器匹配 - 文件将被分类,日志文件将具有文件的路径和类别的名称。
每个文件必须只属于一个类别。
对于每个文件,我们运行了所有过滤器并生成了一个包含每个文件的大型Excel文件,所有过滤器都适用于此文件。
文件名|过滤器的名称,例如,文件如下所示:
依旧等等。 如您所见,一个文件可以匹配多个过滤器。
我们需要基于此文件工作(因为我们无权访问过滤器本身),并生成过滤器列表,以便每个过滤器不会匹配超过100个文件 - 即使它意味着一些文件不会被分类。当然,我们预计每个过滤器只会匹配少量文件。
行日志文件的顺序很重要。在示例日志文件中,如果“财务报告”和“正常文档”过滤器都打开,它将始终被归类为第一个匹配 - “财务报告”。
有什么想法吗?
答案 0 :(得分:0)
您可以尝试保持针对过滤器的点击次数,并针对评估的每个文件,将其标记为具有最低点击次数的过滤器。这种策略倾向于在过滤器周围传播命中率。
您还可以执行多次传递,以便在第一次传递中,您可以计算出每个文件匹配的过滤器数量,然后根据过滤器命中数对它们进行排序。然后,您可以针对更常见的过滤器丢弃匹配项,并为具有高过滤器匹配次数的文件保留不常用的过滤器。
你还应该研究图论算法;您可能能够将此问题转换为类似的图论问题。
话虽如此,您可能想要首先检查一下为什么要使用此策略进行自动分类,因为100次匹配似乎有点武断。最后,我怀疑你找不到这个任务的确定性算法。我感觉它是NP完全的,或者至少是NP难的。