作者简介
携程旅游AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中知识图谱组专注旅游领域知识图谱的构建及应用落地。
一、背景介绍
随着网络应用技术的飞速发展,多元化、低密度数据的急剧膨胀对人们获取正确信息带来巨大挑战,大量冗余信息出现的根源在于自然语言表达的多样性,即一词多义和多词同义。例如,“苹果”在不同语境下既可以表示蔷薇科苹果属植物又可以表示苹果产品公司,“申城”和“魔都”尽管字面完全不同,却都是上海市的别称。实现对海量Web数据的高效处理,理解用户意图,降低信息过载,是实体链接的目标。
在旅游领域,用户关注的实体通常是旅游目的地周边景点、酒店和玩乐方式等,这些对象在地理信息系统(Geographic Information Systems, GIS)中统称为兴趣点(Point of Interest,POI),主要包含四个核心维度:名称、地址、坐标和类别。随着互联网电子地图服务与基于位置的服务(Location Based Services,LBS)的普及,POI无论从概念范畴还是信息纵深上都有了长足发展,已成长为信息空间的参天大树,可以说目前如日中天的互联网各个风口都和POI有一定关系,如电商、O2O、社交、本地生活、互联网金融、共享经济等。
构建以POI知识库为基础的实体链接服务,提升旅游搜索、智能问答、知识挖掘和信息抽取等工作的效果,对改善用户体验有重要意义。
图1 实体链接功能示例
1)实体提及识别,旨在识别出自然语言中实体提及片段的边界,并标示其在输入文本中的位置。以图1例子进行说明,用户输入的搜索词“武汉东湖景区”包含了“武汉”和“东湖”两个命名实体提及,它们可能表示知识库中某些实体的正式名称、简称、俗称或者别名。
2)候选实体生成为文本中给定的实体名称生成可能链接的候选实体集合,即根据前一步识别到实体提及片段从知识库中召回所有用户可能感兴趣的实体,该步骤生成的候选项集确定了实体消歧的范畴。例如,“武汉”这一实体提及可以从知识库中召回作为城市的“武汉”,而“东湖”则可以召回“武汉东湖”和“绍兴东湖”两个景点。
3)实体消歧是确定一个实体指称项所指向的真实世界中实体的过程,通过候选实体的静态特征、或与query交互计算的动态特征输出一个用于排序的分值。以图1为例,结合上下文可知,用户真正查询的是武汉市下面的东湖,而非位于绍兴市的东湖,因此“武汉东湖”相对“绍兴东湖”应有更高的得分。
实体提及识别常被视作序列标注任务,经典方法有基于词典的方法和基于统计的方法。基于词典的方法可分为前向最大匹配、后向最大匹配和双向最大匹配;基于统计学习的代表方法有HMM和CRF,其表现通常依赖大量人工构建和维护的特征模板。随着算力的提升和端到端的神经网络技术的发展,CNN、RNN等结构被广泛用于建模序列表示,其自动组合低阶特征获得高阶特征的功能摆脱了人工特征工程耗时费力的弊端,同时神经网络强大的表达能力显著提升了传统算法的效果。
Google在2018年提出的Transformer则首次将自注意力模型带入大众视野,为序列表征的高效并行计算提供了可行的方案。Self-attention机制的运用使得序列中每个位置的token都能充分学习到上下文语义,自适应地接收来自不同位置token的信息流入,成为近年大热的自监督学习任务的基本编码单元,启发了众多以此构型为基础的大型预训练语言模型,BERT便是代表之一。
使用Transformer Encoder结构的BERT从无标签语料中学到了大量先验知识,只需在特定下游任务上微调权重,便能获得出色的结果。BERT一度霸榜GLUE,刷新了各大自然语言理解任务的SOTA,其预训练加微调的学习范式也成为NLP界的重大里程碑。
候选实体生成是一种检索任务,传统检索方法以词袋模型(Bag of Words,BOW)为代表,如TF-IDF、BM25等,这类算法不考虑词序,也忽略了词与词之间的前后关联,除需人工设计公式外,在统计词的权重、词频的基础上,还要引入覆盖率、紧密度,扩展同义词等,才能达到一个较好的效果。词袋模型最大的缺陷是只能解决字面量的匹配问题,无法获得query与document语义相关性,因此,以双塔式模型和交互式模型为代表的语义向量检索方案开始受到重视。
双塔模型主要有DSSM、Siamese网络,通常使用两个相同或不同的编码器来提取query和document的低维句向量表示,然后设计一个相关性函数,如cosine、内积等,计算两者间的相似得分;交互式模型则在低阶特征组合阶段就开始建模query与document之间的相关性,其关键思想在于交互矩阵的构造,如ESIM、MatchPyramid等,这类模型最终获得的是query-document对的整体表示,因此能避免独立编码两部分造成的精度丢失,实践中往往有更好的表现。
实体消歧是在更精细的粒度上对候选实体进行排序,常见的学习排序算法包括单点法(pointwise)、配对法(pairwise)和列表法(listwise)三类。pointwise的思想是使用回归或分类模型独立地为每个候选实体进行打分;pairwise考虑的是候选实体两两之间的相对排序而非各自的绝对分值,因此损失的计算依赖于成对样本;listwise则将一个query的所有候选实体集当作一个样例,输出为各候选实体的得分。在特征构造与表示学习方面,可以使用query的特征、候选实体自身的特征或两者的交互特征,相关方法与前文提到的语义匹配类似。
图3 实体链接系统流程
此外,我们在工程上做了一些优化,使用Redis缓存别名到候选实体id的映射关系以及实体id到实体属性的映射关系,避免频繁查询Neo4j或Nebula图数据库带来高延时。
图4 实体别名前缀树示例
从根节点到叶节点的路径闭合了一个位于知识库中的实体别名,在实际检索时通常采用前向最大匹配策略:
1)维护两个指针:前缀树指针和query指针,前缀树指针初始化时位于ROOT节点,query指针位于query文本首字符。
2)如果query指针指向的待匹配字符在前缀树指针对应节点的后继节点中,则移动前缀树指针至该子节点,同时query指针后移一位。
3)如果query指针指向的待匹配字符不在前缀树指针对应节点的后继节点中,若后继节点包含了end,则闭合实体提及字符串,前缀树指针回到ROOT;否则前缀树指针递归地回退至上级节点(query指针同步前移),直至上级节点的后继节点中包含end节点,然后闭合实体提及字符串,前缀树指针回到ROOT;若前缀树指针回退至ROOT的过程中没有闭合任何实体提及,则query指针后移一位。
前缀树可以最大程度减少对用户query中无效字符串的匹配,且最坏情况的时间复杂度仍优于哈希表,提供了一种十分高效的字符串搜索方案。
5.1.2 命名实体识别模型
这里我们使用以BERT为骨架的指针网络标注命名实体的边界,图5展示了模型框架、前向传播过程以及标签解码方式。
图5 命名实体识别模型结构
BERT的嵌入层综合了子词、位置和片段三部分信息。首先,对用户输入query的字符序列做数值化处理转换为token词表中相应的索引id序列,经独热编码得到 ,使用一个字嵌入矩阵 将one-hot向量转化为h维稠密向量
同理,对token的位置id、片段id采取类似操作得到位置信息编码 和片段信息编码 ,这三部分特征加总并做层归一化处理得到如下表示:
BERT前向传播的基本单元为Transformer Encoder结构,包括一个多头自注意力层和一个全连接层。假设经过嵌入后的序列特征矩阵为 ,共使用L个Encoder Block,则对于 ,L
1) 在自注意力层,分别使用N个注意力头提取不同语法或语义层面的上下文特征,每一头的维数设置为 ,则query、key、value和proj权重分别为 。此外,对由注意力机制聚合后的序列特征添加残差连接以控制低层信息向上流动。
2)在全连接层,参数矩阵包括 ,这里先将特征向量映射至高维空间,经高斯误差线性单元激活后,再投影至原低维空间,同样添加残差连接,该过程表示为:
假设经L层Encoder编码的字级序列表征为 ,分别接入两个线性层来预测各token作为某种实体类型的头部和尾部的概率,假设token标签集为C,则:
其中, 是仿射变换参数。
在训练阶段,假设序列真实的one-hot标签为 ,模型损失函数为交叉熵损失
在推理阶段,根据头、尾指针预测结果闭合相同实体标签对应的token位置获得实体提及边界。
5.2 候选实体生成
在旅游知识图谱中,“别名”是一种特殊的节点类型,我们在图谱构建阶段会为每个新加入的POI、目的地、产品以及标签类型的实体与其各别名(实体名称也是一种别名)之间建立hasAlias类型的关系。因此,POI、产品、标签实体都至少关联到一个别名实体。
以图6为例,输入文本为“武汉 江西 东湖”时,假设识别到的实体提及为“武汉”、“江西”和“东湖”,将这三个提及作为“别名”节点的name属性值进行条件查询可得到三个别名节点(图中标记为黄色),这三个别名节点通过类型为hasAlias的入边又可以查到若干POI节点,这些POI节点便是该文本召回的候选实体。
图6 文本为“武汉 江西 东湖”时的候选实体子图
我们在候选实体生成阶段并未采用向量检索方案,因为实体提及一般是非常短的字符串,基于相似度的检索不确定性高,难以保证召回结果的可靠性,维护高质量的别名词表更适合当下场景。
候选实体生成模块还包括基于路径的预过滤逻辑。以图6为例,检测到不同实体提及召回的候选实体之间可能存在路径联系,如“武汉市”到“东湖”、“江西省”到“芦林湖”,那么与路径中节点有相同别名但又不在路径上的POI节点,比如绍兴东湖,则不会作为候选实体返回。实践中为了避免路径假定过强而误丢一些重要的节点,会施加一些约束条件,这些方法多与规则相关,不再赘述。
5.3 候选实体消歧
该模块用于对候选实体计算排序得分,我们使用基于BERT的交互式语义匹配模型。
首先拼接query字符串与候选实体的描述文本,经分词和数值化处理后,输入到BERT提取高阶交互特征。
在BERT输出层选择输入序列中[CLS]位置上的特征向量hCLS与该候选实体在query中的实体提及片段的首、尾位置token对应的特征向量hhead、htail进行拼接,通过一个仿射变换,使用sigmoid激活函数获得该候选实体为链接对象的概率值:
其中,w和b为线性层参数。
图7 实体消歧模型结构
模型训练阶段的损失函数为二分类交叉熵损失。
这里y为候选实体的0-1真实标签。
推理阶段,为query召回的各候选实体计算概率得分并按从高到低排序,根据预设阈值截断候选实体序列,得到链接结果。
【推荐阅读】
“携程技术”公众号
分享,交流,成长