Uploaded by 2201210256

知识图谱报告

advertisement
知识图谱课程报告
中学教材领域知识图谱构建
知识图谱课程报告
——中学教材领域知识图谱构建
摘 要
领域知识图谱在愈来愈多的场景中发挥重要的作用,我们将其聚焦于中学历史教材领域,
通过从完整的 7-9 年级中学历史教材和《中华上下五千年》提取文字信息,并利用 UIE 模型
进行知识抽取。经过分析,本小组发现主要存在语义理解不准确和历史事件抽取困难的问题,
并通过 finetune 等方式进行了优化,之后又对比了生成式模型 (ChatGPT)。最后我们依据抽
取的实体和三元组开展了 KBQA 任务,还实现了可视化展示系统,均获得了不错的结果。
一. 引言
近年来领域知识图谱在越来越多的场景中发挥着重要的作用。但是在众多应用中,中学
教材领域尚未得到深入的挖掘。因此,本课题的计划目标便是将知识图谱技术应用到中学历
史教材中,构建中学历史课程的知识图谱。
首先我们获取完整的 7—9 年级中学历史教材以及《中华上下五千年》的 pdf 文件,然
后从 pdf 中提取所需的文字信息,作为知识抽取的数据集。之后,在知识抽取阶段,我们分
为结构化知识抽取和非结构化知识抽取两部分进行。在结构化数据知识抽取中,我们对课本
最后的附录部分,通过 OCR 以及规则抽取补充三元组知识;在非结构化数据的知识获取中,
我们使用 UIE 模型依据 schema 抽取三元组知识。在这个过程中,我们发现了存在语义理解
不准确造成三元组的错误以及历史事件等抽取困难两大问题。我们利用标注数据微调 UIE
模型,抽取实体数下降,三元组数上升,准确率同时提升,有效地改善了抽取的质量。同时,
我们还实现了生成式模型探索,构造 prompt 模板以测试 ChatGPT 的关系抽取能力,发现
ChatGPT 能够较好的理解语义关系并进行抽取,但抽取时缺乏对常识的理解。依据抽取的实
体和三元组,我们利用 ChatGPT 生成问题,进行知识库问答任务,获得了不错的结果,并
对得到的结果进行了讨论和分析。最后,我们还设计了可视化系统进行展示,项目整体上具
有极高的完整性。
二. 数据收集与处理
1. 数据获取
在数据来源方面,本课题采用的数据分布来自初中历史教科书和《中华上下五千年》。
第 1 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
其中,中华上下五千年为纯文本格式的 txt 文件,初中历史教科书则是从图片式 pdf 中使用
如下方法提取得到,如图 1 所示。
2. 数据处理
(1)PDF 文本识别
由于 PDF 是课本照片拼接而成的,无法直接用 PDF 解析脚本直接读取文字和图片,本
小组使用 PaddleOCR 软件包提取 PDF 上各文本框位置以及内容,根据 OCR 结果进行 PDF
解析。
(2)PDF 内容解析
本小组设计了如下流程对 OCR 结果进行解析:
(A)文本框重排序
对于 OCR 解析到的文本框,我们根据其上边框距离为第一关键字排序。对于上框距离
相近(相差在 eps 之内)的,根据其左边框距离为第二关键字排序。由于 PDF 来源在部分书
页上有水印,故对水印位置(最上和最下)的 OCR 结果做筛选。
对于最后几行的结果,筛选是否为课本的页脚。
(B)文本框组合
遍历排序后的文本框,先根据将上边距离相似、前一个的右边框距离和后一个的左边框
距离相近的作为文本行。
遍历从上到下的文本行,将上一个文本行的下边框距离和下一个文本行的上 边框距离
相近的、左边框距离相似或有边框距离相似的文本行合并成一个文本块,每个文本块的左右
第 2 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
边框距离为其中所有文本行左右边框距离的最值。
观察到当新的换行时,下一段落第一行会有空格,而上一段落最后一行没有写到最后,
上述规则并不能解析分多段的同一块文本。再次遍历从上到下的文本块,将上一个文本块的
下边框距离和下一个文本块的上边框距离相近的、左边框距离相似或右边框距离相似的文本
块合并成一个新的文本块。
观察课本页,发现当同一文本块中间出现插图时,上下文本块中间有空隙出现,同时左
右边框距离相近。这里最后再次遍历从上到下的文本块,将上一个文本块的下边框距离和下
一个文本块的上边框距离相近的、左边框距离相似和右边框距离相似的文本块合并成一个新
的文本块。
(C)双页课本解析
部分 PDF 有出现一页 PDF 对应两页课本的照片的现象。这里通过 PDF 页的长和宽判
断是否是连页课本页的 PDF。在 PDF 页中线附近找一条可以将 OCR 文本框分成左右两边
的分割线,分成两页进行课本解析。
(3)PDF 解析效果
解析后,基本效果如下所示,左边为 pdf 文件,右边为解析结果。
解析结果:商汤灭夏
夏朝后期,分布于今河北、
河南一带的商部落逐渐强大,商的首领汤联络周
围部落,起兵攻伐夏王架,策大败,夏王朝灭亡。约
公元前 1600 年,汤建立商朝,都城建在①。商王汤任
用贤才,发展农业、手工业和商业,使经济得到发展,
人民生活相对安定,商受战乱、环境变化等因素的影
响,商朝多次迁都,到商王盘庚时迁到殷,此后保持
了相对的稳定。商朝长期对外征战,控制的范围不断
拓展。商朝为巩固统治,设置监狱,制定酷刑,加强
对奴隶和平民的控制。商付王是商朝的最后一个王,
他对外征伐,耗费国力,同时修筑豪华宫殿,对百姓
征收繁重的赋税,还施用酷刑残害人民。
朝很快强大起来。
第 3 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
商代重要城市分布图.在今河南安阳殿……在今陕西岐山周,牧野 i 在今河南新乡
武王伐付
商朝晚期,分布于陕西渭水流域周原-带的周部落,以农业立国,不断拓展疆土,发展
迅速。公元前 1046 年;武王联合各地势力,组成庞大的政治联盟,与商军在牧野决战,商
军倒戈,周军占领商都,商朝灭亡。周武王建立周朝,定都镐 (Hao) 京,史称西周。
三. 知识抽取
在知识图谱任务阶段,我们定义了两个任务,分别是知识抽取和知识问答。我们首先介
绍知识抽取任务。知识抽取分为两部分,分别是结构化知识抽取和非结构化知识抽取。
1. 结构化知识抽取
结构化知识抽取主要针对历史教科书后大事年表这一结构化数据,通过设计抽取规则对
其进行解析,以获得三元组知识作为文本内容知识抽取的重要补充。我们使用如下方式进行
抽取。
(1)表头信息抽取
将 OCR 结果按照上边框距离排序后,抽取
最上面一行文字(上边框距离相似)
。将该行文
字根据左右边框分隔距离分成若干个单元,每
个文本框单元表示表头的一个单元格。
(2)表格内容抽取
从上到下遍历 OCR 的文本行。对每行的文
本根据左右边框的间距划分出单元格。每个单
元格根据左边框对应、右边框对应、边框中轴线
对应的规则,匹配到所对应的单元格。最后输出
的格式为 {表头名称: 单元格内容}。
结构化知识抽取效果:
[{"时间": "1861 年", "事件": "俄国农奴制改革"}
{"时间": "1861-1865 年", "事件": "美国内战"}
{"时间": "1868 年", "事件": " 日本明治维新开始"}
{" 时间": "1883 年", "事件": "戴姆勒发明汽油内燃机 "}
第 4 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
{"时间": "1903 年", "事件": "菜特兄弟研 制 的 飞 机 试 飞 成 功 "}
{" 时 间 ":"1911-1912 年", "事件": "辛亥革命爆发中华民国建立"}
{"时间": "1914 年", "事件": "第一次世界大战爆发"}
{"时间": "1917 年 11 月", "事件": "俄国十月革命"}
{"时间": "1918 年 11 月", "事件": "第一次世界大战结束"}
{"时间": "1919 年", "事件": "巴黎和会"}
{"时间": "1920 年", "事件": "甘地发动第一次非暴力不合作运动"}
{"时间": "1921 年", "事件": "华盛顿会议召开"}
{"时间": "1922 年", "事件": "苏联成立"}
{"时间": "1929 年", "事件": "美国大萧条,随后开始了资本主义世界经济危机"}
{"时间": "1931 年", "事件": "九一八事变,日本侵华"}
{"时间":"1933 年", "事件": "希特勒就任德国总理"}
{"事件": "罗斯福实行“新政"}
{"时间": "1937 年", "事件":"七七事变,中国开始全面抗日战争"}
{"时间": "1938 年", "事件": "慕尼黑会议"}
{"时间": "1939 年 9 月", "事件": "第二次世界大战全面爆发"}
{"时间": "1941 年 6 月", "事件": "苏德战争爆发"}
{"时间":"1941 年 12 月", "事件": "太平洋战争爆发"}
{"时间": "1942-1943 年", "事件": "斯大林格勒战役"}
{"时间": "1944 年 6 月", "事件": "诺曼底登陆"}]
最终,从结构化表格中解析得到了约 200 个(事件,发生时间,时间)三元组,有效地
补充了知识库。
2. 非结构化知识抽取
首先,对于非结构化文本,我们观察中学历史教材,提取出了一些知识,如图 2 所示,
并针对这些知识设计了关系抽取 schema,其中,实体/属性主要包括:人物,制度,朝代,
地点,建立/灭亡时间,成就内容,历史事件,时间,主要内容,行业等。
实体/属性间的关系包括:
(人物,实行,制度):哪个历史人物实施了什么制度
(朝代,建立者,人物):什么朝代由谁建立
第 5 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
(朝代,都城,地点):什么朝代的都城是哪里
(人物, 贡献, 成就):某个历史人物的成就是什么
(朝代,建立/灭亡时间,建立/灭亡时间数值):某个朝代的建立时间和灭亡时间
(历史事件,导致,历史事件):不同历史事件的导致关系
(人物,参与,历史事件):什么人物参与了什么历史事件
(历史事件,发生时间,时间):什么历史事件发生的时间
(制度,制定时间,时间):什么制度制定的时间
(人物,属于,朝代):某个人物是什么朝代的人
(人物,贡献,主要内容):某个历史人物的贡献是什么
(行业,发展,主要内容):某个行业有怎样的发展变化
图 2 中学历史教材中的知识
在非结构化知识抽取部分,本小组所使用的抽取方法是 UIE 模型 (Unified Structure
Generation for Universal Information Extraction) [1],结构如图 3 所示。
图3
UIE 结构
UIE 模型是一个大一统的信息抽取模型,将各种不同的信息抽取任务建模成为同一形
式,通过不同的 prompt 来驱动模型完成各异的任务。
例如上图所示,左侧不同颜色的方框代表了不同的任务描述和数据输入,其中将 SSI
(Structure Schema Instructor) 作为 prompt,提示模型去完成不同的抽取任务;右侧则表示输
第 6 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
出为格式各异的结构化抽取语言 (Structure Extraction Language, SEL),其中各种不同的抽取
任务可以表示为不同的 SEL。
本小组选择的 UIE 模型为 PaddlePaddle 框架中的开源实现,其使用 ERNIE 3.0 大模型
作为底座模型,具有强大的语义理解能力。
非结构化知识抽取主要针对六本历史教材的文本信息和《中华上下五千年》,利用 UIE
模型,展开三个阶段的抽取尝试,分别是 zero-shot 阶段、fine-tune 阶段和生成式模型探索
阶段,下面将分别进行介绍。
(1)Zero-Shot 抽取
(A)数据集
在非结构化抽取部分,本小组共使用两份不同来源的数据:第一个是初中七至九年级的
历史课本,经过对 pdf 文件的 OCR 解析之后得到课本文字部分的内容;第二个作为补充数
据的《中华上下五千年》这一书籍。
(B)模型
选用 uie-m-large 模型作为 UIE 的抽取模型,这是一个兼具中、英双语抽取能力的信息
抽取模型,可以直接对纯文本内容进行信息抽取,具备很强的 zero-shot 能力,无需任何标
注数据就可以直接进行信息抽取。
(C)信息抽取
在抽取阶段,本小组主要抽取两部分的内容:实体 (entity) 信息和三元组 (triplet) 信息。
其中所使用的 schema 为上文知识表示阶段所描述的信息。在对非结构化数据进行抽取阶段,
本小组首先使用 zero-shot 的方式测试模型在没有经过微调的阶段对垂直领域数据的抽取能
力。
(D)结果分析抽取结果:
经过抽取,共得到三元组 3943 个,实体共 7014 个。同时评估抽取结果的准确率,发现
针对实体的准确率比较高,但是抽取得到的三元组准确率偏低。
数据类型
数量
准确率
实体
7014
80%
三元组
3943
30%
分析:
经过分析抽取结果中的 bad case,本小组认为目前使用的 zero-shot 模型抽取的结果主要
第 7 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
存在以下两类错误:
1. 语义理解不准确导致三元组抽取错误。
2. 历史事件、主要贡献等实体定义较为抽象,难以准确抽取。
(2)Fine-Tuning 抽取
为了提高模型在领域任务上的表现,本小组对需要进行抽取的语料进行了部分标注,使
用标注后的结果对模型进行微调,并使用微调之后的模型再进行抽取。
(A)数据标注
本小组使用 Label Studio 工具作为信息抽取标注的平台,具体标注界面如图 4 所示,
可以同时标注实体和三元组信息:
图4
标注界面
完成数据标注阶段后,本小组共在《中华上下五千年》中标注 50 段文本,其中包含 91
个三元组以及 160 个实体。
(B)模型微调
使用上述的标注数据,对 uie-base 模型进行微调,共训练 100 个 epoch,得到最终微调
之后的模型。
(C)结果分析
为了分析 uie-base 模型经过微调之后的效果,选取《中华上下五千年》作为非结构化抽
取语料,除使用的模型之外其他变量控制一致,得到抽取结果如下表所示:
模型
实体数量
三元组数量
实体准确率
三元组准确率
UIE Original
1853
684
80%
30%
UIE Fine tuning
644
1618
90%
85%
分析:
1. 从表中可以看出,使用经过微调之后的模型,抽取出来的实体数量显著下降,但是三
第 8 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
元组数量显著提升。
2. 使用少量数据微调之后的模型,抽取得到的实体的准确率和三元组的准确率都取得
明显的提高。
3. 该实验结果表明 UIE 模型只需要少量的标注数据就可以显著的提高模型在垂直领域
数据上的抽取能力。
四. 知识问答
在本节中,我们将对本项目所涉及到的下游应用知识问答模块进行介绍。概括来说,在
问题生成方面,我们抛弃了繁琐的人工标注问题数据的模式,转而使用 ChatGPT 生成模型
作 为 获 取 知 识 问 答 所 需 测 试 问 题 的 来 源 。 在 知 识 库 问 答 (Knowledge-Based Question
Answering, KBQA) 方面,我们首先找到语义最接近的模版,确定候选问题模版集,然后利
用查询语句 SPARQL 来查找问题结果,从而完成最后的回答。下面我们将介绍具体的实验
细节。
1. 问题生成
为减少人力开支,我们使用 ChatGPT 来自动生成测试问题。具体地,我们随机采样了
50 条基于上游抽取模型获得的三元组,以 prompt 的形式作为 ChatGPT 的输入。为了控制生
成的质量符合预期,我们提前设计了少量 case 作为 few-shot learning 的基础。我们设计的输
入如下图所示。
2. 知识库问答
对于知识问答的核心模块——知识库问答,我们的具体实施思路如下图所示。
第 9 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
1 . 从一个问题开始,对问题中的关键信息进行提取,特别关注三元组中的词汇特征。
系统接着进行词语和实体的标注,对照动词词典和词语词典来分类和理解这些标注的信息。
2. 利用系统提取标注的实体分别得到查询结果和问题的答案模版。
3. 整合查询结果和答案模版得到最终结果效果如下图所示。
3. 性能评估
我们利用抽取到的 50 条三元组作为 Ground Truth 对 KBQA 的性能进行评估。实验结果
显示,我们的完全匹配率 (exact matching,EM) 为 62%。在 Bad Case 分析中,我们发现首
先知识库质量在一定程度上影响了回答质量,其次有时复杂问题的实体识别会出现错误导致
系统性能下降。因此,我们分析认为,如果需要继续提高 KBQA 的性能,可能需要对实体
识别部分做进一步的改进。
五. 原型系统
本节主要分为两个部分,分别是数据库搭建和可视化系统,下面将分别进行介绍。
第 10 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
1. 数据库搭建
针对抽取出来的 3943 个三元组,7014 个实体,我们利用 Neo4j 进行存储。Neo4j 是一
个图数据库管理系统,它专注于存储和处理图形数据。与传统的关系型数据库不同,Neo4j
将数据表示为图,这使得它非常适合处理需要大量复杂关系的数据,例如社交网络、网络安
全、推荐系统、知识图谱等领域。
Neo4j 以图形结构存储数据,其中节点表示实体,关系表示实体之间的连接或关联关系。
这种数据模型使得查询和分析复杂关系网络变得高效简单。由于其图形结构和优化存储方
式,Neo4j 能够实现高效的图形遍历和复杂查询,适用于实时查询场景。
我们在本地部署了 Neo4j 数据库,并且建立了一个表专门存放三元组关系 (s-p-o),根
据实体可以查询到与之相关连的关系,以及对应的属性。
2. 数据库可视化
完成了 Neo4j 数据库的构建之后,我们利用 Neo4j 的可视化功能对知识图谱进行可视
化,如下图所示。
当查找与“秦”相关的节点时,出现以下的内容,包括秦朝的创始人、秦朝的都城、秦
朝的历史人物、秦朝的历史事件等。
针对秦朝的都城洛阳,如果我们想继续查询洛阳是否是其他朝代的都城,可以直接点击
洛阳的实体,会出现其他的朝代名称,如图所示。
第 11 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
六. 总结
在本项目中,我们针对中学历史教材设计了一系列解析、抽取策略。
首先针对教材的 PDF 格式,我们采用 OCR 等技术提取其中的文本作为非结构化抽取的
语料来源。其次,考虑到教材附录部分的结构化表格,制定规则进行抽取,作为重要的三元
组补充。之后,针对非结构化文本语料,我们利用统一抽取大模型 UIE,首先进行 zero-shot
阶段抽取,之后针对部分语料,进行手动标注数据,fine-tune 模型并对比微调前后的抽取效
果并进行了对比分析。同时,由于大量的抽取模型都是抽取式,我们尝试探究生成式模型的
抽取效果,于是我们利用 ChatGPT,制定 prompt 模版进行关系抽取,对抽取式模型的 bad
case 进行了测试和分析。 最后,我们实现了知识问答 (KBQA) 系统和可视化系统。KBQA
部分,我们同样利用 ChatGPT 生成了一系列测试问题,针对这些问题进行了问答测试,并
对结果进行了分析。
可视化部分,我们首先将实体和三元组知识导入 Neo4j 数据库中进行存储,之后利用
可视化功能进行展示。总而言之,我们完成了解析、抽取、存储、问答、可视化等一系列操
作,成功实现了中学领域教材的抽取和下游应用系统的构建。
参考文献
[1] Lu Y., Liu Q., Dai D., et al. Unified Structure Generation for Universal Information
Extraction[J]. arXiv preprint arXiv: 2203.12277, 2022.
[2] Ouyang L., Wu J., Jiang X., et al. Training language models to follow instructions with
human feedback[J]. arXiv preprint arXiv: 2203.02155, 2022.
第 12 页
共 13 页
知识图谱课程报告
中学教材领域知识图谱构建
人员与工作安排:
陈丽娜:构建教材数据集、利用 UIE 模型抽取实体和三元组并微调对比实验结果
彭程昊:构造 kbqa 模型并对模型进行测试
杨溪源:构造 Neo4j 原型系统并可视化知识图谱
裴怡雯:构造 UIE 模型的微调训练集以及 kbqa 模型的测试集
高博文:构造历史文本数据集、撰写报告
第 13 页
共 13 页
Download