本文首先介绍了什么是旅游知识图谱,然后就旅游知识图谱的架构,构建,应用和未来几个方面展开讨论。
来源: DataFunTalk丨作者:鞠剑勋 金媛
数据猿官网 | www.datayuan.cn 今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博客中国丨趣头条丨腾讯云·云 社区
本文是DataFun金媛,从携程旅游度假AI NLP负责人鞠剑勋 ,在AI先行者大会上分享的《旅游知识图谱的构建和应用》整理而成。
旅游知识图谱
首先简单介绍什么是知识图谱。知识图谱是由Google公司在2012年提出的新概念。用信息可视化技术将知识以图的形式表示,图由节点和边构成,节点对应知识图谱的实体,自然界中的每个对象都可以称之为一个实体,例如人,公司,酒店,甚至酒店内的某个房间都可以称为实体;边对应知识图谱的关系,及实体之间的关系,比如**酒店位于北京市,“位于”就是**酒店和北京市之间的关系。
小问题:我们为什么要构建旅游知识图谱(旅游知识图谱的作用)?
传统的推荐系统会根据用户的历史行为,为用户打上隐形标签,并为用户推荐相关的产品。假设用户订购了普吉岛的旅游产品,比如自由行,用户的原因可能是喜欢旅游,喜欢海岛,于是推荐系统为该用户打上了“喜欢海岛”的标签,为该用户推荐了很多海岛的相关产品;有些用户可能喜欢普吉岛的某些服务,例如露天泳池,某家酒店等,推荐系统则引入酒店等一些特征加入推荐模型中;某些用户因为去普吉岛只需要落地签,不需要额外的手续,于是推荐系统加入了签证相关的特征;某些用户因为去普吉岛的机票打折,喜欢泰国的一些旅游景点,喜欢海鲜等,如果将这些特征全加入推荐系统,会发现推荐系统变得很困难。
酒店数据,机票数据,签证数据,景点数据等,每种数据都需要单独的数据库或者数据表去维护,将这些数据联合分析可能要做大量的BI工作,这些繁杂的分析都可以用知识图谱取代,这就是旅游业需要知识图谱的原因。
通用知识图谱可以看作是一套模板,利用领域知识向模板中填充内容,形成特定的领域知识图谱,例如旅游知识图谱,金融知识图谱,医药知识图谱,动物知识图谱等。通用知识图谱是领域知识图谱的基础,而领域知识图谱是通用知识图谱的扩充,二者相辅相成。
上图是旅游知识图谱的一个例子。以旅游产品为中心,扩散出与其相关的其他产品,比如酒店,机票,目的地,餐厅,签证,景点等。首先定义知识图谱的实体,酒店,景点,目的地,机票,餐厅等,以及它们都有哪些属性特征,例如酒店的星级,坐标,价格等,然后定义实体之间的关联,例如**酒店距离**景点多少米就是酒店和景点之间的关联,然后把具体的产品当作实体映射到本体上,以一个图结构去存储数据,建立知识库,形成知识图谱的简单架构。
旅游知识图谱的架构
一套完整的旅游知识图谱架构:上层应用包括QA应用,推荐搜索,知识挖掘等方面的应用。QA对话主要应用在以下几个方面:智能客服,智能导购,客服助手和对话机器人等,携程,淘宝等应用智能客服,智能家居则应用了智能导购系统,百度的智能音箱是类似对话机器人的一个产品。当进行QA问答时,智能回答者要通过知识图谱寻找答案,完成对话。图谱的构建包括schema本体管理,域管理等等,需要提前定义实体的类别属性等,还有数据自动化等构建,比如说知识的来源,大段的文章中抽取实体,关系等,同时对多个知识图谱进行融合,做一些补全,推理等操作,全局优化就是做一些一致性较检,智能更新等;底层是数据层,可以将现有数据库导入到知识图谱中,也可以从外部通用知识图谱收集知识,也可以从文章中,等非结构化数据中提取和采集知识来完善知识图谱。知识存储分为两个部分,分别是rdf,类rdf,比如owl,还有一个是图结构的存储。此外还有一些机器学习,nlp的一些算法等共同构建了知识图谱的架构。
owl用来存储一些三元组,本体和本体之间的关系,好处:清晰的schema定义,丰富的类与类之间的关系,实现一些简单的推理,比如属性和属性之间是否存在相反关系,位于关系,比如a位于b,b位于c,那么a位于c这样的传递关系,同时可以给每一个实体定义一个类型,给每一个类型提前定义一些属性,根据schema的type和属性往里面插入数据,本体schema可以认为是数据库表的列名,它已经限定数据库可以存哪些不可以存哪些东西。
除了owl,还有图数据库。图结构的好处就是毫秒级别的查询性能,容纳百亿级别的数据规模,可以在线实时更新,图数据库有很多种。
知识图谱的构建方法
首先,定义schema,比如实体的类型,数据类型,属性类型,类别等,然后做一些知识采集的操作,从文本中抽取关系,从外部知识库补充一些已有的三元组,接着是数据库迁移,从sql数据库中的数据迁移到知识库中,数据库备份,数据结构的转换,实时更新就是检查数据的一致性,对重复的内容做知识融合,比如china和中国,尽量保证实体的唯一性。
在抽取实体时一般领域会抽取出人名,组织结构名,地名,数学表达式等;在旅游领域会抽取出旅游相关的实体,例如景点名,酒店名,目的地名,机场名等。比如这句话:"在兴义市区期间,入住的是富康国际酒店。从兴义机场到市中心的富康国际酒店打车不过十来分钟。富丽堂皇的大唐,穿着民族服饰的服务员,雅致的房间都让我对兴义有着不错的印象。刘氏庄园位于兴义城南",在旅游领域抽取的实体有:目的地名兴义,酒店名富康国际酒店,机场名兴义机场,景点名刘氏庄园。命名实体识别一开始是基于规则或字典的方法抽取实体,接着发展到利用模型抽取实体,例如HMM,HEMM,CRF模型都可以用来做序列标注,从而识别实体。现在的做法一般是将卷积神经网络CNN或循环神经网络RNN与CRF结合的模型。
知识图谱的应用
QA问答系统首先进行NLU语音识别,语音识别就是把语音信号转化为文本或者指令的技术并确定语音的意图,DM会话管理是人机对话的核心,它主要用来维护和更新对话状态,当前的会话状态依赖于之前的系统状态和之前的系统响应以及当前时刻的用户输入。QA系统的答案基本从知识图谱中获取,需要从句子中抽取出来实体,将句子的意图等映射到知识图谱中进行查询,提供答案。
知识图谱一般不用于基于特征的推荐系统,一般用于基于路径的推荐,分为两种meta-path和meta-graph,用户喜欢普吉岛的酒店,喜欢spa服务和泳池,可以建立这样的一条路径作为推荐系统的特征,参与计算。缺点:需要提前设定这样的路径,不支持自动搜索路径。知识图谱特征学习,将特征转化为向量的形式,辅助推荐。应用于embedding,协同过滤中只考虑user特征和item特征,可以利用知识图谱作一些特征,embedding有很多方法,深度学习。
知识图谱还可以应用到搜索方面,传统搜索都是全文索引之类的搜索,没办法解析一些包含语义的句子,但是知识图谱可以解析出实体,筛选出一些答案,是基于语义理解方面的搜索。
知识图谱的未来
将知识图谱的语义信息,图像输入到深度学习模型中,映射到知识图谱的三元组的实体,关系或者图上,将离散化的知识表示为连续的向量,从而使得知识图谱的先验知识能够称为深度学习对输入,参与模型的计算,加强模型,比如问答,翻译。离散知识转化为向量;同时,利用知识作为约束目标的约束项,从而指导深度学习模型的学习过程,通常是将知识图谱的知识表示为优化目标的后验证则项。未来会在知识图谱中做多领域的融合,自动推理,自动抽取,事件图谱,比如某人最近发生了什么事情,这是变化比较频繁的图谱,主要应用在开放域对话系统,旅游线路推荐系统,旅游生态规划和热点事件追踪等。
作者介绍:
鞠剑勋,携程旅游度假AI自然语言处理负责人。主导携程旅游知识图谱的整体构建,有五年的自然语言处理和知识图谱相关经验,专注于自然语言处理和知识图谱方面的应用和算法研发。