知识图谱的概念最早由 Google 在2012 年提出, 旨在架构更智能的搜索引擎,2013年之后开始在学术界和产业界普及,目前很多大型互联网公司都在积极部署本企业的知识图谱,Facebook、百度、阿里、腾讯、美团等企业的落地应用场景如下图所示。
作为人工智能核心技术驱动力,知识图谱可以缓解深度学习依赖海量数据训练,需要大规模算力的问题,能够广泛适配不同的下游任务,且具有良好的解释性。目前,这一技术已广泛应用于搜索、推荐、广告、风控、智能调度、语音识别、机器人等多个业务领域。
从落地行业来看,目前知识图谱的应用主要集中在电商、医疗、金融等商业和服务领域,关于汽车知识的语义网络及知识图谱构建缺少系统性的指导方法。本文以汽车领域知识为例,围绕车系、车型、经销商、厂商、品牌等实体及相互关系,提供一种从零搭建领域图谱的思路。
一、如何进行图谱构建?
构建挑战
知识图谱是真实世界的语义表示,其基本组成单位是“实体-关系-实体”,“实体-属性-属性值”的三元组(Triplet),实体之间通过关系相互联结,从而构成语义网络。图谱构建中会面临较大的挑战,但构建之后,可在数据分析、推荐计算、可解释性等多个场景中展现出丰富的应用价值。
其中,构建挑战包括:
- Schema 难定义。目前尚无统一成熟的本体构建流程,且特定领域本体定义通常需专家参与;
- 数据类型异构。通常情况下,一个知识图谱构建中面对的数据源不会是单一类型,面对结构各异的数据,知识转模及挖掘的难度较高;
- 依赖专业知识。领域知识图谱通常依赖较强的专业知识,例如车型对应的维修方法,涉及机械、电工、材料、力学等多个领域知识,且此类关系对于准确度的要求较高,需要保证知识足够正确;
- 数据质量无保证。挖掘或抽取信息需要知识融合或人工校验,才能作为知识助力下游应用。
构建后将获得的收益:
- 知识图谱统一知识表示。通过整合多源异构数据,形成统一视图;
- 语义信息丰富。通过关系推理可以发现新关系边,获得更丰富的语义信息;
- 可解释性强。显式的推理路径对比深度学习结果具有更强的解释性;
- 高质量且能不断积累。根据业务场景设计合理的知识存储方案,实现知识更新和累积。
架构设计
技术架构主要分为构建层、存储层及应用层三大层,架构图如下:
- 构建层。包括Schema定义,结构化数据转模,非结构化数据挖掘,以及知识融合;
- 存储层。包括知识的存储和索引,知识更新,元数据管理,以及支持基本的知识查询;
- 服务层。包括智能推理、结构化查询等业务相关的下游应用层。
二、构建步骤及流程
依据架构图,具体构建流程可分为四步:本体设计、知识获取、知识入库,以及应用服务设计及使用。
本体构建
本体(Ontology)是公认的概念集合,本体的构建是指依据本体的定义,构建出知识图谱的本体结构和知识框架。
基于本体构建图谱的原因主要有以下几点:
- 明确专业术语、关系及其领域公理,当一条数据必须满足Schema预先定义好的实体对象和类型后,才允许被更新到知识图谱中。
- 将领域知识与操作性知识分离,通过Schema可以宏观了解图谱架构及相关定义,无须再从三元组中归纳整理。
- 实现一定程度的领域知识复用。在构建本体之前,可以先调研是否有相关本体已经被构建出来,这样可以基于已有本体进行改进和扩展,达到事半功倍的效果。
- 基于本体的定义,可以避免图谱与应用脱节,或者修改图谱Schema比重新构建成本还要高的情况。
按照知识的覆盖面来看,知识图谱可以划分为通用知识图谱和领域知识图谱,通用图谱更注重广度,强调融合更多的实体数量,但对精确度的要求不高,很难借助本体库对公理、规则及约束条件进行推理和使用。而领域图谱的知识覆盖范围较小,但知识深度更深,往往是在某一专业领域上的构建。
考虑对准确率的要求,领域本体构建多倾向于手工构建的方式,例如代表性的七步法、IDEF5方法等[1],该类方法的核心思想是,基于已有结构化数据,进行本体分析,将符合应用目的和范围的本体进行归纳及构建,再对本体进行优化和验证,从而获取初版本体定义。若想获取更大范畴的领域本体,则可以从非结构化语料中补充,考虑手工构建过程较长,以汽车领域为例,提供一种半自动本体构建的方式。
构建详细步骤如下:
- 首先,收集大量汽车非结构化语料(如车系咨询、新车导购文章等),作为初始个体概念集,利用统计方法或无监督模型(TF-IDF、BERT等)获取字特征和词特征;
- 其次,利用BIRCH聚类算法对概念间层次划分,初步构建起概念间层级关系,并对聚类结果进行人工概念校验和归纳,获取本体的等价、上下位概念;
- 最后,使用卷积神经网络结合远程监督的方法,抽取本体属性的实体关系,并辅以人工识别本体中的类及属性的概念,构建起汽车领域本体。
上述方法可有效利用BERT等深度学习技术,更好地捕捉语料间的内部关系,使用聚类分层次对本体各模块进行构建,辅以人工干预,能够快速、准确的完成初步本体构建。下图为半自动化本体构建示意图:
利用Protégé本体构建工具[2],可以进行本体概念类、关系、属性和实例的构建,下图为本体构建可视化示例图:
Protégé可以导出不同类型的Schema配置文件,其中owl.xml结构配置文件如下图所示。该配置文件可直接在MySQL、JanusGraph中加载使用,实现自动化的创建Schema。
知识获取
知识图谱的数据来源通常包括三类数据结构,分别为结构化数据、半结构化数据、非结构化数据。面向不同类型的数据源,知识抽取涉及的关键技术和需要解决的技术难点有所不同。
结构化知识转模
结构化数据是图谱最直接的知识来源,基本通过初步转换就可以使用,相较其他类型数据成本最低,所以图谱数据一般优先考虑结构化数据。结构化数据可能涉及多个数据库来源,通常需要使用ETL方法转模,ETL即Extract(抽取)、Transform(转换)、Load(装载)。通过ETL流程可将不同源数据落到中间表,从而方便后续的知识入库。下图为车系实体属性、关系表示例图:
车系与品牌关系表:
非结构化知识抽取——三元组抽取
除了结构化数据,非结构化数据中也存在着海量的知识(三元组)信息。一般来说,企业的非结构化数据量要远大于结构化数据,挖掘非结构化知识能够极大拓展和丰富知识图谱。
三元组抽取算法的挑战
问题1:单个领域内,⽂档内容和格式多样,需要⼤量的标注数据,成本⾼。
问题2:领域之间迁移的效果不够好,跨领域的可规模化拓展的代价⼤。
关键点:模型基本都是针对特定⾏业特定场景,换⼀个场景,效果会出现明显下降。
解决思路:Pre-train + Finetune的范式。
预训练:重量级底座让模型“⻅多识⼴”,充分利⽤⼤规模多⾏业的⽆标⽂档,训练⼀个统⼀的预训练底座,增强模型对各类⽂档的表示和理解能⼒;
微调:轻量级⽂档结构化算法。在预训练基础上,构建轻量级的⾯向⽂档结构化的算法,降低标注成本。
基于⻓⽂本的预训练⽅法,大多都没有考虑⽂档特性,如空间(Spartial)、视觉(Visual)等信息。并且基于⽂本设计的PretrainTask,整体是针对纯⽂本进⾏的设计,⽽没有针对⽂档的逻辑结构设计。
针对该问题这里介绍一种⻓⽂档预训练模型DocBert[3],DocBert模型设计。
使⽤⼤规模(百万级)⽆标注⽂档数据进⾏预训练,基于⽂档的⽂本语义(Text)、版⾯信息(Layout)、视觉特征(Visual)构建⾃监督学习任务,使模型更好地理解⽂档语义和结构信息。
Layout-Aware MLM:在Mask语⾔模型中考虑⽂本的位置、字体⼤⼩信息,实现⽂档布局感知的语义理解。
Text-Image Alignment:融合⽂档视觉特征,重建图像中被Mask的⽂字,帮助模型学习⽂本、版⾯、图像不同模态间的对⻬关系。
Title Permutation:以⾃监督的⽅式构建标题重建任务,增强模型对⽂档逻辑结构的理解能⼒。
Sparse Transformer Layers:⽤Sparse Attention的⽅法,增强模型对⻓⽂档的处理能力(见下图)。
挖掘概念,兴趣词标签,关联到车系、实体
除了结构化和非结构化文本中获取三元组,我们还挖掘物料所包含的分类、概念标签和兴趣关键词标签,并建立物料和车实体之间的关联,为汽车知识图谱带来新的知识。下面从分类、概念标签、兴趣词标签来介绍汽车之家所做的内容理解部分工作以及思考。
分类体系作为内容刻画的基础,对物料进行粗粒度的划分。基于人工定义的方式建立统一的内容体系,通过AI模型进行进一步划分。在分类方法上,我们采用了主动学习的方式,对比较难分的数据进行标注,同时采用数据增强、对抗训练,以及关键词融合等方法提高分类的效果,分类算法流程见下图。
概念标签粒度介于分类和兴趣词标签之间,比分类粒度更细,同时比兴趣词对于兴趣点刻画更加完整。我们建立了车视野、人视野、内容视野三个维度,丰富了标签维度,细化了标签粒度。丰富且具体的物料标签,更加方便搜索推荐基于标签的模型优化,且可用于标签外展起到吸引用户及二次引流等作用。概念标签的挖掘,结合在query等重要数据上采用机器挖掘的方式,对概括性进行分析,通过人工review,拿到概念标签集合,采用多标签模型分类。
兴趣词标签是最细粒度的标签,映射为用户兴趣,根据不同用户兴趣偏好可以更好的进行个性化推荐。关键词的挖掘采用多种兴趣词挖掘相结合的方式,包括Keybert提取关键子串,并结合TextRank、PositionRank、singlerank、TopicRank、MultipartiteRank等句法分析多种方法,产生兴趣词候选。最后,通过聚类+人工的方式生成最终版高质量兴趣标签。
对于不同粒度的标签还是在物料层面,我们需要把标签和车建立起关联。首先,我们分别计算出标题\文章的所属标签,然后识别出标题\文章内的实体,得到若干标签—实体伪标签,最后根据大量语料,共现概率高的标签就会标记为该实体的标签。通过以上三个任务,我们获得了丰富且海量的标签。对车系、实体关联上这些标签,会极大丰富我们的汽车图谱,建立了媒体和用户的关注车标签。
人效提升
为了实现更好的模型效果,获得更大规模的训练样本,解决标注成本高和标注周期长成为亟待解决的问题。首先,我们使用半监督学习,利用海量未标注数据进行预训练。之后采用主动学习方式,最大化标注数据的价值,迭代选择高信息量样本进行标注。最后利用远程监督,发挥已有知识的价值,发觉任务之间的相关性。
知识入库
知识图谱中的知识是通过RDF结构来进行表示的,其基本单元是事实。每个事实是一个三元组(S, P, O),在实际系统中,按照存储方式的不同,知识图谱的存储可以分为基于RDF表结构的存储和基于属性图结构的存储。图库更多是采用属性图结构的存储,常见的存储系统有Neo4j、JanusGraph、OritentDB、InfoGrid等。
图数据库选择
通过 JanusGraph[4] 与 Neo4J、ArangoDB、OrientDB 这几种主流图数据库的对比,我们最终选择JanusGraph 作为项目的图数据库,之所以选择 JanusGraph,主要有以下原因:
- 基于 Apache 2 许可协议开放源码,开放性好;
- 支持使用 Hadoop 框架进行全局图分析和批量图处理;
- 支持很大的并发事务处理和图操作处理。通过添加机器横向扩展 JanusGraph 的事务 处理能力,可以完成毫秒级别相应和大图的复杂查询;
- 原生支持 Apache TinkerPop 描述的当前流行的属性图数据模型;
- 原生支持图遍历语言 Gremlin。
下图是主流图数据库对比。
JanusGraph数据存储模型
了解Janusgraph存储数据的方式,有助于我们更好的利用该图库。JanusGraph 以邻接列表格式存储图形,这意味着图形存储为顶点及其邻接列表的集合。顶点的邻接列表包含顶点的所有入射边(和属性)。
JanusGraph 将每个邻接列表作为一行存储在底层存储后端中。(64 位)顶点 ID(JanusGraph 唯一分配给每个顶点)是指向包含顶点邻接列表的行的键。每个边和属性都存储为行中的一个单独的单元格,允许有效的插入和删除。因此,特定存储后端中每行允许的最大单元数也是 JanusGraph 可以针对该后端支持的顶点的最大度数。
如果存储后端支持 key-order,则邻接表将按顶点 id 排序,JanusGraph 可以分配顶点 id,以便对图进行有效分区。分配 id 使得经常共同访问的顶点具有绝对差异小的 id。
三、知识图谱在推荐中的应用
汽车领域拥有专业参数划分和多领域技术,同时延伸到社会、科技、娱乐等多个方面,知识图谱在汽车推荐中提供了内容之外丰富的知识信息,在推荐中起到了十分重要的作用,在汽车的看、买、用等不同场景都能带来明显的效果提升。在看车场景中,低频用户对应的点击行为少,可能导致内容推荐效果差等问题,此时可通过图谱引入额外信息(相似用户群组、车系属性标签等),使用跨域知识增强改善数据稀疏性问题。
在买车场景中,通过显式的知识展示、路径召回,以及解释理由生成,直观地告诉用户推荐他某款车的理由,以及召回对应的汽车类资讯。在用车场景中,通过用户的看车及购买行为,从汽车保养、维修、用车成本等方面有效提升用户的用车体验。
本章基于汽车的不同应用场景,从KG在推荐系统中冷启、理由、排序等方面,介绍推荐可用的相关技术,为图谱及下游应用的实践提供了思路。
知识图谱在推荐冷启动中的应用
知识图谱能够从user-item交互中建模KG中隐藏的高阶关系,很好地解决了因用户调用有限数量的行为而导致的数据稀疏性,进而可以应用在解决冷启动的问题上。
Sang 等[5]提出了一种双通道神经交互的方法,称为知识图增强的残差递归神经协同过滤(KGNCF-RRN),该方法利用KG上下文的长期关系依赖性和用户项交互进行推荐。Du Y等[6]提出了一种新的基于元学习框架的冷启问题解决方案MetaKG,包括collaborative-aware meta learner和knowledge-aware meta learner,捕捉用户的偏好和实体冷启动知识。在两个learner的指导下,MetaKG可以有效地捕捉到高阶的协作关系和语义表示,轻松适应冷启动场景。此外,作者还设计了一种自适应任务,可以自适应地选择KG信息进行学习,以防止模型被噪声信息干扰,MetaKG架构如下图所示。
知识图谱在推荐理由生成中的应用
推荐理由能提高推荐系统的可解释性,让用户理解生成推荐结果的计算过程,同时也可以解释item受欢迎的原因。例如,我们在推荐一篇新车导购的文章时, 使用“粉色系的欧拉外观非常好看,落地才十万,你要不要看看?”,或者是“粉色的特斯拉很适合小姐姐开,真是又美又飒!”,这样类似朋友间的叙述,会有效提升用户的阅读体验。
早期的可解释推荐主要以模板为主,模板好处是保证高可读性和准确率,但需要人工整理,且泛化性不高,给人一种重复的感觉。后来发展成不需要预设的free-form形式。在知识图谱上,以其中一条高分路径作为解释向用户展示。对应的基于user-item知识图谱的路径推理建模方法有多种,例如具有代表性的KPRN[7]和ECR[8]等,该类模型主要思想是通过用户的历史行为,寻找一条item评分最高的最优路径。例如下图,通过用户的“居住地”和“偏好”,可以得到更为形象的汽车推荐理由:“同在长沙,和你一样喜欢小蚂蚁的李先生点赞了这篇文章”。
知识图谱在推荐排序中的应用
KG可以通过给item用不同的属性进行链接,建立user-item之间的interaction,将uesr-item graph和KG结合成一张大图,可以捕获item之间的高阶联系。传统的推荐方法是将问题建模为一个监督学习任务,这种方式会忽略item之间的内在联系(例如凯美瑞和雅阁的竞品关系),并且无法从user行为中获取协同信号。下面介绍两篇KG应用在推荐排序的论文。
Wang[9]等人设计了KGAT算法(见下图),首先利用GNN迭代对embedding进行传播、更新,从而能够快速捕捉高阶联系。其次,在aggregation时使用attention机制,传播过程中学习到每个neighbor的weight,反应高阶联系的重要程度。最后,通过N阶传播更新得到user-item的N个隐式表示,不同layer表示不同阶数的连接信息。KGAT可以捕捉更丰富、不特定的高阶联系。
Zhang[10]等人提出RippleNet模型(见下图),其关键思想是兴趣传播:RippleNet将用户的历史兴趣作为KG中的种子集合(seed set),然后沿着KG的连接向外扩展用户兴趣,形成用户在KG上的兴趣分布。RippleNet最大的优势在于它可以自动地挖掘从用户历史点击过的物品到候选物品的可能路径,不需要任何人工设计元路径或元图。
总结
综上,我们主要围绕推荐介绍了图谱构建详细流程,对其中的困难和挑战做出了分析。同时也综述了很多重要的工作,以及给出了具体的解决方案,思路以及建议。最后介绍了知识图谱的应用,特别是推荐领域中冷起、可解释性、召回排序等方面,介绍了知识图谱的作用与使用。
(注:文中数据来源为汽车之家网站)
引用
[1] Kim S,Oh S G.Extracting and Applying Evaluation Criteria for Ontology Quality Assessment[J].Library Hi Tech,2019.
[2] Protege: https://protegewiki.stanford.edu
[3] DocBert,[1] Adhikari A , Ram A , Tang R , et al. DocBERT: BERT for Document Classification[J]. 2019.
[4] JanusGraph,https://docs.janusgraph.org/
[5] Sang L, Xu M, Qian S, et al. Knowledge graph enhanced neural collaborative filtering with residual recurrent network[J]. Neurocomputing, 2021, 454: 417-429.
[6] Du Y , Zhu X , Chen L , et al. MetaKG: Meta-learning on Knowledge Graph for Cold-start Recommendation[J]. arXiv e-prints, 2022.
[7] X.Wang, D.Wang, C. Xu, X. He, Y. Cao, and T. Chua, “Explainable reasoning over knowledge graphs for recommendation,” in AAAI, 2019, pp. 5329–5336
[8] Chen Z , Wang X , Xie X , et al. Towards Explainable Conversational Recommendation[C]// Twenty-Ninth International Joint Conference on Artificial Intelligence and Seventeenth Pacific Rim International Conference on Artificial Intelligence {IJCAI-PRICAI-20. 2020.
[9] Wang X , He X , Cao Y , et al. KGAT: Knowledge Graph Attention Network for Recommendation[J]. ACM, 2019.
[10] Wang H , Zhang F , Wang J , et al. RippleNet: Propagating User Preferences on the Knowledge Graph for Recommender Systems[J]. ACM, 2018.