Regex 如何处理大量结构化但不一致的数据?
我正试图解析——它们是SEC文件。具体来说,我正试图解析和文件 在解析这些文件时似乎有很多失败的尝试,我认为这是因为这样做是一项庞大的任务,整个团队都必须处理 我的任务是分析这些文件。我们需要自始至终找到的数据表中的信息。问题是记录中的文件使我很难区分数据点、表节标题等 到目前为止,我只能从约10%的Schedule 13D文件中获取信息,甚至我所获取的信息也需要大量清理。简而言之,我将正则表达式模式与文本匹配。该模式采用一个已知的(英文)节头和下一个(我手动设置每个节头)并提取中间的内容:例如,Regex 如何处理大量结构化但不一致的数据?,regex,parsing,scrape,sgml,edgar,Regex,Parsing,Scrape,Sgml,Edgar,我正试图解析——它们是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。通过列表理解很容易操作和搜索字符串。我可以这样做。好吧,我想我很同情你的处境,但我不能帮你对付你的老板。世界上到处都是皮卡德船长,他说“让它成为现实”,却不知道是否可以以合理的方式做到这一点。那只在电视上有效。如果你愿意的话,你可以让我成为你解释的替罪羊;我习惯穿石棉套装。你可以告诉他,有个老古董说你需要一个自然语言解析器,所以你想继续这样做。这将让你燃烧周期,让它连接起来,并试图提取数据;这还不够,但看起来你正在努力。