从数百万个简单但不一致的文本文件中提取信息

时间:2011-05-06 20:53:07

标签: data-modeling data-mining information-extraction

我们有数百万个简单的txt文档,其中包含我们从pdf中提取的各种数据结构,文本是逐行打印的,因此所有格式都丢失了(因为当我们尝试使用工具来维护格式时,他们只是搞砸了它)。我们需要从这个文本文档中提取字段和值,但这些文件的结构存在一些变化(这里和那里有新行,某些工作表上有噪音,因此拼写不正确)。

我在想我们会创建某种模板结构,其中包含有关关键字和值的坐标(行,单词/单词数)的信息,并使用此信息来定位和收集关键字值,使用各种算法来弥补格式不一致。

有没有任何标准方法可以做到这一点,任何可能有帮助的链接?还有其他想法吗?

5 个答案:

答案 0 :(得分:1)

使用像agrep这样的模糊文本匹配工具可以纠正或忽略噪音:http://www.tgries.de/agrep/ 但是,额外换行的问题仍将存在。

我建议的一种技术是以与编译器类似的方式限制错误传播。例如,您尝试匹配模板或模式,但您不能这样做。在文本的后面有一个确定的匹配,但它可能是当前不匹配模式的一部分。 在这种情况下,应该接受确定匹配,并且应该将未匹配的文本块留在一边以备将来处理。这将使您能够跳过难以解析的错误。

答案 1 :(得分:1)

拉里沃尔的Perl是你的朋友。这恰恰是它擅长的问题领域。

Sed很好,但是对于这种想法,Perl是蜜蜂的膝盖。

答案 2 :(得分:1)

虽然我推荐了Unix命令行和Perl的建议,但可能有用的更高级工具是Google Refine。它旨在处理凌乱的现实世界数据。

答案 3 :(得分:1)

我会在这里使用graph regular expression重新规定非常弱的规则和最终的比赛谓词。在这里,您可以在令牌级别上编写模糊匹配,然后在线级别等。

答案 4 :(得分:1)

我建议使用Talend数据集成工具。它是开源的(即免费!)。它基于Java构建,您可以通过修改底层Java代码来自定义数据集成项目。

我使用它,发现对低预算高度复杂的数据集成项目非常有帮助。这是他们的WEB站点的链接; Talend

祝你好运。