我正在处理数十万个文件。可能数百万美元后来在路上。坏文件将包含excel电子表格的文本版本或非二进制但不是句子的其他文本。这样的文件导致CoreNLP爆炸(从技术上讲,这些文件需要很长时间才能处理,例如每千字节文本需要15秒。)我很想检测这些文件并在亚秒内丢弃它们。
我正在考虑的是随机抽取几千个文件,检查第一个,比方说200个字符并寻找字符的分布以确定什么是合法的,什么是异常值。例如,如果没有标点符号或太多标点符号。这看起来像是一个好方法吗?有没有更好的证明?我认为,当然,这将运作良好,可能会抛出可能很好的文件,但很少。
另一个想法是简单地使用注释器tokenize和ssplit运行并进行单词和句子计数。这似乎做得很好并且回复很快。我可以想到可能会失败的情况。
答案 0 :(得分:1)
这种处理流程始终处于持续改进的状态。为了启动这个过程,我要构建的第一件事是围绕CoreNLP的计时行为的工具。如果CoreNLP耗时太长,请将违规文件踢出一个单独的队列。如果这还不够好,您可以为需要太长时间的队列中最常见的事情编写识别器,并在它们命中CoreNLP之前转移它们。这种方法的主要优点是它可以使用您事先没有预料到的输入。
答案 1 :(得分:1)
这种问题有两种主要方法。
第一种方法是采用您正在考虑的方法,在该方法中检查文件的内容,并根据文件中数据的统计分析来确定文本是否可接受。
第二种方法是使用某种元标记(例如文件扩展名)来至少消除那些肯定是个问题的文件(.pdf,.jpg等)。
我建议将这两种方法混合使用,以减少处理量。
您可能会考虑使用管道方法进行一系列测试。第一个测试基于元数据(例如文件扩展名)筛选出文件,第二步然后对文件的前几个字节进行初步统计检查以过滤掉明显的问题文件,第三步执行更复杂的统计分析文本,第四个处理CoreNLP拒绝步骤。
您没有说文件的来源,也没有任何语言考虑因素(英语与法语和简体中文文本)。例如,使用UTF-8,UTF-16或其他文本编码的可接受文本文件是什么?
CoreNLP应用程序是否可以更加优雅地检测和拒绝不兼容的文本文件?
答案 2 :(得分:1)
你能不能训练朴素贝叶斯分类器识别坏文件?对于要素,请使用(分类)标点符号百分比,数字字符百分比和平均句子长度等内容。
答案 3 :(得分:-1)
彼得,
您正在处理文件以进行电子发现。任何事情都是可能的,如你所知,任何被踢出的东西都必须作为例外记录。我已经遇到过这种情况,并且从其他分析处理器那里听到了同样的消息。
上面的一些解决方案,预处理和内联可以提供帮助。在某些电子发现解决方案中,将文本转储到SQL中的字段并截断或以其他方式截断,仍然可以获得所需内容是可行的。在其他应用程序中,与语义聚类或预测编码有关,最好使用预先过滤器,使用元数据(例如文件类型),文档类型分类库,以及基于先前示例,当前采样或您最好的实体提取猜测“坏文件”内容的性质。
祝你好运。