招投标信息评审专家识别系统及方法
技术领域
本发明涉及信息识别处理技术领域,具体涉及一种招投标信息评审专家识别系统及方法。
背景技术
从互联网上海量招标信息中提取出评审专家,对于数据分析、建立评审专家档案等应用是非常重要的一个环节。
常规的提取评审专家主要由两种方案:
(1)基于正则提取:根据中国通用姓氏,通过配置正则,从文本中提取人名,比如/(张.{1,2})|(王.{1,2})/表示提取张和王以及它们后面的1~2个字,这种方案虽然难度小,但是容易出现误提取,因为张和王等不只可以作为姓氏,导致正确率不太高,另外,中国通用姓氏2000多个,正则配置较为麻烦,加上少数民族姓氏与上述姓名结构不同,识别的准确率就更低了,而且如此多的姓氏组成的正则表达式结构过于庞大,即便把表达式拆分为多个字段按批次执行,效率仍然不高。再者,一篇招标信息中出现人名的地方有多处,如采购联系人、代理机构联系人等,正则提取则不能判断提取到的人名是什么角色,还需人工分辨。
(2)基于分词器提取:主要基于目前中文分词器的词性标注功能,将文本分词并标注词性,依据词性过滤出来NR词性的词组,依靠分词识别人名具有一定语义消歧义作用,能在一定程度上减少误提取概率,比如部分分词器会内置一些训练好的识别模型,如CRF模型等用于提高分词、词性标注的正确率, 但是一篇文章出现人名的地方比较多,如联系人、负责人等等,对于提取到的人名结果,很难确定是否就是想要的评审专家姓名。
发明内容
本发明提供一种招投标信息评审专家识别系统及方法已解决现有技术中存在的提取表达式过于复杂,无法准确判断人名属性的技术问题。
为解决上述技术问题,本发明采用如下技术方案:
设计一种招投标信息评审专家识别系统,包括:
文本清洗单元,用于将招标信息文本转换为自然语句的集合;
人名识别单元,用于识别上述自然语句中的人名;
人名标签提取单元,用于提取含有人名的语句的前一或前多语句作为人名标签;
人名标签判断单元,用于判断上述人名标签是/否为专家标签;
输出单元,用于统一识别出的属于专家的人名的格式并输出至结果文本。
进一步的,文本清晰单元包括正则清洗模块,用于使用正则表达式对招标信息文本进行转换。
进一步的,人名识别单元包括阈值设置模块,用于设置被识别出的人名个数的阈值。
进一步的,人名识别单元包括pyhanlp自然语言工具包。
进一步的,人名标签提取单元包括标签长度限制模块,用于设置人名标签的最小长度。
进一步的,人名标签判断单元包括scikit-learn机器学习框架的LogisticRegression逻辑回归包。
一种招投标信息评审专家识别方法,包括以下步骤:
S1:去除待识别的文本中自然语句以外的字符;
S2:判断所述待识别的文本语句中是否含有人名;若是,则进入步骤S3,若否,则继续判断下一句;
S3:提取步骤S2中含有人名的语句的前一句作为人名标签;
S4:判断步骤S3中的人名标签是否为评审专家标签;若是,则进入步骤S5,若否,则返回步骤S2继续判断下一句;
S5:统一步骤S4中评审专家标签后一句中的人名的格式,并输出至结果文本。
进一步的,步骤S1中使用正则表达式去除待识别的文本中的HTML标签、空白行和空白字符。
进一步的,步骤S2中使用pyhanlp自然语言工具包判断语句中是否有人名。
进一步的,步骤S4中使用scikit-learn机器学习框架的逻辑回归包LogisticRegression生成评审专家判断模块来识别人名标签是否为评审专家标签。
与现有技术相比,本发明的主要有益技术效果包括:
1.本发明相对于正则表达式,语句结构更加简单,识别效率更高,而且利用pyhanlp自然语言工具包通过语义判断人名,极少出现误判断,准确率更高。
2.本发明通过提取并判断人名标签,可以准确的分辨出所识别的人名是否为需要的评审专家,不必人工判断,自动化程度高。
3.本发明中人名标签识别模型采用机器学习获得,与规则设置模式相比,鲁棒性更好,可以适应多种标签变种,适应性强、效率高。
附图说明
图1为本发明招投标信息评审专家识别流程图。
具体实施方式
下面结合附图和实施例来说明本发明的具体实施方式,但以下实施例只是用来详细说明本发明,并不以任何方式限制本发明的范围。
实施例1:一种招投标信息评审专家识别系统, 包括顺次连接的五个部分:
文本清洗单元,用于对从互联网爬取的招标信息文本(HTML格式)进行整理,利用正则表达式去掉无效的空换行,去掉收尾空白符,去掉无效的HTML标签等,将文本内容转换为自然语句,比如正则表达式/^\n\s+/表示去段首空白、/\n+/表示去除多余换行符、/<[^>]>+/表示去除HTML标签、/\n|。|\.|:|;/表示把文本拆分成多个句子。
人名识别单元,对经过清洗的文本中的每一句进行人名识别。本实施例中识别人名采用的是pyhanlp自然语言工具包,使用分词功能,复制清洗后的文本作为输入,即可得到句子中每个词语的词性,如果句子中含有代表人名的词(词性为NR),则提取该语句;在这一部分,可以增设语句中识别出人名数的阈值,如果该语句中识别到的人名数小于阈值,则该语句不作为提取的对象,因为本实施例针对的招标信息中出现的评审专家人名数量均在2个以上,所以此处阈值设置为2,通过阈值的设置,可以对识别的语句做一个筛选,进而提高效率。
人名标签提取单元,选择上述含有人名的语句的上一句作为人名标签,在这一部分,可设置人名标签长度阈值,例如规定人名标签长度阈值不低于10个字,当使用上一句作为人名标签低于10个字,就在向前提取一句,一共使用含有人名的语句的前两句作为人名标签,以此类推直至人名标签大于10个字。
人名标签判断单元,判断提取的人名标签是否为专家标签;这一部分使用scikit-learn机器学习框架的逻辑回归包LogisticRegression训练数据,生成评审专家判断模型;具体的,首先收集样本并人工进行标注,样本数据如表1,表中左侧为人名标签提取单元选择的人名标签,右侧为人工为标签打的标记,0表示不是评审专家,1表示是评审专家。
表1 人名标签训练样本
上述样本仅是本实施例样本数据中的一部分,本实施例使用一百组样本数据放入样本路径,然后加载,调用LogisticRegression训练样本,即可得出评审专家判断模型,模型训练完成以后每次识别都可以使用该模型不必重新制作样本和训练,把上一部分人名提取标签选出来的人名标签输入至该评审专家判断模型,就能够输出评审专家标签。
最后是输出单元,将上述评审专家标签后一句中的人名进行格式统一,该人名即为评审专家,使用/\s+/清洗空白字符,然后将评审专家姓名输出至结果文本。
实施例2:本实施例是利用实施例1记载的招投标信息评审专家识别系统进行识别的方法,参见图1,以表2作为识别样例进行说明,数据已做脱敏处理。
表2 某中标信息样例
在步骤401中,将招投标信息文本内容进行清洗、切分。使用正则表达式清理掉文本中多余的空白行、特殊符号等。并按照中文语句的标点符号进行切分,形成自然语句集合。经过清洗、切分后的自然语句集合为:["五、中标信息","招标公告日期:2019年08月30日","中标日期:2019年09月06日","总中标金额:9.0 万元(人民币)","中标供应商名称、联系地址及中标金额:","黑龙江XX建设工程有限责任公司","本项目招标代理费总金额:0.0928 万元(人民币)","本项目招标代理费收费标准:","中标金额的百分之一","评审专家名单:","王X、于XX、安XX ","中标标的名称、规格型号、数量、单价、服务要求:"],然后进入步骤402。
在步骤402中,迭代401中的自然语句集合,使用pyhanlp自然语言处理包,对每一句话进行人名识别,结果为第十一句话含有人名,王X、于XX、安XX),进入步骤403。
在步骤403中,如果识别到人名,并且人名数达到指定阈值,进入步骤404,否则进入步骤402,迭代下一句话;这里的阈值是指设定的人名的个数最小值,此处设置为2,由于上一步识别出的人名:王X、于XX、安XX个数为3,大于2,满足阈值要求,进入步骤404,如果阈值设置为4等大于3的数,那么此时识别出的人名个数就不满足阈值,需要返回步骤402继续识别下一步的人名。
在步骤404中,加载出现人名的语句的上一句作为人名标签,在本实施例中人名标签是“评审专家名单:”,随后进入步骤405。
在步骤405中,判断人名标签长度是否超过最小限制,本实施例中人名标签的最小长度限制设置为4,加载的标签“评审专家名单:”标签有6个字,不小于4,因此顺利进入步骤406;而如果标签长度小于最小限制,就需要返回步骤404,加载上上句话,累加到人名标签前边作为新的人名标签。
在步骤406中,使用LogisticRegression训练好的评审专家标签逻辑判断模型,判断步骤405的人名标签是否是评审专家标签。如果是评审专家标签,那么上述步骤402识别出的人名就是需要的评审专家姓名,则将该姓名送入步骤407进行人名清洗;如果判断步骤405中提取的标签不是评审专家标签,则返回步骤402,迭代下一句话。
在步骤407中,使用正则表达式去掉空白符等特殊字符,统一人名格式,进入步骤408。
在步骤408中,检查自然语句集合是否迭代完,如果为否,那么保存上述识别出的评审专家姓名,然后返回步骤402,迭代下一句话;否则抽取评审专家人名完成,输出结果文本。在本实施例中输出的结果文本内容为[王X、于XX、安XX]。
此外,上述步骤中识别人名和识别标签是可以互换的,也就是说先使用机器学习模型将评审专家标签识别出来,然后选择评审专家标签之后的语句中的人名作为结果输出,同样能够完成评审专家的识别,但是,由于评审专家标签识别使用的是机器学习模型,会耗用较多的CPU运算时间;一篇招标信息中,包含人名的句子要远远少于不包含人名的句子,比例大概在1:90以上,所以先进行步骤3人名识别,如果这一句话有人名,再判断人名标签是否属于评审专家;而不是每一句话先判断是否数据评审专家标签,再提取人名。如此可以节约大量CPU资源,提高识别效率。
上面结合附图和实施例对本发明作了详细的说明,但是,所属技术领域的技术人员能够理解,在不脱离本发明宗旨的前提下,还可以对上述实施例中的各个具体参数进行变更,形成多个具体的实施例,均为本发明的常见变化范围,在此不再一一详述。