Regex 如何处理大量结构化但不一致的数据?

Regex 如何处理大量结构化但不一致的数据?,regex,parsing,scrape,sgml,edgar,Regex,Parsing,Scrape,Sgml,Edgar,我正试图解析——它们是SEC文件。具体来说,我正试图解析和文件 在解析这些文件时似乎有很多失败的尝试,我认为这是因为这样做是一项庞大的任务,整个团队都必须处理 我的任务是分析这些文件。我们需要自始至终找到的数据表中的信息。问题是记录中的文件使我很难区分数据点、表节标题等 到目前为止,我只能从约10%的Schedule 13D文件中获取信息,甚至我所获取的信息也需要大量清理。简而言之,我将正则表达式模式与文本匹配。该模式采用一个已知的(英文)节头和下一个(我手动设置每个节头)并提取中间的内容:例如

我正试图解析——它们是SEC文件。具体来说,我正试图解析和文件

在解析这些文件时似乎有很多失败的尝试,我认为这是因为这样做是一项庞大的任务,整个团队都必须处理

我的任务是分析这些文件。我们需要自始至终找到的数据表中的信息。问题是记录中的文件使我很难区分数据点、表节标题等

到目前为止,我只能从约10%的Schedule 13D文件中获取信息,甚至我所获取的信息也需要大量清理。简而言之,我将正则表达式模式与文本匹配。该模式采用一个已知的(英文)节头和下一个(我手动设置每个节头)并提取中间的内容:例如,
如果组(.*SEC)的成员仅使用
,请选中相应的框。显然,这不会让我走得很远,事实并非如此。使用相同的逻辑,以下是基于以下示例字符串(作为示例)得到的结果:

示例文本

报告人姓名I.R.S.上述人员的识别号 (仅限实体)Robert Depalo如果 小组(见 指示(a)(b) 秒 如果披露以下信息,请选中“仅使用资金来源”(参见说明)复选框 根据第2(d)项或 2(e)国籍或居住地 组织美国公民投票权45119857(1)共享投票 POWER-0-SOLE处置性POWER45119857(1)10.共享处置性 POWER-0-11.各报告方实益拥有的总金额 Person45119857(1)12.如果第(11)行中的合计金额 不包括某些股份(参见 (说明)13.5%的学生 由第(11)行中的金额表示33.4%(2)14.1报告人类型 (见说明)(1)包括44194298股 报告人持有的普通股和925559股普通股 Arjent Limited UK持有的股票。报告人为 Arjent Limited英国董事长,拥有投票权和投资权 对其所持股份的授权。不包括任何 报告人和实体持有的优先股类别 报告人的妻子拥有的财产有权获得 下文第6项讨论。(2)不包括投票 报告人根据本协议有权收取的利息 SPHC B系列优先股,如本协议第6项所述 附表13D

示例输出

键:检查| v:(a)和#160   (b) 和#160   
关键词:公民诉:美国
键:复选框| v:     
关键字:共享VOT | v:-0-
关键字:v的百分比:第11行金额表示的类别百分比
关键词:RE类型| v:报告人类型\(见说明\)
键:复选框| v:    13
关键字:SOLE DISPO | v:45119857
键:秒使用| v:仅秒使用
键:共享DIS | v:-0
钥匙:SOLE VOTIN | v:45119857
关键词:R | v的名字:罗伯特·德帕洛
关键字:骨料| v:45119857 12。
关键字:资金来源| v:资金来源\(见说明\)


还有其他方法吗?这不适用于大多数13D文件,也不适用于13G。我觉得我的方法有点太幼稚了,我需要一个共同的方法来解决这样的问题。我正在寻找至少80%的归档文件。

很难说没有看到这些变化,但是你链接的第一个文档看起来更容易解析,因为它们的间距太大了。当你去解析的时候,你不能保留它吗?@dgig所以保留间距?然后,基于间距进行解析?因此,您正试图使用regex(除了没有regex之外最糟糕的解析设备)来解析以自然语言英语编写的文档,这些文档具有巨大的法律弯曲。是的,你选择了一项相当艰巨的任务。硅谷有很多资金雄厚的初创公司正试图做到这一点(到目前为止,他们还没有在股市上超越FaceBook)。除非你认为你对此有特别新的想法,否则我认为你从一开始就在打一场失败的战斗。我建议你去阅读所有你能找到的关于解析英语或法律文档的内容,然后重新考虑你的方法。@IraBaxter听着,我最不想做的事情就是使用regex——用它来创建任何复杂和可扩展的东西是极其复杂的。但我之所以选择regex,是因为它的灵活性(给了我相当大的自由度)。请提供一个替代方案。我正在使用Python。通过列表理解很容易操作和搜索字符串。我可以这样做。好吧,我想我很同情你的处境,但我不能帮你对付你的老板。世界上到处都是皮卡德船长,他说“让它成为现实”,却不知道是否可以以合理的方式做到这一点。那只在电视上有效。如果你愿意的话,你可以让我成为你解释的替罪羊;我习惯穿石棉套装。你可以告诉他,有个老古董说你需要一个自然语言解析器,所以你想继续这样做。这将让你燃烧周期,让它连接起来,并试图提取数据;这还不够,但看起来你正在努力。