本文作者:腾讯云高级研究员 孟辉。毕业于中国科学院大学控制科学与工程系,具有丰富的机器学习与数据挖掘经验。加入腾讯云AI语义产品组后,主要负责知识图谱相关产品的研发与应用。
点击观看完整课程
知识图谱基础
知识图谱最早由谷歌公司在2012年提出,其使用语义检索的方法从多种语言的数据源(例如FreeBase、维基百科等)收集信息并加工,以提高搜索质量、改善搜索体验。实际上,2006年Tim Berner-Lee就提出了Linked Data也就是一种在万维网数据上创建语义关联的方法。再往前追溯,语义链网络(Semantic Link Network)已经有了比较系统的研究,旨在创立一个自组织的语义互联方法来表达知识来支持智能应用,系统性的理论和方法可以参考H. Zhuge在2004年发表的《The Knowledge Grid》一文。
知识图谱的历史演进
大家可能会关注,快速构建知识图谱需要哪些技术栈呢?数据采集、数据清洗、知识抽取、知识融合、图存储是构建知识图谱最基本的技术栈,笔者这里参考百家之言将构建知识图谱的技术流程总结如下:
知识图谱技术架构示意图
我们再回到最初的原点,窥探知识图谱的本质。知识图谱,其本质是由节点和边组成的语义网络。其中,节点代表了物理世界中的实体或概念,边代表了实体之间的关系。“THINGS NOT STRINGS”,不要无意义的字符串,而是获取字符串背后隐含的对象或事物。举例来讲,歌手、演员刘德华就是上文中提到的实体,生日、妻子、身高和电影作品就是实体刘德华的属性;电影作品《无间道》的导演是刘伟强,制片所在的国家和地区是中国香港等等。
知识实体示例
从宏观的角度来看,知识图谱已经在个性化推荐、地址解析、搜索引擎、智能问答以及教育中广泛落地应用。腾讯云知识图谱团队也尝试在不同的场景中进行了探索,例如在短视频推荐中用到了基于知识图谱的相关实体推荐、在智能问答中用到了基于知识图谱的知识问答技术。腾讯云知识图谱团队结合业务场景开发了一款小程序,集成了图谱可视化、知识问答等等,感兴趣的读者可以扫描二维码进行体验。
腾讯云知识图谱应用
从0到1掌握属性抽取
根据上文中提到的知识图谱技术架构来看,将非结构化数据转换为便于在图数据库中存储的结构化数据一般需要做知识抽取,而知识抽取又包括实体抽取、关系抽取、属性抽取和概念抽取。一般地,实体抽取、属性抽取和概念抽取可以抽象为序列标注任务,关系抽取则可以抽象为分类任务。腾讯云知识图谱团队结合自身业务场景研发出了一套知识抽取算法框架(Merak,天璇知识抽取算法框架,正如《晋书·天文志》中讲到的北斗七星在太微北,
枢为天,璇为地,玑为人,权为时,衡为音,开阳为律,摇光为星。),可以实现一站式知识抽取算法任务。在属性抽取和概念抽取任务中,Merak知识抽取算法框架提供了多种算法模型,例如BERT(Bidirectional Encoder Representations from Transformers)、Bi-LSTM+CRF等等。总的来看,Merak算法框架具有以下技术优势:
- Merak提供一站式算法解决方案,用户可以通过简单的配置,可以轻松实现项目各模块(数据处理、模型训练、模型部署)自动化生成,极大地提高了知识图谱的生产效率。
- Merak将模型层进行了抽象划分,以便于对模型的理解和组装,增强框架的简洁性、灵活性和通用性,同时用户也可以在此基础上做二次开发。
- Merak支持知识抽取领域中目前主流的算法模型,包括BERT模型、Bi-LSTM+CRF、Attention CNN等等。
- Merak支持CPU和GPU多卡分布式训练,并且提供优质的BERT中文预训练模型供腾讯云客户下载使用。
在实验效果方面,Merak在关系抽取(含多示例学习)、关系抽取和属性抽取等多项任务中表现优异,无论是训练时间开销还是预测精度均达到了业界领先水准。
Merak知识抽取算法框架示例图
这里提一下,在构建知识图谱的过程中实际上也是权衡的过程,特别是过于粗放的领域知识图谱可能对业务起不到应用的效果,特别是对于问答、任务型对话等急需细粒度知识的任务;若图谱的构建过于精细,除了构建成本会变得非常昂贵以外,也会因为数据噪声使得一些任务(基于知识图谱的推理)变的困难和难以使用。
接下来,笔者从0到1向大家介绍如果利用Merak算法框架实现属性抽取任务。
从0到1学习属性抽取(1)
在属性抽取算法任务开始前需要明确抽取细节,这里就以人物属性抽取为例,性别、学历、出生地、出生日期、籍贯以及毕业学校均属于属性范畴。其次,要清楚属性抽取为什么可以抽象为序列标注任务。实际上,序列标注是自然语言处理领域四大关键任务之一,其发展可以大致分为三个阶段:统计学习方法牛刀初试(HMM、CRF)、深度神经网络异军突起(Bi-LSTM+CNNs+CRF)以及后深度神经网络纵横天下(以Transformer、BERT等为代表的后深度神经网络时代)。
大家知道,BERT在11项权威NLP任务中取得了不俗的效果,这里就以BERT为例展开探讨。初步选定模型后,需要准备训练样本,天璇在算法框架中提供了人物属性抽取样本集,涉及到的属性有出生年月、出生地、毕业院校等,具体地,如下图中上半部分所示。
从0到1学习属性抽取(2)
正如前文所述,天璇知识抽取算法框架提供了多种属性抽取算法模块,例如BERT、Bi-LSTM+CRF等经典算法。在上图中,左边为BERT模型的输入向量生成方法,整个计算流程主要分为两步走,先是进行模型预训练((1)语言模型-上下文中缺失词的预测;(2)句对二元关系预测-是否是下一句),然后在此基础上进行Fine-tune微调;右边为基于Bi-LSTM+CNNs+CRF模型的序列标注方法。
那么基于BERT模型微调的方法和基于Bi-LSTM+CNNs+CRF/Bi-LSTM+CRF模型的序列标注方法有什么区别?笔者这里做了简单的分析,结果如下:
- BERT Fine-Tune方法相较BiLSTM+CRF方法准确率更高。
- BERT方法参数量更多(3亿+),对计算资源的要求更高,也就是成本更高。
- BiLSTM+CRF是一种端到端的网络架构,不需要做任何的预训练即可达到较好的效果。
接下来,就是下载项目代码,开始人物属性抽取模型训练,这里需要特别注意的是需要提前下载好已经预训练好的中文预训练模型(这里我们使用的是基础版本的中文预训练模型),并且将训练样本放置在./../people_attribute_extraction文件夹下,其他相关的准备工作可以参考下图中快速开始部分。
从0到1学习属性抽取(3)
模型训练完成后,笔者这里对不同方法在人物属性抽取样本上的训练效果做了对比分析,结果如下图所示,实验发现基于BERT+全连接的方法效果最优,F1值约为0.985。
从0到1学习属性抽取(4)
这里插播一条行业快讯,近期英伟达公司利用512块高性能v100 GPU,训练了号称业界最大的基于Transformer的语言模型,而且参数量高达83亿,远远大于谷歌公司对外公布的预训练模型。
- BERTBASE(L=12,H=768,A=12,Total Parameters=110M)
- BERTLARGE (L=24,H=1024, A=16,Total Parameters=340M)
至此,人物属性抽取模型训练过程介绍完毕,同理概念抽取、关系抽取和实体抽取可以参考类似的操作流程,感兴趣的读者可自行尝试。
腾讯云百科知识图谱
在介绍腾讯云百科知识图谱之前,笔者先对通用知识图谱和领域知识图谱二者之间的区别和联系进行分析,如下图所示:
通用知识图谱和领域知识图谱对比分析
从上图可以看出二者在真实场景中的知识表示、知识获取和知识应用等维度都有着较大差异,而且知识图谱的构建需要综合多项因素协同考虑,其中图谱质量、图谱构建成本和图谱更新是最为重要的几个关键因素。另一方面,图谱质量和图谱构建成本往往相互制约,需要我们基于特定任务做好平衡。
腾讯云百科知识图谱(腾讯云百科知识图谱是腾讯云知识图谱团队与腾讯AI LAB TopBase团队共同建设的云上产品)属于通用知识图谱的范畴,虽然知识粒度较粗,但知识覆盖度较大,目前覆盖了51个领域(主要以音乐、影视、百科为主),221个类型、4320个属性,超过9700万实体,近10亿三元组,支持全量或增量更新。详细的领域划分如下图所示:
腾讯云百科知识图谱领域划分
这里笔者对业界对外开放的中文百科类知识图谱实体和三元组规模做了调研分析,结果如下:
名称
实体数
三元组
CN-DBpedia
1689万+
2.2亿+
zhishi.me
1728万+
1.2亿+
腾讯云百科知识图谱
9700万+
10亿+
腾讯云百科知识图谱构建数据来源主要有腾讯文娱、中文百科、互动百科、中文新闻、豆瓣等,因此腾讯云百科知识图谱在科技、音乐、体育及影视领域无论是实体还是三元组数量都更为丰富,那么对应的构建详细流程如下所示:
腾讯云百科知识图谱构建与应用
目前,腾讯云百科知识图谱已经灰度接入腾讯听听、腾讯叮当、腾讯小微机器人、微信搜一搜等,并且在相关实体推荐、百科知识问答等领域积累了丰富的实战经验。
腾讯云百科知识图谱应用
说了这么多,腾讯云百科知识图谱提供哪些具体的接口,用户如何接入呢?腾讯云百科知识图谱目前提供实体查询、关系查询和三元组查询,需要注意的是三元组查询会涉及到TQL(腾讯图查询语言)语法的使用,具体地,可在官网 API文档 中尽可能地给出了多种示例方法,如下图b,完整示例请查看 API文档。
腾讯云百科知识图谱API介绍
目前,腾讯云百科知识图谱相关接口处于免费内侧阶段,感兴趣的读者可以按照如下流程申请接入使用:
快速接入腾讯云百科知识图谱
这里笔者推荐用户通过腾讯云提供的SDK工具箱调用百科知识图谱API接口,示例如下:
SDK接入方法示例
写到这里,已近尾声,笔者通过本文向大家介绍了:
- 知识图谱的行业发展现状
- 知识抽取相关技术要点
- 腾讯云百科知识图谱的应用
时间仓促,不到之处,敬请见谅。
参考文献
- Attention Is All You Need. Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, Illia Polosukhin. 2017
- Improving Language Understanding by Generative Pre-Training. Radford A, Narasimhan K, Salimans T, et al. 2018
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova. 2018
- XLNet: Generalized Autoregressive Pretraining for Language Understanding. Zhilin Yang, Zihang Dai, Yiming Yang, Jaime Carbonell, Ruslan Salakhutdinov, Quoc V. Le. 2019
- Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context. Zihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell, Quoc V. Le, Ruslan Salakhutdinov. 2019
注:本文在撰写中参考了大量的文献,在此一并致谢