真实标书查重系统中的技术复杂度 标书查重工具
csdh11 2024-12-22 15:00 16 浏览
一.使用场景
为了体现招投标交易过程中公平,公正,公开的原则,需要针对投标文件环节,对各家单位制作的投标文件进行重复度的判断。以防止单位之间进行不正当的投标行为。
对投标标书查重或相似度对比检查,是非常重要的工作,如果两份标书存在较多内容相似,基本会被废标,所以需引起重视,需认真查看。除了依靠人工查询外,也可以通过标事通标书检查服务进行快速检查。 标书检查服务可以检查包括: 错漏项检查、算术性错误检查、不平衡报价检查、商务标模拟得分、招标控制价检查、雷同性检查;资质检查、业绩检查、相似度检查、人员检查等数十项易废标点,还将有问题部分提取标注出来,并进行可视化对比,可以大大提高工作效率。
二.技术方案
2.1规范标书格式
尽可能规范标书格式,严格按照既定格式构建标书结构,所有标书文件均需提供对应电子版,减少扫描版识别异常等带来的影响,减少标书结构化时人工干预,提高标书审计准确度。
提供对应的标书模板,标书文件需严格、清晰的包含目录、方案、主体、资质、案例、商务条款、报价等章节。
2.2标书文件数据结构化
文件结构化需区分电子原始文件及扫描文件,原始电子文件采用流式数据处理法结构化文档,如基于xreader版式数据的Retype流式数据以及基于ooxml的BDJson流式数据。而扫描文件等非原始电子文档因无法使用常规的文件标准进行解析,故扫描文件的结构化将基于BERT等模型来实现。
实现过程中,将所有文件预处理为统一格式,如PDF或者Word进行后续处理,便于整个系统功能的模块化以及文件处理的标准化,如PDF的xreader版式数据,版式数据指的是每个元素(文字、图片)都有一个坐标信息和元素的宽高信息,以及其他的描述信息。Word也有完成的数据结构可以遵循,
文档内容“版式转流式”的方案,遍历xreader版式数据中的每个元素,提取坐标信息x,y和元素的宽高w,h信息。比较接近的y认为是同一行数据,y接近的情况下,根据x和w拼接相邻的文本元素、连接相邻的文本和图片。
OOXML基于zip+xml的格式,普通文本及其字符属性、段落属性的读取和解析较为方便,其自带章节、段落和表格等结构化信息,便于流式排版。基于本次排版需求,以及考虑到将来有word在线编辑的场景,方案设计为语义级别的精确解析文档,抽取内容和属性,组建office数据结构,章节、段落等数据结等均遵循ooxml标准,word中支持的多套公式数据“域公式、mathtype公式,omath公式”统一转码成LaTex数据格式,不仅便于后续编辑,而且可以适配正文的字体和大小,整体排版效果更统一。
利用BERT模型实现抽取文档信息抽取及文档结构化,模型可以分为两个部分:实体抽取模块和关系分类模块。
1、实体抽取模块主要涉及一下五个步骤:
(1)processors初始化
(2)estimator配置
(3)加载训练数据
(4)利用model_fn_builder构造模型,加载模型参数等。利用Tensorflow中新的架构方法,通过定义model_fn函数,定义模型。然后用Estimator API进行模型的训练,预测,评估等。
(5)调用Estimator进行训练过程的控制及正式开始训练等。
2、文档结构化数据的提取与分类的主要难点在于,其不仅仅依赖于两个目标实体的信息,还依赖于句子本身的语义及语法信息,利用BERT强大的编码能力,预期能够同时抽取到文本中的两种特征,因此为了使BERT模型能够定位两个实体的位置,我们将在每个句子的开头添加特殊标志,如 "[CLS]" ,在第一个实体前后添加特殊字符 "#34; ,在第二个实体前后添加特殊字符"#";
3、使用BERT三部分特征进行最后的关系分类:
(1)[CLS]最终隐含状态向量,这部分提取了句子的语义特征
(2)两个实体的隐含状态向量,这部分提取了实体特征
4、利用拼接三个特征进行关系分类,接一个softmax进行分类基于BERT模型实现对文档进行目录提取、段落提取、图片提取、签名提取、印章提取、报价提取、法人信息提取、资质提取。
2.3、文字比对
1、首先从数据库中导出提取出来的原始核心字段数据,例如subject代表标题名称,summary代表项目简介等等;
2、通过算法完成语料标记工作;
3、对数据进行预处理,其中包括正则匹配、文本分词、停用词处理、字符串操作、规约化数据等;
4、采用余弦相似度进行相似算法处理,以测试数据和训练的每条数据的词项构建文本向量,通过文本向量的夹角即判断文本相似度,并反馈出结果;
5、对查重后的结果进行处理,可以保存到本地,也可以直接输出,由于本项目主要提供接口调用,调用执行py文件之后,对输出结果不能换行处理,所以本项目添加一些html标签和css样式。
2.4、文本相似度计算
相似度计算涉及分词、去停用词、TF-IDF模型向量化文本、计算相似度
1、分词
一个词的权重由TF * IDF 表示,其中TF表示词频,即一个词在这篇文本中出现的频率;IDF表示逆文档频率,即一个词在所有文本中出现的频率倒数。因此,一个词在某文本中出现的越多,在其他文本中出现的越少,则这个词能很好地反映这篇文本的内容,权重就越大。
2、系统实现:
(1)分词上使用结巴分词,词袋模型、TF-IDF模型、LSI模型的实现均使用了gensim库,需要引入对应库;
(2)构建停用词表;
(3)结巴分词后的停用词性 [标点符号、连词、助词、副词、介词、时语素、‘的’、数词、方位词、代词];
(4)对一篇文章分词、去停用词;
(5)选取三篇文章,前两篇有一定相似度,第三篇是相似度低的;
(6)建立TF-IDF模型;
(7)构建一个query文本,是高血压主题的,利用词袋模型的字典将其映射到向量空间;
(8)用TF-IDF模型计算相似度,相对于前两篇相似度较高的文本,第三篇文本与query的相似度很低。可见TF-IDF模型是有效的,然而在语料较少的情况下,与前两篇文本相似度也不高。
2.5图片相似度计算
实现方式为通过感知哈希算法 获得图像的图像指纹,然后比较两个哈希值之间的汉明距离来获得图片的相似度。
主要步骤如下:
1、缩小尺寸。将图片缩小到 8x8 的尺寸,总共 64 个像素,是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异;
2、简化色彩。将缩小后的图片,转为 64 级灰度,所有像素点总共只有 64 种颜色;
3、计算平均值。计算所有 64 个像素的灰度平均值。比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为 1 ;小于平均值,记为 0。
4、计算哈希值。将上一步的比较结果,组合在一起,就构成了一个 64 位的整数,这就是这张图片的指纹。注意保证所有图片都采用同样次序。
2.6 印章识别及相似度计算
采用OCR技术识别标书中的印章,并将印章进行归类,在识别过程中,设计多种形态的印章,如:
1、圆形(企业章、公章)
2、椭圆形(财务章、合同专用章等)
3、正方形(法人章)
4、长方形(专用章等)
通过识别出的OCR参数还原出电子印章及展示OCR识别数据,印章坐标位置及如下印章内容要素,如:
印章图片获取并保存后,使用SIFT算法和文字相似度检测算法,使用已有的图片相似度检测组件进行印章相似度检测,其主要步骤如下:
(1)图像预处理,主要是印章图片区域提取、常规灰度二值、对于形态不好的图片进行腐蚀;
(2)构建一个霍夫圆打开,以便进行后续的文字识别;
(3)构建图像标准名称库;
(4)识别文字,识别文字部分使用的已有的组件化的OCR工具组件进行文字识别;
(5)计算文字的相似度,同样基于已有的文字相似度组件进行文字相似度计算;
(6)图片相似度计算,同样使用已有的图片相似度计算组件进行印章相似度计算。
三、系统介绍
将标书的主要内容分为三大部分:程序条款、技术条款、商务条款。其中主要包含下列九项内容:招标邀请函;投标人须知;招标项目的技术要求及附件;投标书格式;投标保证文件;合同条件(合同有一般条款及特殊条款);技术标准、规范;投标企业资格文件;合同格式等等内容。
标书查重原理是上传多份投标书进行篇篇对比,找出相似内容,发现和规避风险。公司内部人员可以无障碍通过系统进行标书互检。
系统所涉及内容为:
1、核心服务:相似度检测,标段报告生成、对比报告生成,文档内容提取;
2、用户功能:提交标书查重、查看标段报告、查看对比报告;
3、系统为B/S架构,并适配主流浏览器。
3.1系统功能:
1、系统可识别并支持PDF、WORD等格式的文件批量上传。
2、查重结果所包含内容应参照目前主流查重报告内容,包括总相似比等结果,同时附上每一结果计算说明,并列举出相似片段详情,即检测文档片段与相似内容来源的对比,查重结果可支持批量导出。
针对红色或者橙色的句子,点击能够详细的看到具体重复的细节,和另外一份文档中的哪个句子相似了,并且显示相似度是多少。
3、白名单过滤功能,过滤掉部分商务条款等,通过设置或者上传白名单文档,检测的时候文档中和白名单相同的内容将被过滤掉,不参与检测。
4、阀值设置,用于判断内容、图片等对比预警阀值;
5、关键词设置:地名、供应商、关联公司等,很容易在复制时被遗漏,通过将这类关键词添加至重点关注列表;
6、标书库,记录历史标书,丰富后续查重样本
3.2 文档检测:
1、文本检测,包含:完全相同的句子,近似的句子(修改了几个字,或者前后顺序颠倒,但是意思是一致的),如下图所示为相似的句子。
2、标题目录摘要
3、签名及印章图片
4、报价波动,报价清单价异常,报价清单中,报价项呈规律性递减或递增。
5、图片相似度,提取文件中图片,设置图片分类,对同类图片进行相似度对比,并显示对比重复率。
相关推荐
- 探索Java项目中日志系统最佳实践:从入门到精通
-
探索Java项目中日志系统最佳实践:从入门到精通在现代软件开发中,日志系统如同一位默默无闻却至关重要的管家,它记录了程序运行中的各种事件,为我们排查问题、监控性能和优化系统提供了宝贵的依据。在Java...
- 用了这么多年的java日志框架,你真的弄懂了吗?
-
在项目开发过程中,有一个必不可少的环节就是记录日志,相信只要是个程序员都用过,可是咱们自问下,用了这么多年的日志框架,你确定自己真弄懂了日志框架的来龙去脉嘛?下面笔者就详细聊聊java中常用日志框架的...
- 物理老师教你学Java语言(中篇)(物理专业学编程)
-
第四章物质的基本结构——类与对象...
- 一文搞定!Spring Boot3 定时任务操作全攻略
-
各位互联网大厂的后端开发小伙伴们,在使用SpringBoot3开发项目时,你是否遇到过定时任务实现的难题呢?比如任务调度时间不准确,代码报错却找不到方向,是不是特别头疼?如今,随着互联网业务规模...
- 你还不懂java的日志系统吗 ?(java的日志类)
-
一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...
- 谈谈枚举的新用法--java(java枚举的作用与好处)
-
问题的由来前段时间改游戏buff功能,干了一件愚蠢的事情,那就是把枚举和运算集合在一起,然后运行一段时间后buff就出现各种问题,我当时懵逼了!事情是这样的,做过游戏的都知道,buff,需要分类型,且...
- 你还不懂java的日志系统吗(javaw 日志)
-
一、背景在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干...
- Java 8之后的那些新特性(三):Java System Logger
-
去年12月份log4j日志框架的一个漏洞,给Java整个行业造成了非常大的影响。这个事情也顺带把log4j这个日志框架推到了争议的最前线。在Java领域,log4j可能相对比较流行。而在log4j之外...
- Java开发中的日志管理:让程序“开口说话”
-
Java开发中的日志管理:让程序“开口说话”日志是程序员的朋友,也是程序的“嘴巴”。它能让程序在运行过程中“开口说话”,告诉我们它的状态、行为以及遇到的问题。在Java开发中,良好的日志管理不仅能帮助...
- OS X 效率启动器 Alfred 详解与使用技巧
-
问:为什么要在Mac上使用效率启动器类应用?答:在非特殊专业用户的环境下,(每天)用户一般可以在系统中进行上百次操作,可以是点击,也可以是拖拽,但这些只是过程,而我们的真正目的是想获得结果,也就是...
- Java中 高级的异常处理(java中异常处理的两种方式)
-
介绍异常处理是软件开发的一个关键方面,尤其是在Java中,这种语言以其稳健性和平台独立性而闻名。正确的异常处理不仅可以防止应用程序崩溃,还有助于调试并向用户提供有意义的反馈。...
- 【性能调优】全方位教你定位慢SQL,方法介绍下!
-
1.使用数据库自带工具...
- 全面了解mysql锁机制(InnoDB)与问题排查
-
MySQL/InnoDB的加锁,一直是一个常见的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?下面是不同锁等级的区别表级锁:开销小,加锁快;不会出现死锁;锁定粒度...
- 看懂这篇文章,你就懂了数据库死锁产生的场景和解决方法
-
一、什么是死锁加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获...
- 一周热门
- 最近发表
- 标签列表
-
- mydisktest_v298 (34)
- document.appendchild (35)
- 头像打包下载 (61)
- acmecadconverter_8.52绿色版 (39)
- word文档批量处理大师破解版 (36)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- parsevideo (33)
- 个人网站源码 (37)
- centos7.4下载 (33)
- mysql 查询今天的数据 (34)
- intouch2014r2sp1永久授权 (36)
- 先锋影音源资2019 (35)
- jdk1.8.0_191下载 (33)
- axure9注册码 (33)
- pts/1 (33)
- spire.pdf 破解版 (35)
- shiro jwt (35)
- sklearn中文手册pdf (35)
- itextsharp使用手册 (33)
- 凯立德2012夏季版懒人包 (34)
- 反恐24小时电话铃声 (33)
- 冒险岛代码查询器 (34)
- 128*128png图片 (34)
- jdk1.8.0_131下载 (34)