前言
文本是参加今年的CCKS评测,基于本体的金融知识图谱自动化构建技术之后的一篇总结博客,我查阅了大量文献,并做了大量采用深度学习模型的实验,但最终提交时效果最好的方法还是规则匹配。文本中总结了我在最终提交时使用的方案,以及在参加评测过程中做的各种实验,另外还有评测结束后还没有来得及实现的一些想法。目前我毕设开了相关的课题,现在还在继续研究。
一.评测任务介绍
评测任务
金融研报是各类金融研究结构对宏观经济、金融、行业、产业链以及公司的研究报告。报告通常是有专业人员撰写,对宏观、行业和公司的数据信息搜集全面、研究深入,质量高,内容可靠。报告内容往往包含产业、经济、金融、政策、社会等多领域的数据与知识,是构建行业知识图谱非常关键的数据来源。另一方面,由于研报本身所容纳的数据与知识涉及面广泛,专业知识众多,不同的研究结构和专业认识对相同的内容的表达方式也会略有差异。这些特点导致了从研报自动化构建知识图谱困难重重,解决这些问题则能够极大促进自动化构建知识图谱方面的技术进步。
本评测任务参考 TAC KBP 中的 Cold Start 评测任务的方案,围绕金融研报知识图谱的自动化图谱构建所展开。评测从预定义图谱模式(Schema)和少量的种子知识图谱开始,从非结构化的文本数据中构建知识图谱。其中图谱模式包括 10 种实体类型,如机构、产品、业务、风险等;19 个实体间的关系,如(机构,生产销售,产品)、(机构,投资,机构)等;以及若干实体类型带有属性,如(机构,英文名)、(研报,评级)等。在给定图谱模式和种子知识图谱的条件下,评测内容为自动地从研报文本中抽取出符合图谱模式的实体、关系和属性值,实现金融知识图谱的自动化构建。
评测地址
CCKS 2020: 基于本体的金融知识图谱自动化构建技术评测
链接:https://www.biendata.xyz/competition/ccks_2020_5/
GitHub代码
https://github.com/JavaStudenttwo/ccks_kg
最终排名
最终排名为第五名
二.目前方案
由于评测包含的子任务比较多,有实体识别、关系抽取和属性抽取,可以使用的技术也非常多,有监督,无监督,半监督等等,所以我在做评测的过程中尝试了很多方法,但是大部分的模型都不如规则,所以我最终提交的方案中使用了大量规则匹配方法。
方案整体流程图
整体结构可以分为实体识别和关系/属性抽取两部分,流程可以分为6步,其中2、3和4步会重复执行多次。
- 第1步:通过Hanlp和规则匹配的方式抽取部分实体
- 第2步:采用远程监督方法,用种子知识图谱对齐无标数据得到标出了实体的数据
- 第3步:用上一步得到的标出了实体的数据训练模型
- 第4步:用上一步训练的实体识别模型抽取无标数据中的实体,并将抽取出的实体加入到种子知识图谱中,增加种子知识图谱的规模,重复2,3,4步多次不断使种子知识图谱规则不断扩大
- 第5步:通过重复2,3,4步多次后得到扩展了大量实体的知识图谱,用种子知识图谱对齐无标数据,将无标数据中的实体都找出来
- 第6步:通过上一步得到无标数据中的实体后,使用规则的方法判断实体间的关系和属性
1.实体抽取部分
1)外部工具
通过Hanlp实体识别工具,抽取“人物”和“机构”两种类型的实体。Hanlp工具的实体识别模型是其他有标语料上训练的,这里使用外部工具本质上是使用了迁移学习方法。
2)规则
通过规则,抽取“研报“,“文章“,“风险“,“ 机构“四种类型的实体。
3)深度学习(远程监督实体识别)
除了规则匹配外,还可以采用远程监督的方法,主要用于抽取研报中的实体,具体流程如下图所示:
- 使用规则和外部工具抽取一部分实体
- 将原始数据平均分成两半,一半用于训练,一半用于测试,对用于训练的一半数据使用远程监督进行标注
- 采用将远程监督方法标注的数据按4:1划分,分别作为训练和验证集,训练模型
- 使用上一步训练出的模型在测试集上进行预测,抽取出一部分实体
- 通过规则匹配的方法