AliCoCo: Alibaba E-commerce Cognitive Concept Net.这是一篇领域知识图谱构建的文章,构建的是电商概念图谱。这篇文章介绍了Alicoco是怎么构建的,以及在电商领域是怎么应用的。
背景
电子商务平台的一个主要功能是将客户的购物需求与来自一个巨大候选集的一小组商品相匹配。随着搜索引擎和推荐系统的快速发展,用户能够快速找到他们需要的商品。然而,这种体验离“智能”还很远。
电商平台的项目组织分类方式:组织项目的分类通常基于CPV(Category Property Value),数千个类别根据不同的粒度形成一个层次结构,每个叶子节点上都定义了颜色、大小等属性。
用户需求的表现方式:关键字、问题、场景。
基于关键字的搜索,适用于对明确清楚具体商品的用户。 “红色卫衣”,先找“衣服”,再找“卫衣”,最后找“红色的。
显然,用户需求与电商平台之间的存在一些问题:
(1)“户外烧烤” 是一个场景,不是明确的物品,搜索引擎不知道到底显示什么给我。他们需要更多的“知识”来帮助他们决策。
(2)而在商品推荐中,重复推荐、买过了又推荐、推荐缺少新意等问题也是经常为人诟病。当前的推荐系统更多的是从用户历史行为出发,通过 i2i 等手段来召回商品,而不是真正从建模用户需求出发。
电子商务中现有的本体论并不包含结构化知识,表明“户外烧烤”需要什么样的产品,也不包含“防止老年人迷路”的知识。
目前的电子商务本体中缺乏能够代表不同用户需求的中间节点,制约了推荐系统的发展。
- 本文旨在通过构建一个新的面向通用用户需求理解的本体来弥补电子商务平台中实际用户需求和现有本体之间的语义鸿沟。
- 与大多数现有的电子商务本体论只包含类别或品牌等节点不同,本文引入了一种新型的节点,如“户外烧烤”和“为孩子保暖”,作为连接用户和商品的桥梁概念,以满足一些高级用户需求或购物场景。
- 为了构建这样一个大规模的知识图谱,本文采用了机器学习和人工相结合的半自动方式。
概述
Alicoco分为四层:
电商概念层(E-commerce Concepts)
原子概念层(Primitive Concepts)
分类体系(Taxonomy)
商品层 (Items)
电商概念层(E-commerce Concepts):AliCoCo 最大的创新点,将用户需求显式地用一个符合人话的短语表示为图中的节点,如“户外烧烤(outdoor barbecue)”、“儿童保暖(keep warm for kids)”等,并称之为“电商概念”。用户需求虽然一直被提及,但在电商领域,还未被正式地定义过。在很多下游应用(如推荐系统)的工作中,常常用类目或品类节点(商品的分类)作为用户需求的表达。但用户需求是远不止于这些的,很多场合下,用户面临的是一个“场景”或者“问题”,他们并不知道具体什么商品可以帮助解决,因此我们将用户需求的定义进一步泛化为电商概念。所有用于表示用户需求的电商概念组成了这一层。
原子概念层(Primitive Concepts):为了更好地理解上面讲到的电商概念(即用户需求),AliCoCo将这些短语进行拆解细化到词粒度,用这些细粒度的词来更系统地描述用户需求,这些细粒度的词称为“原子概念”。如对于电商概念“户外烧烤”而言,它可以被表示成“
分类体系(Taxonomy):为了将所有原子概念分类到类中,还定义了电子商务中的分类法,其中具有不同粒度的类通过is a关系形成一个层次结构。例如,在分类法中有一条自上而下的路径是“Category”->“Clothing And Accessory”->“Clothing”->“Dress”。还定义了一个schema来描述不同原子概念之间的关系。例如,在“Category-Clothing->Pants”和“class: Time->Season”之间有一个“suitable_when”的关系,所以“cotton-padded trousers”的原子概念是当季节是冬季合适。
商品层 (Items):阿里巴巴上数十亿的商品3,既有与原子概念相关的,也有与电商概念相关的。原子概念更像是项的属性,如颜色或大小。电商概念和商品之间的关联性表示的是,在特定的购物场景下,某些商品是必要的或建议的。如图所示,烤架和黄油等物品与电商概念“户外烧烤”有关,但它们不能单独与原子概念“户外”相关联。总体来说,AliCoCo将用户需求表示为电商概念,然后采用带有类分类的原子概念来描述和理解同一框架中的用户需求和商品。此外,电子商务的概念也与商品直接关联,形成了阿里可可的完整架构。
分类体系
AliCoCo 的分类体系是一个巨大的树形结构,包含了百万级别的原子概念实例。由于分类体系的构建,对专家知识的要求非常高,并且这部分的设计对于整个知识体系都至关重要,因此我们人工定义了约 20 个一级分类(下图),其中专为电商领域所设计的有:“品类”、“图案”、“功能”、“材质”、“花色”、“形状”、“气味”、“口味”。每个一级分类还会继续细分为二级、三级,直至叶子分类,其中对于电商领域最为重要的“品类”包含了约800个叶子分类。诸如“时间”、“地点”、“受众”、“IP”等分类和开放领域的知识图谱可以交融,如“IP”中包含了大量的明星、运动员、电影、音乐等。
原子概念层
在原子概念层,AliCoCo希望这些细粒度的词能够去完整地描述所有的用户需求,这是用于组成电商概念的基础,在这一层,主要讨论两个问题:
- 原子概念词汇的挖掘
- 原子概念之间的上下位关系构建
原子概念词汇的挖掘
定义了分类法,就有两种方法可以扩大原子概念的规模。
- 第一种方法是通过本体匹配来融合来自多个来源的现有知识。在实践中, AliCoCo主要采用基于规则的匹配算法,再加上人工调整每个数据源的分类。本文不详细介绍。
- 二是从电子商务领域产生的大规模文本语料库中挖掘新的概念,如搜索查询、产品标题、用户书面评论和购物指南等。挖掘特定类的新概念可以表述为序列标记任务,其中输入是一个单词序列,输出是一个预定义的标签序列。然而, AliCoCo的分类法的层次结构对于这个任务来说太复杂了,所以在实践中只使用20个一级类作为标签。
采用基于 BiLSTM+CRF 的模型来挖掘发现分类下的新词
上图为 BiLSTM+CRF 模型的简单示意,BiLSTM(双向 LSTM)层用于捕捉句子上下位的语义特征,而 CRF(条件随机场)层则用于捕捉当前词的 label 和前后词 label 之间的相关性。而在模型挖掘得到可能属于某个分类的新词之后,后续还会经由众包投放审核、外包质检等人工把关环节,最终才会入库成为真正的原子概念。不同的原子概念可能拥有相同的名字,但分属不同的类别,代表了不同的语义,每个原子概念有一个 ID,这也是 AliCoCo 未来可以用概念消歧的基础。
原子概念之间的上下位关系构建
在某个一级分类下的词汇挖掘到一定量后,需要继续将所有词汇分到不同层次的类别中去,这个过程可以抽象成为一个上下位关系发现(hypernym discovery)的过程:给定一个下位词,在词表中找到其可能的上位词。采用基于 pattern 的无监督方法和基于 projection learning 的监督方法两种方式结合来完成上下位关系的构建。
Pattern based
基于 pattern 的方式 是最直观且准确率最高的方法,通过归纳和发现一些可用于判断上下位关系的 pattern,从文本句子中直接抽取上下位词对。典型的 pattern 如“XX,一种XX”、“XX,包括XX”等。但这种方式的缺点是默认上下位词对在句子中必须共现,会影响召回。此外,利用中文的一些特点,我们可以用过“XX裤”一定是“裤子”等来自动构建起一批置信度较高的上下位关系。
Projection learning
Projection learning 的方式是给定一个下位词 embedding $p$和上位词 embedding $h$,有监督去学习一个映射函数 ,使得$p$和$h$尽可能地接近。具体地,学习一个打分函数,用于表征一对候选词之间的上下位关系强弱,并使用多个 matrix 来模拟不同维度的特征(隐式的聚类),T是一个投影张量,其中第 k层的 $𝑠^𝑘$计算如下:
$𝑇^𝑘$是一个矩阵,$k \in [1,K]$.
最后将 k 个 score 过一层全连接得到最终的probability:
之后我们采用交叉熵损失函数进行训练。模型中使用的预训练的词向量是在前面提到的电商语料上用 word2vec 进行训练的。同时,我们针对部分品类词在语料中出现较为稀疏的问题,用 ALaCarte embedding 进行了强化,其主要思想是学习一个映射关系矩阵 ,利用稀疏词 周围的 context 的 embeddings 之和 对其进行表征。
主动学习
采用主动学习来降低标注成本。本文提出了一种不确定性和高置信度抽样策略(UCS)来选择能有效改进模型的样本。
输入:未标注数据集$D$,测试集$T$,投影模型$\hat{f}$,人工标注$H$,每次迭代人工标注样例数$K$
输出:投影模型$\hat{f}$,预测分数$S$
先从数据集D中随机选择K个样本组成$𝐷_0$,专家进行标记。得到了初始的含有标记的数据集$𝐿_0$,这些样本就可以从$D$中移除了
用$𝐿_0$来训练投影学习模型$\f$,然后在$f$测试集T上面评估性能
使用$\hat{f}$预测D的得分$𝑆_0$
迭代过程,主动学习抽样策略:不确定性和高可信抽样。
$𝑓_s$在n轮迭代没有提高时,停止迭代
电商概念层
评价标准
在电商概念层中,每个节点代表一个特定的购物场景,至少可以由一个原子概念来解释。
一个好的电商概念应该满足以下条件:
- 具有电商含义。它应该让任何人都能很容易地想到电子商务平台中的一些商品,这意味着它应该自然地代表特定的购物需求。像“蓝天”或“母鸡下蛋”这样的短语并不是电子商务的概念,因为我们几乎无法想到任何相关的项目。
- 通顺。它应该是一个连贯的短语。反例可以是“gift grandpa for Christmas” or “for kids keep warm”,连贯的应该是“Christmas gifts for grandpa” and “keep warm for kids”。
- 合理。根据常识,这应该是一个合理的短语。反例可以是“性感婴儿装”或“欧式韩式窗帘”,因为我们人类不会用“性感”一词来形容婴儿装,窗帘也不能既有欧式风格又有韩式风格。
- 指向明确。电商概念的含义应当清楚易懂。反例可以是“儿童宝宝辅食”,其主题可以是大龄儿童或新生儿,这可能会造成用户的困惑。
- 正确。它应该没有错别字或语法错误。反例如“印渡神油”等。
电商概念的生成
候选生成有两种方式,一种是从文本语料中去挖掘可能的短语,这里我们采用了 AutoPhrase 在大规模的语料上进行挖掘,语料包括电商生态内的查询日志,商品的标题、评论,还有很多达人商户写的购物攻略等。
另一种方式是用词粒度的原子概念进行组合生成短语粒度的电商概念。例如,把“地点:室内”和“活动:烧烤”结合起来,得到了一个新的概念“室内烧烤”,这是不容易从文本中挖掘出来的。挖掘并人工审核了一些 pattern 来赋值生成,部分 pattern 如下图所示:
我们可以通过“[事件]用的功能”这个 pattern 来生成“旅游用的保暖帽子”这样的电商概念。而这些 pattern 可以和下面的判别过程结合,通过迭代的方式来进行不断地挖掘和补充。
电商概念判别
判断一个候选短语是否满足电商概念的要求,最大的挑战是上文提到的第三点,即“合理”,要符合人的常识。其他一些要求我们可以通过字级别或是词级别的语言模型就能过滤掉大部分的 bad case,但常识错误的识别对机器来说是非常困难的。此外,电商概念判别任务中的候选短语又严重缺少上下文信息,进一步增加了判别的难度。
为了解决这个难题,我们设计了一种知识增强的分类模型(如图所示),整体是一个 Wide & Deep 的结构。在 Deep 侧,我们利用字级别和词级别的 BiLSTM 来提取特征,同时对于词级别的输入,我们还加入了一些词性特征如 POS tag 和 NER label 等。为了进行知识增强来辅助常识理解,我们将部分词链接到 Wikipedia 上,如“性感”就可以找到对应的页面。然后将页面上的 gloss(通常是一段简单的介绍)用 Doc2vec 的方式进行 encode 得到知识表达。在经过 self-attention + max-pooling 之后将两者融合。在 Wide 侧,我们主要计算了 concept 的一些统计特征,包括了 BERT 语言模型产出的 概念复杂度ppl 值。最后,通过一个全连接层我们得到最终衡量一个候选短语是否符合电商概念要求的分数。
使用point-wise learning和负对数似然目标函数来学习我们模型的参数:
为了严格控制质量,随机抽取每个输出批次中通过模型检验的一小部分,让领域专家手工标注。只有当准确度达到一定的门槛时,整批概念才会被添加到AliCoCo中。此外,将带标注的样本添加到训练数据中,以迭代方式提高模型性能。
和原子概念的链接
对于那些直接从文本语料库中挖掘出来的好的电商概念来说,它们是有待于集成到AliCoCo中的孤立短语。为了更好地理解(或解释)那些用户需求(即电子商务的概念),将它们与原子概念层联系起来。
主要任务称为“电商概念标注”。如第2节所示的例子,考虑“户外烧烤” ,我们需要推断“户外”是一个“位置”,“烧烤”是一个“事件”。然而,“烧烤”一词也可以是电影中的原子概念层,因此可以认定为“IP”类。我们将此任务描述为一个名为实体识别(NER)任务,由于这里的概念短语太短(平均2-3个单词),这比普通的NER任务来说更具挑战性。缺乏上下文信息使得在不同的类之间消除歧义变得更加困难。
基于模糊CRF的文本增强型深度NER模型,如图所示。
该模型由两个部分组成:文本增强概念编码器和模糊CRF层。
输入是一个经过汉语分词的词序列$\{w_1,w_2,…… w_m\}$
输出的是一个长度相同的序列$\{y_1,y_2,…… y_m\}$,用BIO模式表示每个单词的类标签。
设计了一种文本增强的方式,对短文本中待链接的词进行外部上下文的补充,用以为消歧带来额外的信息辅助。模型如上图所示,左边部分是比较常规的特征抽取,右边是一个信息增强的模块。将目标词映射到高质量的外部文本中,通过 doc2vec 将其周边的上下文信息 encode 成 embedding,最终最为额外的输入融合到最终的表达中。
由于部分电商概念中的原子概念可以属于多个类型,如“乡村半身裙”中的“乡村”,既可以是“地点”,也可以是“风格”。因此我们将 CRF 层改为 Fuzzy-CRF ,用以建模多个正确的 label 序列。
商品关联
到目前为止,将用户需求概念化为电商概念,并使用结构化的原子概念对其进行解释。最后一件事是将阿里巴巴的数十亿个商品与所有的概念(包括原始和电子商务)联系起来,形成完整的AliCoCo。
前面提到原子概念更像是属性,因而更关注商品与电商概念的关联,因为后者表达的是一个用户需求,常常有着较为复杂的语义。此外,电商概念与商品的关联不能直接从对应的原子概念到商品的关联组合得到,因为会出现“语义漂移”的问题。例如“户外烧烤”所需要的商品,往往和属性“户外”没有任何关系,例如,当我们想举办“户外烧烤”时,炭煤是必不可少的,然而,炭煤与“地点:户外”的原子概念无关。
所以将这个问题抽象为一个语义匹配(semantic match)的问题,因为现阶段暂时只用到商品侧标题的信息(实际上商品是一个多模态的结构,有着非常丰富的文本、图像甚至越来越多的商品开始有了短视频的介绍)。这个任务最大的挑战依旧在于我们的电商概念非常简短,直接进行匹配,往往会遇到诸如某些不那么重要词对结果产生了巨大的影响等问题。
针对上述难点,我们在语义匹配模型上引入了一些必要的外部知识来提升性能。具体模型如上图所示,除了常规的特征抽取,attention 注意力机制模块等建模商品和电商概念之间的关联外,我们主要做了两个地方的增强:
- 引入了电商概念对应的原子概念的特征表达,增加了类型等结构化信息。
- 引入外部 Wikipedia gloss,对部分词进行知识增强,以更好地建立与商品之间的关联。引入这些知识带来的典型的优点,例如在关联“中秋节送礼”时,可以把不包含中秋节字样的的月饼类商品给排上来。
输入是一个概念词序列和一个候选商品标题的的词序列。
将两个序列的预先训练好的词嵌入与它们的POS标记嵌入和NER标记嵌入连接起来$\{𝑤_1, 𝑤_2 ,…, 𝑤_𝑚\}$和$\{𝑡_1, 𝑡_2 ,…, 𝑡_𝑚\}$,得到的输入的嵌入表示。
采用窗口大小为k的CNN对概念和商品分别进行编码概念中的不同单词在与项目匹配时应该共享不同的权重,反之亦然。因此,在模型中应用注意机制,同时利用注意矩阵对双向交互进行建模。
为了引入更多的信息来帮助语义匹配,使用前面获得相同的嵌入量。引入了与当前电商概念相关联的第j个原子概念的类标签id嵌入
评估
规模
目前,AliCoCo 已经基本完成了 1.0 版本的建设,共包含 2.8m 的原子概念,5.3m 的电商概念,超过千亿级别的关系。淘宝天猫上超过 98% 的商品均已纳入到 AliCoCo 的体系之中,平均每个商品关联了 14 个原子概念和 135 个电商概念。通过对用户需求的统计,相较于之前的商品管理体系,AliCoCo 对于搜索 query 中用户需求的覆盖从35%提升到了 75%。
实验
主动学习
随机抽取“Category”类中至少有一个上位词的3000个原子概念,检索到7060个下位词对作为正样本。将正样本分成训练/验证/测试集(7:2:1)。训练集和验证集的负样本由正样本对自动生成,方法是用“Category”类中的随机原子概念替换每对样本的上位词。在接下来的50万个主动学习实验中构建了候选训练池。
电商概念分类
我们随机抽取候选集中的大部分电商概念,并要求人工进行标记。最终数据集由70k个样本组成(正:负=1:1)。然后我们将数据集分成7:1:2进行训练、验证和测试。
电商概念标注
直接从文本语料库中挖掘出来的电商概念与原子概念层联系起来,提出了一个文本增强的NER模型+模糊CRF模型。我们随机抽取了一小部分(7200)电商概念,并要标注。为了扩大训练数据,我们使用类似远程监督的思想来自动生成24000对数据。我们将7200对人工标注的数据分成4800/14000/1000对,用于训练、验证和测试。24000对远程监督数据被添加到训练集中,以帮助学习更健壮的模型。
概念商品匹配
创建了一个样本量为450m的数据集,其中250m是正对,200m是负对。我们随机抽取了400个电商概念,并要求人进行标记。我们总共收集了200k个正对和200k个负对作为测试集。表6显示了实验结果,其中F1是通过设置阈值0.5来计算的。
应用
电商搜索
相关性是搜索引擎的核心问题,其最大的挑战在于用户输入的 query 和商品端之间存在语义隔阂。AliCoCo 中已经为大量的原子概念和电商概念关联了相应的商品,为商品理解提供了从用户视角出发的大量标签,同时 AliCoCo 包含了大量的同义和上下位关系,这些数据帮助了搜索相关性取得显著的提升,从而进一步改善了用户体验。
语义搜索和自动问答一直人们对于搜索引擎的梦想。在电商的场景中,我们可以充分发挥 AliCoCo 的优势,当用户搜索命中电商概念的时候,通过一个知识卡片的形式透出该电商概念下多样化的商品,类似 Google 的知识图谱帮助搜索引擎在用户检索一些实体时透出知识卡片。如上图(a)所示,当用户在淘宝搜索“烘焙”时,命中了相应的电商概念“烘焙工具”,于是会透出一个卡片,上面的商品按照不同品类来进行排序展示。此外,我们还可以透出一些对于烘焙知识的文字解释用于辅助用户进行决策。而电商场景中的自动问答,更多出现在语音交互的场景中,我们可以在家里问天猫精灵“周末要组织一场户外烧烤,我需要准备哪些东西?”,AliCoCo 可以为这样的场景提供底层知识的支持。
电商推荐
目前电商推荐主要以商品推荐的形式为主,但为了满足用户丰富多样的购物需求,我们也需要为用户做一些主题式的推荐,让用户能够明显感知到推荐系统能更人性化地在满足其购物需求。AliCoCo 中的电商概念,正是为了表达用户需求,同时 2-3 个词的长度也非常适合直接推送给用户。如上图(b)中所示,在手机淘宝首页信息流推荐中,我们在商品坑位之间插入了以电商概念为主题的知识卡片,当用户点击卡片时,就会跳到相应的页面,展示该电商概念下的商品。这个应用目前已经稳定运行了超过一年,满足了用户多样化的推荐需求,进一步提升了用户的满意度。
此外,电商概念简短的文字也非常适合用作推荐理由展示在商品坑位中,进一步吸引用户,如上图(c)所示。AliCoCo 为可解释的推荐提供了数据基础。