关于数据库:OPPO-自研大规模知识图谱及其在数智工程中的应用

2次阅读

共计 7274 个字符,预计需要花费 19 分钟才能阅读完成。

导读:OPPO 常识图谱是 OPPO 数智工程零碎小布助手团队主导、多团队合作建设的自研大规模通用常识图谱,目前已达到数亿实体和数十亿三元组的规模,次要落地在小布助手常识问答、电商搜寻等场景。

本文次要分享 OPPO 常识图谱建设过程中算法相干的技术挑战和对应的解决方案,次要包含实体分类、实体对齐、信息抽取、实体链接和图谱问答 query 解析等相干算法内容。

全文围绕上面四点开展:

  • 背景
  • OPPO 常识图谱
  • 常识图谱在小布助手中的利用
  • 总结与瞻望

背景

首先和大家分享下小布助手和常识图谱的背景。

背景——小布助手

小布助手是 OPPO 旗下乏味贴心、无处不在的 AI 助手,搭载在 OPPO 手机、OnePlus、Realme 以及如智能手表等 IoT 智能硬件上。它能够为用户提供零碎利用、生存服务、影音娱乐、信息查问、智能聊天等服务,进而开掘潜在的用户价值、营销价值和技术价值。

背景——OPPO 常识图谱

在 2020 年年底,OPPO 开始着手构建本人的常识图谱。通过一年左右的工夫,OPPO 曾经构建了数亿实体和数十亿关系的高质量通用常识图谱。目前,OPPO 常识图谱反对了每天线上数百万次的小布问答申请。进一步,OPPO 正将通用常识图谱逐步扩大到商品图谱、衰弱图谱、风控图谱等多个垂类。

OPPO 常识图谱

接下来为大家介绍 OPPO 常识图谱的整体架构。如上图所示,它由三大部分组成。最底层是通用的数据处理平台和图数据库相干框架。咱们具体选取 Nebula Graph 来存储图数据。中间层蕴含数据获取、图谱构建和图谱治理模块。最顶层涵盖了 OPPO 图谱各种利用场景,包含智能问答、搜寻举荐、内容了解、平安风控、智慧衰弱等。

上面介绍利用常识图谱的三个外围算法:实体分类、实体对齐和信息抽取。

常识图谱算法——实体分类

实体分类依据图谱预约义的 schema 对实体进行归类,进而能够使咱们对实体进行属性、关系的关联。同时,实体分类能够对上游的实体对齐、实体链接和线上的智能问答业务等提供重要的特色。目前,咱们采纳规定 + 预训练语言模型文本分类的 pipeline 计划。在第一阶段,咱们利用如百科中对实体的形容,应用预约义的规定解决大量半监督的伪标签数据。随后,这些数据会交给标注共事进行校验,整顿出有标签的训练集,联合预训练语言模型训练一个多标签的文本分类模型。值得一提的是,咱们为业界提供了一个大规模实体分类数据集,组织了 2021 CCKS 通用百科知识图谱比赛,吸引了数百只队伍参赛。

常识图谱算法——实体对齐

实体对齐工作是常识图谱构建中比拟要害的环节。在互联网的开源数据中,同一实体在多个起源下存在类似或者雷同的信息,若将这部分冗余信息全副蕴含在常识图谱中,那么在上游应用常识图谱进行信息检索时会带来歧义。所以,咱们对多源雷同的实体进行信息整合,缩小信息冗余。

常识图谱算法——实体对齐算法

具体地,因为常识图谱中的实体规模达到了上亿的量级,思考到效率问题,咱们提出了 Dedupe+BERT 语义分类的两阶段计划。在第一阶段,咱们采纳并行处理的形式将名字、别名雷同的实体进行分组,输出 Dedupe 数据去重工具,生成第一阶段实体对齐后果。咱们要求这一阶段的后果的准确率很高。在第二阶段,咱们会训练一个实体相关性匹配模型,其输出是一对候选实体,旨在调整、补充第一阶段的对齐后果。

