公开/公告号CN112597353A
专利类型发明专利
公开/公告日2021-04-02
原文格式PDF
申请/专利权人 武汉大学;
申请/专利号CN202011507003.6
申请日2020-12-18
分类号G06F16/903(20190101);G06F16/907(20190101);G06F16/9038(20190101);G06F16/11(20190101);
代理机构42222 武汉科皓知识产权代理事务所(特殊普通合伙);
代理人肖明洲
地址 430072 湖北省武汉市武昌区珞珈山武汉大学
入库时间 2023-06-19 10:27:30
技术领域
本发明属于计算机技术领域,涉及一种文本信息自动提取方法,具体涉及一种面向招标文本的标的物参数信息自动提取方法。
背景技术
随着现在信息技术的智能化、自动化的不断发展,给人们的生活带来了巨大的影响和方便,能自动的把文字转换为图片,又可以将图片转换为文字,越来越智能化了,越来越方便,便捷;但是面向一些具体领域,需要的信息具体特殊性,而现有的技术很难针对性地进行信息提取,例如面向招标文本的标的物参数信息自动提取。
招标文件是采购需求的集中体现,招标文件的质量直接决定了招标结果的成败。通过利用过往的招标文件编制招标标准文件,能够统一规范招标行为,提高招标质量,促进管理水平的提升,同时能够提高项目成功率,节约招标文件的编制时间。然而现有招标标准文件均靠人工编制,特别是标的物参数、技术要求等部分,需要很多精通技术的专业人员,耗费大量时间精力去提取信息。
目前迫切需要一种针对特殊信息提取的技术。
发明内容
为了解决上述技术问题,本发明提供了一种文本信息自动提取方法,用于解决招标文本的标的物参数信息自动抽取问题,以替代当前耗时耗力的人工抽取方法。
本发明所采用的技术方案是:一种文本信息自动提取方法,其特征在于,包括以下步骤:
步骤1:对输入文本进行批量预处理,将输入文本转成pdf格式文本;
步骤2:对pdf格式文本进行结构化处理;
步骤2的具体实现包括以下子步骤:
步骤2.1:输入批量pdf格式文本;
步骤2.2:利用pypdf2提取pdf格式文本中的书签信息,构建规则对书签名进行正则匹配,得到匹配出的章节书签,保存书签的名称以及页面位置信息;
其中,根据书签名提取章节书签的规则为:Pattern=“(第.*章|第.*部分)”;
步骤2.3:基于步骤2.2中取出的章节书签信息对pdf格式文本进行划分,分别得到文件中的各章节文本;
步骤2.4:基于步骤2.3中获得的各章节文本,构建特定的正则规则对该章节文本进行划分,获取章节中各小节的名称以及位置;
其中,提取小节的正则规则为:Pattern=“.*第.节.”;
步骤3:对指定标的物的相关信息进行定位识别及抽取;
步骤4:利用上述步骤的中间信息建立抽取报告,生成抽取结果。
作为优选,步骤1中,利用winAPI对输入文本进行批量预处理,利用python win32库,调用word底层vba,将word格式文本转成pdf格式文本。
作为优选,步骤2.3的具体实现包括以下子步骤:
步骤2.3.1:根据书签中的书签名构建正则规则定位各章节,利用其对应的页面位置信息截取原pdf文件;
步骤2.3.2:利用pdfplumber识别截取后的章节文本;
步骤2.3.3:利用自然语言处理技术对文本进行清洗,清理文本中的空格、换行符以及页眉页脚,注释页码等无效干扰文本;
步骤2.3.4:将清洗后的各章节文本存储至txt文件。
作为优选,步骤3的具体实现包括以下子步骤:
步骤3.1:构建正则规则定位相关信息所在的章节;其中,相关信息中的技术参数内容所在章节的正则表达式为:Pattern=“.*(技术|参数|要求).*”;其他信息正则表达式构建原理与技术参数正则表达式构建原理相同;
步骤3.2:基于步骤3.1得到的章节,利用步骤2.4得到的小节信息,构建规则匹配到具体的技术参数小节;其中,匹配技术参数小节的正则表达式为:Pattern=“(.*(技术|参数).*要求)|(.*技术.*参数.*)”;
步骤3.3:利用正则匹配精准定位到具体的参数文本在小节中的位置;其中,定位具体的参数文本的正则表达式为:Pattern=“\W?\d+\W*[\u4e00-\u9fa5]*(技术|参数|要求)[\u4e00-\u9fa5]*(:|:)?”;
步骤3.4:从步骤3.3定位的内容开始,逐行进行参数识别,提取出相应的参数类型、参数名和参数值;
步骤3.5:将步骤3.4提取出的参数名和参数值,连同标的物类型,提取来源(文件名)以键值对的格式一起存入python字典类型中;
步骤3.8:将上述批量文件提取出的参数存入json文件中,方便后续处理。
作为优选,步骤3.2中,由于一个标书中通常有多个标包的参数信息,为进行精准识别提取,针对招投标行业中的标书,若一个标书中包含多个标包的参数信息,则在步骤3.2提取的技术参数小节中再次构建规则划分各个标包,分别得到各个标包的技术参数小节内容;其中,划分各个标包的技术参数小节的正则表达式为:Pattern=“.*第.*(包|项).*”;基于划分出的各个标包的技术参数小节内容,筛选得到指定的标的物所属的技术参数小节。
作为优选,所述筛选得到指定的标的物所属的技术参数小节,是通过检测各标包技术参数小节内容开头是否包含指定标的物的名称来判断当前技术参数小节是否属于指定标的物。
作为优选,步骤3.4的具体实现包括以下子步骤:
步骤3.6.1:构建特定的规则,依次判断该行文本是否为一级标题(如“1.参数信息”);若是,则该标题表明参数类型,则修改当前参数类型为清洗掉标题后的文本内容,本流程结束;若否,转向步骤3.6.2;
其中,判断文本是否为一级标题的正则表达式为:Pattern=“\W?\d+\W*[\u4e00-\u9fa5]+(:|:)?”;
步骤3.6.2:判断该行文本是否为二级标题且包含“参数名:参数值”的格式文本(如1.1生产能力:大于12000t/h);若是,则该行文本是标的物参数的格式化描述,利用正则提取出参数名和参数值,连同当前参数类型作为一条参数项一起保存至字典中,本流程结束;若否,转向步骤3.6.3;
其中,判断文本是否为二级标题且包含“参数名:参数值”的正则表达式为:Pattern=“\W?\d+\W+\d+\W*[\u4e00-\u9fa5]+(:|:).+”;
步骤3.6.3:判断该行文本是否为二级标题(如2.2采煤机阀类件要有过滤器);若是,则该行文本为参数的具体文本描述,直接将整行文本当作参数名,将参数值置空,执行保存当前参数项操作,本流程结束;若否,转向步骤3.6.4;
其中,判断文本是否为二级标题的正则表达式为:Pattern=“\W?\d+\W+\d+\W*[\u4e00-\u9fa5]+(:|:).+”;
步骤3.6.4:判断该行文本是否为三级标题;若是,该行文本为上一条参数信息的子项,则将该行文本清洗掉标题后加入上一条参数项的参数值中,本流程结束;若否,转向步骤3.6.5;
其中,判断文本是否为三级标题的正则表达式为:Pattern=“\W?\d+(\W+\d+){2}\W*”;
步骤3.6.5:以上条件都不满足,则表明该行文本为上一条参数项后续文本,则直接将该行文本加入到上一条参数项的参数值中;
步骤3.6.6:循环执行上述步骤3.6.1-步骤3.6.5,至该标包文本内容结束。
作为优选,步骤4中,通过利用上述过程中的中间信息来生成提取报告,包括文件数量、文件中识别出的标包总数、筛选得到的指定标的物的标包数量、是否成功定位到参数内容、以及提取的参数项总数。
相较于当前人工抽取的方法,本发明提出的一种面向招标文本的标的物参数信息自动抽取方法,能够利用自然语言处理领域的技术实现对招标文本的结构化处理,同时自动高效抽取指定标的物的参数信息,节省大量人力、物力,为后续招标标准文件的编制以及其他数据分析提供了坚实的基础。
附图说明
图1为本发明实施例的整体流程图;
图2为本发明实施例的文本结构;
图3为本发明实施例的文本结构化流程图;
图4为本发明实施例的标的物技术参数定位识别及抽取的流程图;
图5为本发明实施例的参数逐行抽取的流程图;
图6为本发明实施例的抽取报告图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
本实施例通过面向招标文本的标的物参数信息自动抽取,来对本发明做进一步的阐述。
招投标业务是企业进行项目管理的一项重要工作,并且标书具有相对规范化的书写要求和文本内容,因此如果将标书文本作为语料进行研究,实现标准招投标文件的管理、应用、反馈、更新迭代等功能,可以显著提高相关领域企业工作人员的工作效率,有效提高招标的质量、控制风险,促进企业对招投标的管理方式在智能化、电子化的大方向上发展,弥补计算机技术在招投标领域应用的不足。
为了便于编制投标标准文件,本发明主要对招投标领域的标书语料进行结构化处理以及最终标的物参数信息的提取方法进行研究。本发明利用自然语言处理领域的技术最终实现了标的物参数信息的自动抽取。
在本实施例中,图1给出了面向招标文本的标的物参数信息自动抽取方法的流程图,原始的招标文本通过自然语言处理技术的处理,最终抽取到了相应的技术参数信息。要实现自动抽取,需要先清楚招标文本的特点,招标文件在经过长时间的发展已经形成了独有的成文风格和撰写标准。
(1)招标文本包含大量的领域惯用语以及专业术语,有很强的领域特性。
(2)招标文本的结构较为固定,成文风格和文本结构较为统一。
基于招标文本的以上特点,在此基础上提出了标的物技术参数信息的自动抽取策略,并确定了抽取流程。
在本实施例中,文本的标准结构如图2所示,基于这样的文本结构,本发明提供的一种面向招标文本的标的物参数信息自动抽取方法,包括以下步骤:
步骤1:利用winAPI对招标文本进行批量预处理,使得后续输入文件均为pdf格式;
本实施例中,由于标书文件大多为pdf文件,但仍有部分文件为word格式,因此为方便后续统一处理,利用python win32库,调用word底层vba,将所有word文件批量转成pdf文件。
步骤2:对招标文件进行结构化处理;
在本实施例中,如图3所示,为文本结构化的流程图。根据文本结构特点,利用特定规则对文本结构进行划分:
步骤2.1:输入批量pdf文件;
步骤2.2:利用pypdf2提取pdf文件中的书签信息,构建规则对书签名进行正则匹配,得到匹配出的章节书签,保存书签的名称以及页面位置信息;
正则表达式,又称规则表达式,是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
可以用正则表达式判断给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”),也可以通过正则表达式,从字符串中获取想要的特定部分。利用正则的这两个特性以及其他自然语言处理技术,可以实现招标文本的标的物参数信息的自动提取。
本实施例中,根据书签名提取章节书签的规则为:
Pattern=“(第.*章|第.*部分)”
步骤2.3:基于步骤2取出的章节书签信息对pdf文件进行划分,分别得到文件中的各章节内容;
步骤2.3.1:根据书签中的书签名构建正则规则定位各章节,利用其对应的页面位置信息截取原pdf文件;
步骤2.3.2:利用pdfplumber识别截取后的章节文本;
步骤2.3.3:利用自然语言处理技术对文本进行清洗,清理文本中的空格、换行符以及页眉页脚,注释页码等无效干扰文本;
步骤2.3.4:将清洗后的各章节文本存储至txt文件。
步骤2.4:基于步骤2.3处理后的各章节文本,构建特定的正则规则对该章内容进行划分,获取章节中各小节的名称以及位置;
其中,提取小节的正则规则为:
Pattern=“.*第.节.”
在本实施例的步骤2.3中,利用pdf书签信息对文本进行章节划分,并利用python中的pdfplumber库识别章节文本,最后利用自然语言处理技术清洗文本,得到较为规范、干净的章节文本。
步骤3:利用正则技术构建相应的规则对指定标的物的参数信息进行定位识别及抽取;
在本实施例中,如图4所示,为标的物技术参数定位识别及抽取的流程图。利用标的物参数叙述的行文特点以及前文中的结构化信息,通过构建相应规则对指定标的物的参数内容进行定位,之后再根据参数文本内容的成文风格构建规则进行精准抽取。整个定位识别及抽取的步骤如下:
步骤3.1:构建正则规则定位技术参数所在的章节,在本实施例中,如图2所示,技术参数所在的章节名称为“第五章货物技术要求”,定位技术参数内容所在章节的正则表达式为:
Pattern=“.*(技术|参数|要求).*”
步骤3.2:基于步骤3.1得到的章节,利用步骤2.4得到的小节信息,构建规则匹配到具体的技术参数小节,在本实施例中,如图2所示,技术参数所在的小节名称为“第一节技术要求”。
其中,匹配技术小节的正则表达式为:
Pattern=“(.*(技术|参数).*要求)|(.*技术.*参数.*)”
步骤3.3:由于一个标书中通常有多个标包的参数信息,为进行精准识别提取,再次构建规则划分各个标包,分别得到各个标包的参数内容,在本实施例中,如图2所示,各标包的名称为“第一包采煤机”,“第二包刮板运输机”;
其中,匹配各个标包的正则表达式为:
Pattern=“.*第.*(包|项).*”
步骤3.4:基于上一步骤划分出的各个标包,需要筛选指定的标的物所属的标包参数内容。
在本实施例中,筛选标包的方法为:通常在标包文本内容的开头,或前几行介绍里会提到该表包所属标的物的名称,如“第一包采煤机”,“采煤机的技术参数”等,因此,通过检测各标包文本内容开头是否包含指定标的物的名称来判断当前标包是否属于指定标的物。在本实施例中,设定在标包文本首部前十行用于检测指定标的物名称。
步骤3.5:利用正则匹配精准定位到技术参数信息内容开始的位置;由于技术参数信息内容在各个标包文本中有着固定的结构,甚至有着特定的位置,因此,可以根据特定文本表达准确定位参数内容。
其中,定位参数信息内容开头位置的正则表达式为:
Pattern=“\W?\d+\W*[\u4e00-\u9fa5]*(技术|参数|要求)[\u4e00-\u9fa5]*(:|:)?”
步骤3.6:从步骤3.2定位的内容开始,逐行进行参数识别,提取出相应的参数类型,参数名,参数值;
在本实施例中,进行逐行参数识别提取的内容中,如图5所示,为参数逐行识别抽取的算法流程图。利用参数的标题结构,确定参数类型,再利用参数描述的行文特点,精准提取出参数名和参数值。逐行识别抽取具体步骤如下:
步骤3.6.1:构建特定的规则,依次判断该行文本是否为一级标题(如“1.参数信息”);若是,则该标题表明参数类型,则修改当前参数类型为清洗掉标题后的文本内容,本流程结束;若否,转向步骤3.6.2;
其中,判断文本是否为一级标题的正则表达式为:Pattern=“\W?\d+\W*[\u4e00-\u9fa5]+(:|:)?”;
步骤3.6.2:判断该行文本是否为二级标题且包含“参数名:参数值”的格式文本(如1.1生产能力:大于12000t/h);若是,则该行文本是标的物参数的格式化描述,利用正则提取出参数名和参数值,连同当前参数类型作为一条参数项一起保存至字典中,本流程结束;若否,转向步骤3.6.3;
其中,判断文本是否为二级标题且包含“参数名:参数值”的正则表达式为:Pattern=“\W?\d+\W+\d+\W*[\u4e00-\u9fa5]+(:|:).+”;
步骤3.6.3:判断该行文本是否为二级标题(如2.2采煤机阀类件要有过滤器);若是,则该行文本为参数的具体文本描述,直接将整行文本当作参数名,将参数值置空,执行保存当前参数项操作,本流程结束;若否,转向步骤3.6.4;
其中,判断文本是否为二级标题的正则表达式为:Pattern=“\W?\d+\W+\d+\W*[\u4e00-\u9fa5]+(:|:).+”;
步骤3.6.4:判断该行文本是否为三级标题;若是,该行文本为上一条参数信息的子项,则将该行文本清洗掉标题后加入上一条参数项的参数值中,本流程结束;若否,转向步骤3.6.5;
其中,判断文本是否为三级标题的正则表达式为:Pattern=“\W?\d+(\W+\d+){2}\W*”;
步骤3.6.5:以上条件都不满足,则表明该行文本为上一条参数项后续文本,则直接将该行文本加入到上一条参数项的参数值中;
步骤3.6.6:循环执行上述步骤3.6.1-步骤3.6.5,至该标包文本内容结束。
步骤3.7:将步骤3.3提取出的参数名和参数值,连同标的物类型,提取来源(文件名)以键值对的格式一起存入python字典类型中;
步骤3.8:将上述批量文件提取出的参数存入json文件中,方便后续处理。
步骤4:利用上述步骤的中间信息建立抽取报告,生成抽取结果;
在本实施例中,如图6所示,为参数抽取报告,其主要内容在于利用上述过程中的中间信息,如文件数量,从这些文件中识别出的标包总数,筛选得到的指定标的物的标包数量,是否成功定位到参数内容,以及提取的参数项总数等来生成提取报告,以便对整个提取过程进行总结。
本发明不仅仅适用于招标文件的对应参数提取,还可以适用于各种需要从文本中提出特殊信息的场景。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
机译: 一种用于为自动电话或自动伸缩电话秘书处传输多个文本信息的设备
机译: 一种用于产品分析的3D CAD模型的中面自动提取方法
机译: 一种用于喷嘴的松散,连续和全自动玻璃提取方法,以形成非常细的线,并由这些线直接生产纱线或无纺布