阿里妹导读:电商平台最大的挑战是从日益增长的海量商品(数十亿)中挑选出的一个小的子集(几十或上百)展示给用户,以满足用户的个性化的购物需求。为了解决仍存在的重复推荐、缺少新意等问题,我们提出建设大规模电商认知图谱。
今天,搜索推荐事业部认知图谱团队全面总结了目前在构建电商认知图谱方面的探索,主要介绍认知图谱的定义、整体的构建思路,构建过程中一些具体的算法问题,和最终在搜索推荐上的应用。
背景
纵使近年来电商搜索、推荐算法已经取得了长足的进步,但这些算法依然存在许多问题,如推荐中经常为人诟病的重复推荐、缺少新意等。究其本质,这是因为现有的算法主要还是沿袭“商品到商品”的思路,并不是直接从用户需求来驱动的,甚至对用户需求没有一个清晰的定义。而另一方面,理解并满足用户需求又是这些算法所要达成的最终目标,这两者之间的有着天然的隔阂。
为了打破这个隔阂,让搜索、推荐算法更好地认知用户的需求,我们提出建设大规模电商认知图谱(E-commerce ConceptNet),将用户需求显式地表达成图中的节点(称为E-commerce Concept),并将这些需求点和电商领域内的商品、类目,电商外部的通用领域知识等关联起来,为商品认知、用户认知和知识认知提供统一的数据基础,并为下游搜索推荐算法提供新的优化思路和更多的可能性。
什么是e-commerce concept?
前面提到,我们将用户需求称为“e-commerce concept”: 一个有商品需求的概念,一般情况下以一个符合常识,语义完整,语序通顺的短语表示。例如:“连衣裙”、“儿童防走失”、“烧烤必备”、“宝宝保暖”、“波西米亚连衣裙”、“春节庆祝”等。这些concept需要满足如下的基本原则:
如上所示,右边的短语均违背了电商概念的基本原则,所以在实际挖掘过程中都是会被过滤掉的。进一步,我们将concept分为了三大类:
购物场景(shopping scenario):表示一类非特定品类的用户需求,场景感较强,如“儿童防走失”、“春节送礼”等。
泛品类(extensive category):表示一类有特定品类的用户需求,可以是不加修饰的纯净品类,如“连衣裙”、“水果”等,也可以是有属性限制的品类,如“韩版波点连衣裙”、“儿童羽毛球拍”等。
通用概念(general concept):表示一类通用的概念,可以和电商外部的开放领域知识相关联,如“防晒”、“烧烤”、“老人”等。
E-commerce concept从哪里来?
在明确了定义和基本原则之后,我们需要挖掘大量的concept用以覆盖各式各样的用户需求。目前,我们认为用户在使用淘宝或天猫搜索时输入的搜索词(query)和商品的标题(title)是concept挖掘可以利用的最大来源。而我们的工作主要是要将满足我们上述原则的concept短语,从充满噪音的query、title中挖掘出来,这一步称为“Concept Mining”。
Concept Mining主要分为两步,一个是候选生成(Candidate Generation),另一个是概念正确性判断(Concept Classification)。总体流程如下:
其中,候选的生成分为两块,一块是使用AutoPhrase按照字粒度从句子中切分出来的短语信息,一块是通过序列模板抽取器(Sequential Pattern Extractor)做频繁序列挖掘后的模板信息,结合2-gram的统计语言模型,得到concept候选。在得到候选后,我们会利用一个判别模型来融合语言模型embedding,concept的序列信息,以及规则前后缀,pv统计等特征,判断concept是否是符合要求的。
★ Candidate Generation
我们首先通过pattern抽取器从现有的正负concept中提取pattern并计算权重,然后通过这些pattern,并结合三个窗口内的统计语言模型,进行候选的剪枝,最后生成的候选基本都是符合语序,满足基本常识的。
★ Concept Classification
我们一方面结合一些简单的规则进行特征抽取,另一方面,利用现有的序列特征训