3

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

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

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

4

5 回答 5

1

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

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

于 2011-05-06T21:11:11.677 回答
1

Larry Wall 的Perl是你的朋友。这正是它擅长的问题领域。

Sed 没问题,但是对于这种想法,Perl 是蜜蜂的膝盖。

于 2011-05-06T21:11:41.877 回答
1

虽然我支持 Unix 命令行和 Perl 的建议,但可能有帮助的高级工具是Google Refine。它旨在处理混乱的现实世界数据。

于 2011-05-07T04:58:47.243 回答
1

我建议在这里使用带有非常弱规则和最终认可谓词的图形正则表达式。在这里,您可以在令牌级别编写模糊匹配,然后在行级别等。

于 2011-05-07T10:53:21.443 回答
1

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

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

祝你好运。

于 2011-05-09T12:53:49.340 回答