-1

我正在处理数十万个文件。以后可能会有数百万。坏文件将包含 Excel 电子表格的文本版本或其他不是二进制但也不是句子的文本。这些文件会导致 CoreNLP 崩溃(从技术上讲,这些文件需要很长时间来处理,例如每千字节文本需要 15 秒。)我很想检测这些文件并在亚秒级时间内丢弃它们。

我正在考虑随机抽取几千个文件,检查前 200 个字符并寻找字符分布以确定什么是合法的,什么是异常值。例如,如果没有标点符号或标点符号太多。这看起来是个好方法吗?有没有更好的已经被证明的?我认为,当然,这会很好地工作,可能会丢弃潜在的好文件,但很少。

另一个想法是简单地使用注释器进行标记和分割并进行单词和句子计数。这似乎也做得很好,并且很快就会返回。我可以想到这也可能失败的情况。

4

4 回答 4

1

这种处理流水线始终处于不断改进的状态。为了开始这个过程,我要构建的第一件事是围绕 CoreNLP 的时序行为的工具。如果 CoreNLP 花费的时间太长,请将有问题的文件踢出到单独的队列中。如果这还不够好,您可以为耗时过长的队列中最常见的事物编写识别器,并在它们到达 CoreNLP 之前转移它们。这种方法的主要优点是它可以处理您事先不期望的输入。

于 2012-11-05T22:09:10.570 回答
1

此类问题有两种主要方法。

第一种是采用您正在考虑的方法,在该方法中检查文件的内容并根据对文件中数据的统计分析来决定它是否是可接受的文本。

第二种方法是使用某种元标记,例如文件扩展名,以至少消除那些肯定会成为问题的文件(.pdf、.jpg 等)。

我建议将这两种方法混合使用,以减少处理量。

您可能会考虑一种管道方法,其中您有一系列测试。第一个测试根据文件扩展名等元数据过滤掉文件,第二步然后对文件的前几个字节进行初步统计检查以过滤出明显的问题文件,第三步进行更复杂的统计分析文本,第四个处理 CoreNLP 拒绝步骤。

您没有说明文件的来源,也没有说明是否有任何语言方面的考虑(英语与法语与简体中文文本)。例如,可接受的文本文件是否使用 UTF-8、UTF-16 或其他一些文本编码?

CoreNLP 应用程序是否可以更优雅地检测和拒绝不兼容的文本文件?

于 2012-11-05T22:18:13.200 回答
1

你不能只训练一个朴素贝叶斯分类器来识别坏文件吗?对于功能,使用标点符号的(合并)百分比、数字字符的百分比和平均句子长度等。

于 2012-11-09T02:34:23.203 回答
-1

彼得,

您显然正在处理电子发现的文件。一切皆有可能,如您所知,任何被踢出的东西都必须记录为异常。我遇到过这个问题,并且从其他分析处理器那里听到了同样的情况。

上面的一些解决方案,预处理和在线可以提供帮助。在某些 ediscovery 解决方案中,将文本转储到 SQL 中的字段中并截断或以其他方式截断可能是可行的,并且仍然可以获得您需要的内容。在其他应用程序中,与语义聚类或预测编码有关的任何事情,最好使用使用元数据(例如文件类型)、文档类型分类库和基于先前示例、当前采样或您最好的实体提取的预过滤器猜测“坏文件”内容的性质。

祝你好运。

于 2013-11-03T17:11:55.770 回答