💡 作者:韩信子@ShowMeAI,奇异果@爱奇艺
📘 大厂解决方案系列教程:https://www.showmeai.tech/tutorials/50
📘 本文地址:https://www.showmeai.tech/article-detail/95
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏 ShowMeAI 查看更多精彩内容
一图看懂全文
ShowMeAI社区的技术专家小伙伴们对知识图谱的典型算法做了实现,构建了相关应用 🏆『知识图谱构建与落地实践』,对细节感兴趣的话,请前往 这里 查看实现代码参考。代码的整理花费了很多心思,欢迎大家 PR 和 Star!
⭐ ShowMeAI官方GitHub(实现代码参考): https://github.com/ShowMeAI-Hub/
2012年5月,Google发布了知识图谱(Knowledge Graph),以提升搜索引擎返回的答案质量和用户查询的效率。有了知识图谱作为辅助,搜索引擎能够洞察用户查询背后的语义信息,返回更为精准、结构化的信息,更大可能地满足用户的查询需求。
目前,随着智能信息服务应用的不断发展,知识图谱已广泛应用于智能搜索、智能问答、个性化推荐、聊天机器人、大数据风控、证券投资、智能医疗、自适应教育等领域。知识图谱做AI技术的重要垂直分支,其在技术领域的热度也逐年上升。
本篇是『知识图谱构建与落地实践』的实践篇,我们与来自爱奇艺的NLP工程师奇异果,一起研究学习爱奇艺搜索团队2015年开始搭建的奇搜知识图谱库,了解奇搜知识图谱的构建过程,及其在爱奇艺搜索、NLP服务中的具体应用。
一、知识图谱介绍
本质上,知识图谱是一种揭示实体之间关系的语义网络,对现实世界的事物及其相互关系进行形式化地描述。
A knowledge graph consists of a set of interconnected typed entities and their attributes.——《Exploiting Linked Data and Knowledge Graphs in Large Organisations》
知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱由一系列的(实体,关系,实体)三元组构成,用以表达现实世界中的诸多场景。
- 实体(Entity)指的是现实世界中的事物,是图里的节点。
- 关系(Relation)指的是不同实体之间的某种联系,是图里的“边”。
图示为一个社交网络知识图谱: 实体有『人』『物品』『建筑』『城市』等。『人与人之间的关系』可以是朋友或粉丝,『人与物品的关系』可以是创作或喜欢。
二、奇搜知识图谱构建方法与流程
爱奇艺搜索是国内最大的视频搜索引擎之一,涵盖全网海量视频资源,为用户提供优质的全网视频&娱乐领域的搜索服务。
奇搜团队努力完善对视频内容和用户意图的理解,并在过程中构建了以视频领域为主的知识图谱库。
当前,奇搜知识图谱的构建流程主要分为几个步骤:
- 知识表示与建模
- 知识获取
- 知识融合
- 知识存储
- 知识应用(知识查询与推理)
2.1 知识表示与建模
我们在确认知识的建模表示方式之后,再构建知识图谱。目前主要的知识建模方式有两种,爱奇艺奇搜知识图谱的构建采用的是自顶向下的建模方式。
(1)自顶向下的数据建模方法。先为知识图谱设计数据模式( Schema ),再依据设计好的数据模式进行有针对性的数据抽取;
(2)自底向上的数据建模方法。先进行数据的收集和整理,再根据数据内容总结、归纳其特点,提炼框架,逐步形成确定的数据模式。
1)RDF三元组
RDF(Resource Description Framework),即资源描述框架,实际上是一种数据模型,用来链接资源的各种描述。
- Resource:页面、图片、视频等任何具有URI标识符。
- Description:属性、特征和资源之间的关系。
- Framework:模型、语言和这些描述的语法。
RDF由一系列三元组(triple)模型组成,即每一份知识可以被分解为 (Subject(主),Predicate(谓),Object(宾))。
- 主语(Subject):声明被描述的对象
- 谓语(Predicate):这个对象的属性
- 宾语(Object):这个属性的值
所以,RDF三元组可以被描述成 (对象,属性,值),即上文提到的 (节点,边,节点) 这样的图。
2)RDFS (RDF Schema)
一个三元组就是一个关系。在RDF里可以声明一些规则,从一些关系推导出另一些关系。这些规则称为“Schema”,所以有了 RDFS(RDF Schema)。规则可以用一些词汇表示,如Class、subClassOf、type、Property、subPropertyOf、Domain、Rnage等。
『爱奇艺是一家人工智能公司』 和『一家人工智能公司是一家高科技公司』,可以推导出『爱奇艺是一家高科技公司』。
3)奇搜知识图谱Schema
奇搜基于RDF/RDFS定义了图谱的实体类型、关系(属性)类型、以及实体本身的 Schema 定义。每一层定义在 Schema 的表示语法上都是一致的。
- Rules层(规则层)。一些基础概念的定义(包括RDF/RDFS已有的定义,以及基于RDF / RDFS定义的、供实体类型/属性定义使用的规则定义),该层规则的定义一般在确定后是不可变的。
- Ontology层(本体定义层)。包括可实例化的实体类型(Class,可继承)和属性(Property,可继承)的定义,如Thing,Person,wife,name等。
- Entities层(实体层)。保存在实体库中的具体实体。
为了帮助定义和使用图谱 Schema(主要上图中的本体定义层),爱奇艺搜索团队开发了一套 Schema 系统来负责管理和解析奇搜知识图谱的 Schema 定义:
最终定义的实体类型的继承关系片段示例如下图:
2.2 知识获取
知识图谱的构建是后续应用的基础,而且构建的前提是需要把数据从不同的数据源中抽取出来。知识获取是构建知识图谱的前提条件,也是自动构建知识图谱的影响核心要素。
数据是知识图谱的根基,直接关系到知识图谱构建的效率和质量。比如,从结构化的数据中构建知识图谱比从非结构化的数据中构建,效率和准确率要高;数据越复杂,噪音越大,构建成本就越高。
目前奇搜知识图谱的数据来源除去人工创建的数据外,主要有站内数据、垂直网站数据与百度百科数据三种数据来源。
1)实体分类
实体分类主要用于处理百度百科的数据。因为百度百科的数据没有类别信息,需要先对词条进行实体类型的识别。具体实现是为每种实体类型训练一个实体分类器,准确率可衡量,并且互不影响,可以快速拓展。
实体分类器模型示意图,整体采用启发式方法。
- 构建基于规则池的分类器,生成训练数据,训练DNN模型(self-attention)文本分类模型;
- DNN分类器与规则分类器互相扩充迭代(一到两轮),最终线上使用规则分类器。
- 生成过程中会用上百科词条中的描述文本、infobox字段、超链接词条、词条标签等信息作为特征。
2)实体抽取
实体抽取,是指从数据中识别和抽取实体的属性与关系信息。对不同类型、不同数据源的数据,分别开发属性/关系抽取脚本。
由易到难,主要包括以下三类抽取方式:
(1)结构化数据抽取:大部分站内/垂直网站的信息,以及部分百度百科的信息,是结构化的数据,比较易于抽取。源数据结构和实体类型定义(即目标数据结构)多种多样。为了提高开发效率,将结构化数据的抽取流程进行抽象,并写成统一的框架,利用策略模式将抽取的具体规则用groovy脚本来实现。当扩展新的来源和目标实体类型时,只需实现新的抽取脚本。
(2)半结构化数据抽取:百度百科中存在很多表格、列表等格式不完全规则的半结构化信息,抽取有一定难度。比如,半结构化信息中存在一些质量较高的统计性的数据。对于这类数据,采用基于有监督学习的包装器归纳方法进行抽取。
(3)非结构化数据挖掘:百度百科以及站内的描述等大量文本中,也存在有很多宝贵的信息。对于这类数据的实体挖掘,需要借助自然语言处理的手段(主要是实体识别等服务)。
- 一方面,通过实体链接服务把从文本中抽取得到的实体对象,链接到实体库中对应的正确实体对象,以挖掘文本中关系。
- 另一方面,利用NER(name entity recognition/实体识别)技术来识别来挖掘文本中的实体。
2.3 知识融合
知识融合主要解决实体对齐(Object Alignment) 的问题。完成实体抽取后,存在实体ID不同但代表真实世界中同一对象的情况。知识融合即是将这些实体合并成一个具有全局唯一标识的实体对象,添加到知识图谱中。
下图是实体对齐的流程图。
所有来源的实体数据都会进入原始实体库,并对原始表中的数据建立索引。当一个原始实体 rawEntity 进入最终实体库之前,要在原始实体库中寻找是否有其它原始实体和rawEntity实际上是同一个实体。
- 首先,在索引中根据名字、别名等字段查询出若干个可能是相同实体的候选列表,这个步骤的目的是减少接下来流程的计算量。
- 然后,经过实体判别模型,根据模型得分识别出待合并对齐的原始实体。
- 最后,经过属性融合模型,将各原始实体的属性字段进行融合,生成最终的实体。
这个流程中的合并判断模型实际上是通过机器学习训练生成的二分类器。
2.4 知识存储
线上使用的图数据库引擎选择了JanusGraph。JanusGraph需要外部的存储系统与外部索引系统的支持。所以,爱奇艺搜索团队借助爱奇艺云平台的Hbase和ES集群,搭建了自己的JanusGraph分布式图数据库引擎,支持在线游走查询服务。
三、奇搜图谱的业务应用
3.1 问答式搜索服务
基于图数据库引擎提供的查询服务,以及NLP技术对用户query的意图理解,提供了多种类型的问答式搜索结果服务。包括:
- 明星、剧集的属性类的查询:如生日、剧的播出时间等。
- 实体的关系类的查询:明星的关系、剧集与明星/角色的关系、剧集间的关系、以及各种关系的组合等等。
1)智能问答
◉ 吴京学校
2)关系查询
◉ 《甄嬛传》演员表
3)剧集周边
◉ 《请回答1988》主题曲
4)关系组合
◉ 刘培强的演员还演过
3.2 基础数据服务
奇搜知识图谱的实体库作为基础数据,被用于NLP团队提供的分词和实体识别、意图识别等服务,也在明星图谱等业务场景下直接展示。
1)分词实体识别
◉ 于和伟在《觉醒年代》里饰演陈独秀
2)明星图谱展示
◉ 吴京
3.3 标签挖掘与标签体系完善
知识图谱的数据,可以帮助建立和完善标签体系,以及挖掘视频数据上的标签;同时,标签体系也可以反过来丰富知识图谱。
1)标签挖掘
利用推理等技术,对知识图谱进行挖掘。推理功能一般通过可扩展的规则引擎来完成:
- 属性的推理:如根据出生年月推理出年龄、星座等。
- 关系的推理:如根据已有的『妻子关系』推理出反向『丈夫关系』,根据『儿子的儿子』链式关系推理出『孙子』关系等。
2)标签体系完善
视频标签体系完善可以采用同样的方法:视频上的标签与图谱实体进行映射之后,应用和上面一样的推理规则(这里主要用到实体的上下位词、属于、包含等关系)来进行标签拓展。其他的拓展方法还包括Graph Embedding等技术(扩展同类型的关联性强的实体)。
下面是一些标签挖掘的线上应用实例:
◉ 广场舞:广场舞实体、舞队实体、舞曲实体、视频实体◉ 科幻电影:科幻电影实体、类型实体、明星实体、视频实体
四、总结
上文介绍了奇搜知识图谱的构建以及在搜索中应用。
传统的视频搜索,通过为整段视频添加文字标签,并将其与用户搜索的信息进行匹配,来完成搜索过程,其搜索原理与传统文字搜索相同。
基于爱奇艺的核心视频业务,奇搜知识图谱全新的娱乐搜索功能,可以帮助用户找到想要的内容、回答用户的问题、以及理解用户的搜索意图,给用户带来更佳的搜索体验。随着视频内容理解和视频知识图谱库的不断完善,未来用户观看视频将像使用文字一样轻松便捷,对于视频搜索、互动的想象空间也在不断清晰。
ShowMeAI 大厂技术实现解决方案推荐
- 大厂解决方案系列 | 数据集&代码集(持续更新中):https://www.showmeai.tech/tutorials/50
- ShowMeAI官方GitHub(实现代码):https://github.com/ShowMeAI-Hub/
『推荐与广告』大厂解决方案
『计算机视觉 CV』大厂解决方案
『自然语言处理 NLP』大厂解决方案
- 『金融科技』大厂解决方案
- 『生物医疗』大厂解决方案
- 『智能制造』大厂解决方案
- 『其他AI垂直领域』大厂解决方案
ShowMeAI系列教程精选推荐
- 图解Python编程:从入门到精通系列教程
- 图解数据分析:从入门到精通系列教程
- 图解AI数学基础:从入门到精通系列教程
- 图解机器学习算法:从入门到精通系列教程
- 机器学习实战:手把手教你玩转机器学习系列
- 深度学习教程:吴恩达专项课程 · 全套笔记解读
- 自然语言处理教程:斯坦福CS224n课程 · 课程带学与全套笔记解读
- 深度学习与计算机视觉教程:斯坦福CS231n · 全套笔记解读