所以我有一堆 .txt 文件,它们是 PDF 的摘录作为字符串,如下所示:
---
Name:
ID Number:
--
CONFIDENTIAL
.
Date:
Description:
Foo Bar
ABC456789
THIS PAGE INTENTIONALLY LEFT BLANK.
05/04/17
Lorem ipsum dolor sit amet
在所有这些噪音中,我想提取几个目标字段并忽略其余信息:
Name: Foo Bar
ID Number: ABC456789
Date: 05/04/17
Description: Lorem ipsum dolor sit amet
所以我正在处理的大多数文档都具有相同的格式,因此到目前为止,可以记下目标值出现的行号并保存它们。当然,这是一个粗略的解决方案,因为有多种格式的解析方式与 .txt 不同。似乎可以通过机器学习来提取信息,因为我已经手工完成了很多工作,因此拥有足够的训练数据。对于出现的任何新文件格式,我也可以手动训练。对于给定的机器学习算法,您将如何监督它并为其提供这种模式?
我的一些想法你可以挑战:
- 正则表达式也是一个可行的选择,但它并不适用于所有情况,因为 ID 号不遵循相同的格式;有时可以是 1234567 以及 ABC456789。也许机器学习可以经过训练,根据其训练目的得出自己的正则表达式序列。我认为这可能是相关的,但我不确定如何:http://alias-i.com/lingpipe/demos/tutorial/ne/read-me.html
- 我可以使用 Tabula 检测 PDF 中的表格,并在执行任何机器学习之前将文本文件中的非结构化表格替换为 CSV。
- CNN 或 CRF 适合处理此类数据。
我知道这是一个固执己见的问题(而且这不可能一夜之间完成),但我会很感激任何提示!
最佳答案
如果原始 PDF 文件采用表格格式,我建议使用表格提取,因为根据您上面共享的信息,这将是确保您获得正确字段的最可靠方法。
对于这样一个简单的例子,CNN 或 CRF 对我来说似乎有点矫枉过正。一个简单的决策树或任何现成的监督机器学习方法可能就足够了(同样,基于您上面分享的示例)。
关于regex - 通过机器学习从非结构化文本文件中检索信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45069132/