网站首页 > 技术文章 正文
一.使用场景
为了体现招投标交易过程中公平,公正,公开的原则,需要针对投标文件环节,对各家单位制作的投标文件进行重复度的判断。以防止单位之间进行不正当的投标行为。
对投标标书查重或相似度对比检查,是非常重要的工作,如果两份标书存在较多内容相似,基本会被废标,所以需引起重视,需认真查看。除了依靠人工查询外,也可以通过标事通标书检查服务进行快速检查。 标书检查服务可以检查包括: 错漏项检查、算术性错误检查、不平衡报价检查、商务标模拟得分、招标控制价检查、雷同性检查;资质检查、业绩检查、相似度检查、人员检查等数十项易废标点,还将有问题部分提取标注出来,并进行可视化对比,可以大大提高工作效率。
二.技术方案
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、图片相似度,提取文件中图片,设置图片分类,对同类图片进行相似度对比,并显示对比重复率。
猜你喜欢
- 2024-10-24 最详细版本|UI2Code智能生成Flutter代码——版面分析篇
- 2024-10-24 基于opencv的轮廓匹配算法:python代码实现
- 2024-10-24 用代码做美颜—OpenCV关于图像的操作
- 2024-10-24 87.人工智能——基于卷积神经网络的象棋棋子的识别
- 2024-10-24 深度学习图像算法工程师面试前总结(包括基础点和项目实现点)
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)