第一步 download_pdf.py : 通过爬虫脚本生成的csv文件将所有标准表单下载到本地,直接运行即可,会自动在同级目录下新建 ‘/标准文件’ 目录存放文件。由于原网站上部分标准文件已经下架,极个别url会失效。
第二步 standard_pdf.py : 从爬取下来的所有pdf文件中提取表单和表单模板,采用的pdfplumber库,提取的表单会存放到 ‘./表单/pdf_id/’ 中,生成的表单模板会存放到 ‘./表单模板/pdf_id/’ 中。目前由于部分pdf中的表单比较特殊,会出现提取错误的情况。在每个pdf文件解析完成后,会对生成的模板和模板库进行匹配,删除完全相同的重复模板。这个函数会调用match.py文件
match.py : 模板匹配,实际为比较表头是否完全一致,完全一致则认为是相同模板,否则认为是不同模板并新建入库。直接运行时会遍历所有表单模板并删去重复文件。调用时直接调用 match(path,pdf_name)即可 即在模板库中对pdf_name匹配。
第三步label.py : 表单模板分类,目前的实现方式是自定义一个表头模板的key词,比较表头的相似度进行分类。输出为控制台输出 文件名+分类结果。由于逻辑比较简单,精度有待提高。
细分实验1步骤:
第一步:按行业下载标准文件,在下载标准文件的时候就按照每个标准文件属于哪个行业进行分类。经下载结果,总共14个行业。
第二步:按照行业对表单和表单模板分类,对第一步中获取的每一个标准文件进行表单和表单模板提取,在每一个行业中按照提取后表单和表单模板数量对标准文件进行降序排列。
第三步:从每个行业中依次按照选取一个标准文件、两个标准文件查看提取出的表单和表单模版的数量,与分析所有标准文件提取出的表单和表单模版进行对比,计算覆盖率。
第四步:根据第三步的结果判断我们选择的标准文件提取出的表单模版是否具有典型性。
经过统计总共有155个标准文件,14个行业,不同行业拥有的标准文件数量分别为7,1,28,2,68,3,1,2,1,2,1,4,9,10,15。
经分析得出结论,需要每个行业至少选取21个标准文件才能实现表单和表单模板覆盖率达到90%以上
经修正,由于标准中不同行业的表单差距较大,并且不同行业拥有的标准文件数量存在较大差异,所有行业集中分析并不具有研究价值,故增加单行业进行分析的实验。
细分实验2步骤:对于每一个行业单独分析,从每个行业中依次按照选取一个标准文件、两个标准文件查看提取出的表单和表单模版的数量,与分析该行业中所有标准文件提取出的表单和表单模版进行对比,计算每个行业的覆盖率。从而判断我们选择的标准文件提取出的表单模版是否具有行业典型性。
交通运输、仓储和邮政业
住宿和餐饮业
公共管理、社会保障和社会组织
该实验的背景是,我们当初在设计数据库模型时参考了行业的标准设计的数据库表,以及每个表中的各个字段,并且字段中分为了固定字段和可变字段,现在需要检验我们所设计的固定字段是有效的,是这些标准文件中所必要的,且是完备的。
因此我们设计了这个实验,扫描提取出的表单模版,判断我们数据库中的固定字段是否在表单模版中都存在,并且需要统计出这些表单模版中共有的字段,判断我们数据库中的固定字段是否都涵盖了,从而可以从两个方向验证我们人为设定的固定字段的合理性。
我们所设定好的固定字段如下:
Diego Rodrigues & Altigran da Silva
Journal of the Brazilian Computer Society volume 27, Article number: 14 (2021-11-23)
Do H-H, Rahm E (2002)
被引量:1621
Proceedings of the 28th International Conference on Very Large Data Bases
VLDB/SIGMOD是数据库领域最顶级的两个会议,每年收录加起来也就小几百篇。
模式匹配是查找两个给定数据库模式的元素(或属性)之间的语义对应关系的任务。
模式匹配任务主要其实是对于在电子商务、地理空间、生物学、健康等领域实现数据集成和系统互操作性至关重要。
重点是用于数据集成中。
由于许多原因,模式匹配任务具有挑战性。
首先,模式元素,例如表示相同概念的属性,在不同的模式中可能具有不同的名称。
另一方面,具有相似名称的元素可能指代不同的概念。
此外,两个模式中的等效元素可能具有不同的结构。最后,可能存在这样一种情况,其中一个模式中的许多元素表示由另一个模式中的单个元素表示的概念。
COMA等启发式方法被广泛使用,因为它们易于实现和执行。它们通常运行得很快并生成大量正确的匹配项。
模式匹配是在两个模式的元素之间找到语义对应的任务。模式可以来自已知在同一域中的任何不同的异构数据源(例如,数据库模式、XML DTD、HTML 表单标签等)[ 23 ]。此任务是任何数据集成过程的第一步,因为它会连接两个不同的数据源 [ 6 ]。
尽管多年来提出了几种原型和方法来解决这一任务,但目前还没有一种方法被认为完全解决了这个问题。此外,为了保证匹配结果的质量,通常需要专家在执行方法后查看答案。
通常,模式匹配方法应用一个或多个函数来建立模式中元素对之间的相似性值。每对被称为匹配候选者。这些称为matchers的函数接收两个元素作为输入,并估计 0 和 1 之间的相似度值。值越高,元素越相似。匹配器可以使用几种不同的策略来估计相似性,例如,比较模式元素名称、它们使用同义词库的语义相似性、它们的数据类型、基数,甚至是可用的数据值。
表 1显示了由著名的 Levenshtein 距离函数 [ 24 , 25 ]生成的相似度值的示例。
通过 Levenshtein 距离函数计算不同表单模版之间的相似度,设定好一个阈值,判断这两个表单模版中差异字段是否只是因为同一概念的不同叫法。
分别构建设备设施风险分级管控数据集和作业活动风险分级管控数据集
逐个扫描表单文件中的表头信息,通过如下映射关系映射到我们定义好的表结构中。
风险点中的类型->风险点中的类型
风险点中的名称->风险点中的名称
风险点中的序号或者编号->风险点中的序号
检查项目/检查项目(危险源)中的名称->设备设施名称
标准/检查标准/不符合标准情况->标准
不符合标准情况及后果/主要后果/事故后果/可能导致的事故特征及事故后果/不符合标准情况可能导致的事故特征及后果->可能发生的事故类型及后果
管控措施/现有管控措施/控制措施/现有控制措施/现有安全控制措施中的
工程技术措施/工程技术/工程控制->工程技术措施
管理措施->管理措施
培训教育措施/培训教育->培训教育措施
个体防护措施/个体防护->个体防护措施
应急处置措施/应急处置->应急处置措施
建议新增(改进)措施
经过分析发现有些提取出的表单中缺失部分列的信息,比如有些表单就没有写明风险点的类型和名称,这种情况下填充为空即可。
逐个扫描表单文件中的表头信息,通过如下映射关系映射到我们定义好的表结构中。
风险点中的类型->风险点中的类型
风险点中的名称->风险点中的名称
风险点中的序号或者编号->风险点中的序号
作业步骤/作业步骤(危险源)中的名称->作业步骤名称
危险源或潜在事件/危险源或潜在事件(人、物、作业环境、管理)/标准/危险源或潜在事件->危险源或潜在事件
可能发生的事故类型及后果/主要后果->可能发生的事故类型及后果
管控措施/现有管控措施/控制措施/现有控制措施/现有安全控制措施中的
工程技术措施/工程技术/工程控制->工程技术措施
管理措施->管理措施
培训教育措施/培训教育->培训教育措施
个体防护措施/个体防护->个体防护措施
应急处置措施/应急处置->应急处置措施
建议新增(改进)措施