这篇博客将以CCKS2020的新冠知识图谱构建赛道的四个子任务为纲,梳理一下具体在执行层面上的问题。具体包括四个子任务:类型推断,概念上下位关系挖掘,链接预测和基于知识图谱的问答。

一.类型推断

该任务的目的是给实体打标签。输入如下:

img1

希望的输出如下:

img2

其中,共包括7个目标类型,病毒、细菌、疾病、药物、医学专科、检查科目、症状(非目标类型输出为 NoneType)。附加数据包括提供的:百度百科,互动百科,中文维基百科,医学百科,保证任意实体至少被一个页面文件覆盖,页面文件包括含类型推断可能会用到的名称,标签和简介等信息。页面内容示例如下:

img3

两种建模思路:

(1)找到实体在页面中的句子,做序列标注;

(2)借助外部数据,扩充对实体的描述,做多分类

分析:为啥这种任务设定是OK的?

(1)对于知识型的图谱构建,有一些已经存在的知识体系。比如可以通过国家卫健委官方网站获取所有药物的列表。也就是说,现实条件下,可以让我们以较低的成本拿到实体-类型对数据。

(2)丰富的开放医学数据。典型的各种百科类页面。

(3)支持不同的建模思路,包括序列标注和多分类。整体上在标注上的区别是:传统方式是给定任意文本,比如提供百科页面,去标注实体-类型。但是最终获取的实体-类型的比例,较难提前预估,这是从输入开始的数据构建。但是,也可以从输出端开始,也就是先得到实体-类型,然后通过其他方式找到对应的文本,之后进行后续的建模推进。不管怎样,都会受限于非结构化文本的规模和质量。后者,在扩充描述上存在一些比较灵活的Trick,从而提升标注质量,丰富实体的表达。从执行方式上来看,这种是不需要人工标注的,相当于预打标,因此是一个很实际,高效的执行方案。

从任务体验上来讲,和CCKS2020的基于商品标题的大规模商品实体检索有类似之处。

补充新的工作,《筛选风险词,用实体类型推断发现限售商品》,基于通用百科数据,共计54种实体类型,60万训练数据。关键亮点是:如何基于没有标注的数据构建有标签的数据。

二.概念的上下位关系预测

工业界的一种场景是,类别体系很难一次定好,需要反复迭代。那么,能不能通过自动化的方式构建一个类别体系呢?这里,对类别体系添加了约束,强调对上下位关系的挖掘。

输入是:实体列表+概念列表

img4

输出是:实体-概念之间的关系,概念和概念之间的关系

img5

如果采用有监督的方式构建,思路如下:

(1)上下位关系构建。借助于聚类,第三方关系,知识库等方式。(比较Tricky的工作体现在这里)

(2)头实体描述和尾实体表述作为输入,三关系分类(上位,下位和无关系)

整体上,该方案存在以下问题:

(1)上下位关系,也就是标注数据的构建比较Tricky

(2)对关系层级添加了约束。上下位关系,现实条件下并不一定成立

(3)获取对实体的描述信息环节,仍旧比较灵活

(4)整体难度较大,指标较低

这里给一个聚类的效果图:

img6

补充一个类似的工作:

商品标题归集

三.链接预测

任务定义:给定(h,r,?)或者(?,r,t),预测?。这是一个典型的知识表征任务,代表工作从TransX系列开始。

参考解决方案:DistMult的改进版

四.知识图谱的自然语言问答

标准任务:KBQA,特点在于提供了SPARQL作为中间查询语句。参考方案

五.整体结论和认识

整个任务的设定仍旧没有离开标准图谱构建的范式,不过基于医疗行业的知识沉淀,在具体建模上有特色之处。虽然在上下位关系约束的前提下,可以在一定程度上实现类型体系的自动化构建,但是从目前的结果来看,距离实用仍有一段路要走。