NLP 适合我的法律合同解析问题吗?

数据挖掘 nlp 初学者 命名实体识别 斯派西
2022-02-11 04:38:47

我公司有一个产品,涉及从法律合同 PDF 中提取各种字段。目前的方法非常耗时且混乱,我正在探索 NLP 是否是一个合适的替代方案。

需要解析的 PDF 通常遵循多个“模板”之一。在一个模板中,几乎所有文档都是相同的,除了我们试图提取的 20 个左右的特定字段。话虽如此,有时会出现轻微的不一致,例如缺少/添加空格、标点符号等。目前大约有 15 个模板,但有时会添加另一个模板。需要提取的大部分数据都是表格形式,但段落文本中散布着一些值。

对于当前的非 ML 方法,我们使用专有的 PDF 解析器,将所有表格提取为 json 格式。必须为出现的每个新 PDF 模板自定义配置此解析器,这很耗时。转换为 json 后,必须为每个模板中的每个值制作自定义的正则表达式,导致总共数百个正则表达式。通常这种方法非常准确,但有时轻微的不一致会破坏它,这意味着需要修改正则表达式。

我想知道 NLP 命名实体识别是否会成为解决此问题的更清洁的方法。我的想法是在几百个示例文档中标记所有值,然后在 Spacy 或 Flair 等库中训练自定义 NER 模型。理想情况下,我们可以输入从 PDF 中提取的原始文本,而不必配置自定义解析器来提取 json。

我看到使用 NLP 方法的优势是,我们不必在每次出现新模板时都配置自定义解析器并编写一堆正则表达式。在最坏的情况下,每次添加模板时我们都必须标记一些新文档,这可能比当前方法更快、更容易。我认为我们还可以通过在不同文档之间交换标记值来轻松生成大量合成训练数据。

我担心,使用 ML 方法,我们将无法达到近乎完美的准确度,这是一个要求。我也不确定 NLP 对表格中的原始文本而不是段落的执行效果如何。好消息是模板中的文档往往非常相似。

我以前从未做过 NLP,所以我想知道这里是否有人认为这种方法值得探索。如果这是可行的,是否有人对如何获得最佳结果有建议?

2个回答

这就是我会做的。

  1. 从pdf中提取原始数据。
  2. 使用 spacy 中基于规则的 NER(它非常快),但它需要一些手动模式制作。如果可以的话,也应用多处理。 https://spacy.io/usage/rule-based-matching
  3. 您还可以编写文档分类来分离模板并将模板发送到适当的代码,并行运行。
  4. 还检查法律文本的黑石图书馆,它可能有一些用处https://spacy.io/universe/project/blackstone

突出显示目标数据的几张文档图片可能会有所帮助。此外,您的方法似乎足够合理。我同意你不会每次都得到完美的结果,但是有一个 Human In the Loop 的概念。您的程序提取的数据在验证之前必须由人工验证一次。这基本上是验证数据以进行审计跟踪的人的数字签名。据我了解,您正试图从文档中提取几个实体。因此,浏览数据以验证事情是否确实有意义应该不会太困难。这种方法肯定比编辑模板和更改正则表达式更快。

或者,您的问题也可以解释为上下文摘要,其中摘要将是您的 NER 的摘录。我不确定这会有多有效(也许更有经验的人可以加入),但你可以走深度学习路线,在你的自定义数据集上训练一个基于注意力的模型,比如 BERT,其中包含提取的 NER 作为目标摘要。