常识图谱算法——信息抽取

在实体分类与对齐后,因为数据源存在信息缺失,图谱中存在一些实体缺失局部要害属性。咱们将缺失属性的实体分成两类,应用信息抽取的办法对它们进行属性补全。

第一类是 常见的实体与属性,如国家的首都、人物的年龄和性别等。咱们应用百度 CASREL 模型以及业界罕用的开源数据集训练一个关系抽取模型。模型的构造能够看作一个多标签的指针网络,每个标签对应一个关系类型。CASREL 首先抽取句子中的主实体,再将主实体的 embedding 输出指针网络,预测每一个关系下句子中的客体起始地位和终止地位,最初通过设定的阈值来断定 SPO 三元组是否可信。

第二类是 长尾属性,它们在开源数据集上标注较少。咱们利用浏览了解(MRC)模型抽取长尾属性。如咱们想要抽取“某奥特曼的世间体”这一属性,咱们就将“某奥特曼的世间体是谁”这一问题作为 query,检索文本后果,应用浏览了解模型判断文本中是否蕴含“世间体”的客体。

总结来说,在构建常识图谱的过程中,咱们利用了实体分类、实体对齐与信息抽取工作,心愿通过它们来晋升常识图谱的品质和丰盛水平。后续建设过程中,咱们心愿在现有的框架下将实体分类基于迁徙学习扩大到商品分类、游戏分类等垂域场景。此外,目前的实体对齐工作还较为根底,咱们心愿在将来联合多模态、节点示意学习等多策略对齐计划。最初,对于信息抽取工作,咱们心愿借助大规模预训练语言模型,基于大量标记样本,甚至零标记样本,来抽取实体关系。咱们还思考利用实体抽取算法,使得它能够落地于小布助手的业务场景中。

常识图谱在小布助手中的利用

第三局部重点介绍常识图谱在小布助手业务场景中的利用。

常识图谱的利用

小布助手依照对话畛域能够划分为三大类:闲聊、工作对话和常识问答。其中,闲聊类应用检索式、生成式算法;工作对话利用帧语义的算法对 query 进行结构化解析;常识问答进一步细分为两局部,基于常识图谱的 KBQA 的结构化问答和基于浏览了解与向量检索的非结构化问答。

常识图谱利用——常识问答分类

首先介绍常识问答。对于结构化问题,咱们采纳 KBQA 来解决;对于非结构化问题,咱们采纳 DeepQA+ 浏览了解的框架来解决。

常识图谱利用——结构化分类

对于结构化问题,在小布助手的利用中有四大类 query:

  1. 根底链式查问,如单跳、两跳、甚至更多跳的问题
  2. 多变量束缚查问
  3. 实体关系查问
  4. 比拟推理查问

常识图谱利用——KBQA 整体算法架构

咱们针对结构化问题设计了一套基于 KBQA 的算法框架。首先,在接管到线上用户的 query 输出后,咱们会先对其进行畛域辨认以及用意分类。若 query 是能够应用 KBQA 解决,那么咱们会对 query 进行实体辨认、query 解析和答案生成。这三个次要步骤又能够通过在线和离线两方面进行进一步归类。比方,离线 KBQA 会进行别名开掘、新词发现、属性归一、模板开掘,最终更新常识图谱和图数据库。在线 KBQA 会进行实体抽取、实体链接、属性辨认、束缚挂载、模板匹配和长尾模板的语义匹配,最初在图数据中进行常识查问或者依据查问后果进行推理计算。

常识问答——实体抽取

小布助手的输出以语音为主,所以小布助手场景下实体往往存在别名以及语音辨认谬误的特点。在语音输入时,用户往往不会说出人物的残缺名字,而是采纳别名。其次,语音辨认的错误率绝对较高,导致输出相较于网页上的 query 输出差别较大。针对别名问题,最根底的解决方案是基于常识图谱的实体别名建设一个映射词表;其次,针对复合实体,咱们会利用图谱中的上位词开掘实体复合词。针对语音辨认谬误问题,咱们会采纳外部大量搜寻点击日志,利用点击网页中 title 蕴含的规范名和对应的 query 做匹配。匹配时的输出特色有两类:偏旁部首的特色(倩雅集和晴雅集)以及拼音特色(分马奥特曼和风马奥特曼)。咱们将候选规范名的特色和 query 的特色进行聚类,最终选取间隔最近的规范名。值得一提的是,在生成实体映射词表前,咱们还会进行额定的人工校验。

