利用Python揭示投标文本相似性问题
发布时间:2023-05-08来源:湖北省襄阳市审计局作者:卢婧点击:488判断同一项目不同标段的招标投标活动中是否存在不同标段投标人之间相互串通或操纵等行为,需要审计人员对投标技术文件进行相似性审查。以往,审计人员多是人工比对非结构化投标文件,耗费大量时间和人力。在某政府投资项目审计中,审计人员利用Python文本数据分析方法比对投标技术文件,锁定问题疑点,取得了较好的成效。
该项目为市政道路工程项目,分五个标段单独实施,每个标段实施内容大体相同。各标段参建单位采取公开招标的方式确定,分别为EPC总承包、监理、第三方检测、全过程造价咨询。审计人员要对五个标段同一类型参建单位的投标文件内容进行文本数据分析,审查是否存在内容一致或部分雷同的问题。
建立投标技术文件数据分析的基本思路是:利用Python的docx和os模块,将整理后的投标技术文件整理为标准格式,再运用jieba模块对文档内容进行分词处理。如将某段文字“设有灭火器材防止火灾发生”拆分为“设有”“灭火”“器材”“防止”“火灾”“发生”等短词短语,将分词处理后的词语及其频次写入数据字典,生成查重对比库。
在该项目中,审计人员通过该方法建立了EPC总承包投标技术文件数据分析库。首先调用docx模块,读取本地储存的投标技术文件,循环遍历后调用jieba模块进行分词处理。一般认为,单字组成的词(如虚词“的”“了”)没有比对意义,因此审计人员只统计所有长度大于1的词语出现的频次。再将各投标技术文件完成分词后的词语及其频次写入数据字典(命名为“cuts”,键为分词,值为该分词的频次),形成数据分析库。
接下来,编写代码计算重复率,具体实现方式如下:如比对A、B文件时,审计人员首先使用for循环遍历B文档数据字典cuts中的键(分词),如果B文档中的分词在A文档中出现,则将该重复出现的分词写入新的数据字典(命名为“jg”,键、值类型与cuts一致)。然后使用for循环遍历数据字典jg中的键值对,用分词长度乘以重复频次得出重复字数总字数。同样使用for循环遍历,分别得出A、B文档的总字数,用重复总字数除以A、B文档总字数最小值得出重复率。最后使用for循环嵌套对所有投标技术文件进行重复率计算,输出数据分析结果。
通过对74篇投标技术文件进行文本数据分析计算,审计人员发现某投标单位项目管理组织方案与另一投标单位项目管理组织方案重复率为73.04%,其余投标单位亦存在部分文件内容雷同的问题,证实该算法核查问题精准有效。
注:文章内容属作者个人观点,不代表本网站立场。
上一篇:审计数据整理小记
以上内容来自网络,如有不妥请告知,我们将尽快删除相关内容