我正在处理数十万个文件。潜在的数百万之后的道路上。坏文件将包含Excel电子表格的文本版本或其他不是二进制文件的文本,但也不是句子。这样的文件会导致CoreNLP崩溃(从技术上讲,这些文件需要很长时间才能处理,例如每千字文本15秒)。我很想检测这些文件并在次秒内丢弃它们。有没有一种方法来确定一个文档是否是一个文本句子文件?
我正在考虑的是随机抽取几千个文件,检查第一个200个字符并查找字符分布以确定什么是合法的以及什么是异常值。例如,如果没有标点符号或太多标点符号。这似乎是一个好方法吗?有更好的证明吗?我认为,当然,这将工作得很好,可能会抛出潜在的好文件,但很少。
另一个想法是简单地运行注释器tokenize和ssplit,并做单词和句子计数。这似乎也做得很好,并很快返回。我可以想到可能会失败的情况。
我少担心比约不抛出潜在的不良档案投出潜在的好文件。你应该也可以检查行和字的长度。为了好奇,为什么系统中存在“坏”文件? (我认为你的方法应该可行,但实际上你应该实施它并试图让它失败)。虽然我不太确定这是否是一个好问题。 – Cubic
刚刚读取文件的最后几个字节呢?我认为有一些特殊的格式是特定于excel文件的,这些格式与编码有关。 – calderonmluis
也许更容易找到“Excel电子表格的文本版本”的签名?那里一定有一些文件头或页脚数据? – whiskeyspider