常识问答——实体链接

在对用户 query 进行实体辨认之后,咱们须要进行实体链接工作。以“李白哪个技能最厉害?”这个 query 为例。“李白”这一实体会在常识图谱中对应着多个不同类型的实体,如游戏角色、唐代诗人、李荣浩歌曲、撒贝宁妻子等。此时,咱们须要联合 query 的语义来选取真正的实体。

实体链接会经验三个步骤。首先,咱们采纳 BiLSTM+CRF 进行实体辨认;之后,咱们会在常识图谱中召回候选实体;最初,咱们基于实体消歧模型,对 query 和候选实体的匹配度进行打分,抉择最匹配的实体。若所有候选实体的匹配度均低于预设的阈值,咱们则会输入一个非凡的空类别。

上图出现的计划是咱们团队在加入百度千言实体链接较量中提出的。它采纳了多任务训练框架(语义匹配 + 实体类型分类),引入了反抗学习策略,融入了统计类特色(如实体的热度、实体的丰盛度等),并退出了多模型集成的办法。最终咱们在千言实体链接较量中斩获第二名。具体地,咱们将 query 与实体的类似度匹配工作建模为一个二分类工作,将实体类型分类工作建模为一个多分类工作。通过比照试验,咱们证实了多任务学习、反抗学习的思路对实体消歧模型的成果有肯定晋升。须要指出的是,在实体链接模型真正上线应用的时候,咱们会选取一个绝对较小规模的模型。

常识问答——Query 解析算法

对 query 进行实体链接后,咱们须要对 query 基于模板进行属性抽取。业界次要有两种计划:基于语义解析(semantic parsing)类的办法和基于信息检索(information retrieval)类的办法。OPPO 次要选取语义解析类的计划,并且在解析失败的长尾属性采纳语义匹配的办法进行兜底。

在语义解析类的计划中,首先咱们须要开掘用于语义解析的常见模板。咱们采纳近程监督模板开掘的形式,利用互联网海量的问答数据,将这些语料与咱们的常识图谱进行匹配,失去问答库中实体的属性,最初失去问答语料中常见的 query 模板。例如,“q: 刘德华多少岁了 ans:59 岁”这个问答,通过图谱属性检索,失去 query 实际上在询问某个人的年龄属性。相似的,咱们能够失去询问某个人的身高属性、年龄属性、出生地属性的 query,据此生成一系列 query 模板。基于开掘的模板,咱们能够训练一个语义匹配分类模型,其输出是原始 query 和一个候选 query 属性。此外,在训练过程中,咱们会将实体 mask 掉,旨在使模型学习 query 在实体信息之外的语义与实体属性的相关性。在模型训练结束后,咱们应用小布线上 query 日志,先对它们进行实体抽取,而后将 query 以及图谱中 query 实体所对应的所有候选属性输出模型,进行语义匹配的预测工作,失去一部分较高置信度的候选模板。输入模板会交由标注人员进行校验,最终失去的模板会退出 query 解析的算法模块中。

