Python 将文本拆分为逻辑块

Python 将文本拆分为逻辑块,python,nlp,Python,Nlp,我有一系列的(保险)合同(以.docx格式),我正试图自动处理这些合同 目前的任务是将每份合同分成所谓的条款,即合同中描述某些特定风险或保险责任排除的部分 例如,它可以是一句话——“本合同涵盖火灾造成的损失或损害”或几段文字,提供更多细节并解释本合同涵盖的火灾类型以及赔偿的损失 好消息是,合同通常是以某种方式格式化的。在最好的情况下,整个合同是一个带有项目和子项目的编号列表,我们可以简单地按列表层次结构的某个级别将其拆分 糟糕的是,情况并非总是如此,列表不能编号,而是按字母顺序排列,或者根本不能

我有一系列的(保险)合同(以.docx格式),我正试图自动处理这些合同

目前的任务是将每份合同分成所谓的条款,即合同中描述某些特定风险或保险责任排除的部分

例如,它可以是一句话——“本合同涵盖火灾造成的损失或损害”或几段文字,提供更多细节并解释本合同涵盖的火灾类型以及赔偿的损失

好消息是,合同通常是以某种方式格式化的。在最好的情况下,整个合同是一个带有项目和子项目的编号列表,我们可以简单地按列表层次结构的某个级别将其拆分

糟糕的是,情况并非总是如此,列表不能编号,而是按字母顺序排列,或者根本不能按单词排列:每行都以用户手动键入的数字或字母开头。也可以不是字母或数字,而是一定数量的空格或制表符。或者从句可以用大写的标题分开

因此,结构的视觉表现因合同而异

所以我的问题是什么是完成这项任务的最佳方法?Regexp?一些ML算法?也许有一些开源脚本是为了处理这个或类似的任务而编写的?欢迎任何帮助

编辑(2019年12月24日):

在github上找到此回购:

其描述形式如下:“这个知识库探索了一种基于讨论主题的神经网络方法来分割播客。我们将问题建模为一个二元分类任务,其中每个句子要么标记为新段的第一句,要么标记为当前段的延续。我们使用通用句子编码器嵌入句子,并使用基于LSTM的分类网络获得截止概率。我们的研究结果表明,神经网络模型确实适用于长对话文本的主题分割,但真正可行的产品需要更大的数据集


请在此处阅读此工作的完整报告:“

此任务的最佳做法是使用依赖于单词样式的注释改进文档中的语义信息。例如:

  • 为合同添加块样式
  • 为合同标题添加段落样式
  • 为合同的特征添加段落样式
您可以在内联级别向下钻取并添加内联样式,以允许提取更多图形信息,如关键字内联样式

然后,您可以使用python库处理
.docx
文件,或者将其转换为libreoffice,然后进行处理

这是文本文档的经典注释任务。设置诸如使用特定(web)应用程序输入所需的不同功能这样的替代方案要容易得多,成本也要低得多