接下来以一个具体的例子来解释咱们如何应用模板来解析在线的 KBQA 问题。比方用户输出 query 为“印度的首都有多大”,即用户的实在用意是询问新德里的面积。首先,咱们会对 query 做实体辨认,将“印度”映射至图谱中的“国家”,利用模板将“首都”映射至“国家的首都”或者“王朝的首都”,同理将“有多大”归一化至“人的年龄”、“地区的面积”、“公司的面积”、“行星的体积”等属性。此时还不能齐全确定对应的属性,所以咱们会将所有的候选属性进行排列组合,联合剪枝的办法,抉择最有可能的模板,生成两头示意式。在下面的例子中,最佳模板是“国家首都的面积”。这个 query 实际上是个两跳的问题,咱们会利用单条模板将其中一部分形象为一个子查问,如“国家的首都”。具体地,咱们会将子查问与残余的查问模板拼接在一起,生成一个复合查问。在执行常识图谱的查问的时候,咱们会首先执行子查问,并将其替换为查问失去的实体,最初依照生成的 query 持续在图谱中搜寻最终的后果。

常识问答——模版语义匹配

尽管咱们离线开掘了大量的归一化模板,然而这一办法仍然对一些极其状况成果不佳。因为用户输出的不确定性,模板存在长尾 query 欠召回的问题。思考到线上效率问题,咱们很难齐全将 query 与所有模板进行模型的语义匹配打分。

基于上述问题,咱们提出了相似于双塔模型匹配的计划:将模板通过 BERT 模型生成对应的模板向量,建设模板向量索引。当无奈失去适合的模板进行 query 解析时,输出 query 会通过 BERT 模型失去 query 向量,随后在模板向量索引中召回一部分类似模板向量,最初通过人工设定的阈值判断是否承受候选模板。在理论业务中,应用这一办法进行应答的占比拟小。

用户可能会提出多束缚问题,例如“重庆的男演员有哪些?”。咱们会利用问句分类模块判断出 query 属于多束缚查问,随后将 query 中蕴含的所有束缚辨认进去。在应用多束缚查问时,咱们不会在图数据库中执行查问操作,而是选用 ES 进行多条件查问,这是因为图数据库检索耗时很大。最初,咱们将 ES 查问输入进行热度排序,输入绝对正当的后果。相似地,对于比拟推理问题,咱们首先利用问句分类模块辨认出 query 属于比拟推理查问,随后在图谱中进行多实体查问,依据比拟推理中须要查问的属性判断两个实体对应的属性是否可比。若多实体属性是可比的,咱们会执行推理计算,最终输入推理查问的后果。

常识问答——非结构化问题问答

接下来简略介绍一下 OPPO 对于非结构化问答的解决方案。

离线状况下,咱们选取了业界风行的海量网页数据 +MRC 模型进行答案抽取的框架。首先,利用搜寻 query 中蕴含的大量 URL 和点击日志,获取 query 对应的网页文本数据;随后,将 query 与网页文本数据输出 MRC 模型,失去 query 在文本中对应的答案;之后,答案会通过一个离线训练好的“答非所问”判断模型,筛选出那些与 query 真正相干的答案;最终离线构建问题 - 答案的数据库。

此外,基于构建的 QA 库,咱们会应用双塔模型构建 QA 数据库的向量索引。在线查问时,query 首先会通过用意辨认和文体类型辨认的模块。在 OPPO 业务设定中,应用 KBQA 的优先级大于应用非结构化问答框架的优先级。如果 KBQA 无奈针对输出 query 返回后果,那么 query 会被输出至非结构化问题的向量检索框架中。Query 会被双塔模型进行语义向量编码,随后在索引库中进行向量召回失去 topK 候选 QA。因为向量召回的计划会失落 query 与答案的交互信息,所以在失去候选 QA 后,query 向量与候选向量会通过一个精排模型加强语义交互,失去最终的精排排序打分。依据预设的阈值,咱们能够抉择承受或回绝候选 QA 后果。

咱们针对 MRC 模型进行了一些优化。首先,咱们抉择 RikiNet 作为 MRC 模型。它的特点是对网页中长文本的数据处理成果最优,其潜在的起因是 RikiNet 会对输出文本进行段落划分,在语言模型 attention 机制中不同段落之间没有信息交互,防止不同段落之间的噪声信息影响答案信息。

总结与瞻望

最初,对明天分享的内容做一个总结和瞻望。

尽管 OPPO 着手构建常识图谱的工夫绝对较晚,然而在构建过程中积攒了大量教训。首先,图谱构建算法是建设高质量常识图谱的关键环节,咱们会优先保障算法的准确率,对召回率的要求绝对较低。其次,针对常识问答算法,在离线时咱们会训练用于模板开掘、浏览了解的大模型,保障离线开掘的数据品质;在线服务时,咱们会选取在线模板 + 小模型的计划保障服务效率。

在将来,咱们可能会尝试以下几类优化计划:

  • 常识推理图谱 + 常识问答
  • 多模态图谱 + 多模态问答
  • 用户图谱 + 个性化举荐
  • 常识图谱 + 大规模预训练语言模型
  • 低资源条件的信息抽取

Q&A

Q:通用百科图谱的实体量级是多少?有什么方法能够升高实体对齐的工夫复杂度?

A:OPPO 外部的常识图谱的实体量级为约两亿,关系数为十几亿的量级。因为图谱的规模较大,在尝试升高实体对齐的工夫复杂度时,咱们首先会对候选实体做类别划分,例如实体类型是人物则在人物类别的条件下做实体对齐,这相当于借鉴了分而治之的思维升高一部分计算复杂度。随后,咱们采纳两阶段的实体对齐算法。第一阶段不会波及深度学习模型,而是将实体进行粗粒度的分组(如别名雷同的实体),选用 Dedupe 和 Spark 框架执行并行化实体对齐。

Q:常识问答中如何判断 query 的对话畛域?

A:小布助手在外部有一套简单的畛域分类和用意识别系统。例如,在闲聊畛域,咱们会标注大量的闲聊语料。随后,咱们会训练 BERT 模型对语料进行分类。

Q:如何分别语音辨认谬误与新词的情景?

A:在纠正语音辨认谬误时,咱们应用搜寻点击日志对应的网页 title,与 query 一起输出模型进行实体辨认。这是因为咱们认为网页 title 在大多数状况下都会蕴含正确的实体名。随后,咱们思考了偏旁部首的特色和拼音特色,当 query 特色和候选实体特色的类似度达到了预设的阈值后,那么咱们基本上能够认为这是一个语音辨认谬误而不是一个新词。

Q:实体消歧模型中会不会退出一些手工特色?

A:咱们会退出一些手工特色,例如实体的热度特色、实体在训练数据中真正被标注为正例的比例、实体属性的个数等统计类特色。

Q:RikiNet 对网页长文本数据成果更加的起因是什么?

A:RikiNet 设计了一种非凡的 attention 机制。首先,它将长文本依照段落进行切分。个别状况下,短答案只会呈现在一个段落中。RikiNet 的 attention 机制使得段落之间不存在注意力交互,这样就能够让不存在答案的段落蕴含的无关信息无奈影响蕴含答案的段落语义信息。只不过这只是试验中的失去的论断,没有实践撑持。

Q:query 在线模板匹配中,查问门路解析的剪枝是如何实现的?

A:例如“印度的首都有多大”这一例子,咱们会应用到实体分类辅助剪枝工作。首先,“印度”是一个国家,尽管“首都”能够映射到“国家的首都”或者“王朝的首都”,但因为后面的实体被辨认为“国家”,那么“王朝的首都”的排序就绝对靠后。总的来说,咱们会依据辨认出的实体类型和属性之间的关系进行剪枝。如果属性类型不存在抵触,无奈间接进行剪枝操作,那么咱们会对候选模板进行热度排序,即若一个模板在训练集呈现的频次更高,那么咱们优先思考这一模板。

Q:请问 OPPO 如何应答方言的语音输入?

A:OPPO 目前次要反对粤语方言输出。这一部分的工作是前端 ASR 负责的,所以方言会在 ASR 模块后就转换为普通话文本输出了。

明天的分享就到这里,谢谢大家。


交换图数据库技术?退出 Nebula 交换群请先填写下你的 Nebula 名片,Nebula 小助手会拉你进群~~
点击此处查看 NebulaGraph 的 GitHub:GitHub – vesoft-inc/nebula

正文完
 0