沃尔玛正致力于构建一个零售图谱(Retail Graph),捕捉有关产品及其干系实体的知识,以帮助我们的客户更好地创造产品。它是一个产品知识图谱,可以在零售环境中回答有关产品和干系知识的问题,可用于语义搜索、推举系统等。本文进一步阐述了什么是零售图谱、如何构建零售图谱、环绕图模型的技能选择、数据库和一些用例。
沃尔玛的零售图谱是什么零售图谱捕获了零售天下中存在的产品和实体之间的连接。实体是存在的物体、事物、观点或抽象,例如客厅、野生动物拍照、颜色、农舍风格。我们关注的实体大致有两种:抽象的和详细的。前者帮助我们回答诸如“夏日拍浮池派对用品”、“田舍客厅家具”、“野生动物拍照镜头”之类的问题,而后者帮助我们回答诸如“蓝色牛仔裤裤子”、“木制餐桌”之类的问题。该图谱还将产品之间的关系捕获到两个种别,替代品和补充品(附件、兼容产品等)。它还试图将抽象观点(如亮色)映射到详细的产品属性。
在研究过沃尔玛的产品目录后,我们知道在构建这样一个别系时会碰着一些寻衅。最大的寻衅是缺少产品数据的唯一威信来源。此外,我们的目录中也有来自我们互助伙伴的缺点数据。以是,我们首先:

在较高层次上,我们紧张关注以下关系来构建我们的零售图谱:
产品<->实体产品<->产品(大致分为替代品和补充品)1.产品<->实体为了构建产品到实体图,我们首先从产品内容中提取实体,然后将它们链接到抽象或详细的观点,形成三元组。我们添加了一个管理层,许可儿们在一定的置信水平下得到有效的三元组,以保持高质量标准。
a.实体提取
实体提取模块的目标是从产品标题和描述中提取“实体”。产品描述内容多种多样。有时内容很冗长,有时可能是要点中的小短语。考虑到这一点,我们开拓了两种从产品内容中提取实体的算法:
i.基于NLP的模型我们首先从产品标题、描述和其他元数据中提取实体。这是通过建立一个措辞模型来实现的,该模型利用了Standford Core NLP供应的POS标记。这个模型更适宜我们的用例,由于产品标题和描述常日因此项目符号的形式涌现的,以产品亮点为特色,而不是布局良好的句子。下面是我们基于NLP的模型的输出示例。
ii.启示式模型
我们采纳的另一种方法产生了良好的结果,便是利用规则来解析描述。卖家/供应商利用某些格式(HTML标记)来突出产品的关键特性。我们通过对关键信息运用一组启示式方法,建立了关于如何解析和提取关键信息的规则。以下是示例产品解释及其输出:
在生产中,我们可以同时利用上述两种。这可以给我们一个很好的平衡,启示式模型非常准确而NLP模型给我们更大的覆盖。
b.实体链接一旦实体被提取出来,我们须要识别它们所代表的内容以及它们与产品的关系。例如,对付“中世纪沙发”这样的实体,我们必须确定在沙发的高下文中,中世纪代表什么。这是通过一个称为实体链接的过程来实现的,在这个过程中,我们试图找到提取的实体与其产品之间的关系。实体链接模块的另一个主要功能是肃清给定高下文的歧义。例如,“cherry(樱桃)”可以指烛炬的喷鼻香味,果汁的喷鼻香味,家具的喷鼻香味,布料的颜色,或者樱桃这种水果。这里所指的高下文常日是产品种别或产品类型。
链接器将高下文(产品类型)和实体作为输入,并天生一个三元组(主语-宾语谓词)。由于产品数据没有一个准确的真实来源,连接实体的任务变得很困难。我们首先从一组最脱销的产品(我们假设最脱销的产品有更准确的数据)创建一个产品类型、属性名和属性值三元组的字典。第一步是利用这个字典,在高下文不可知的时候确定可能的候选列表。然后运行第二个模型,通过利用高下文对它们进行排序。
对付上面提取的实体,链接器输出如下所示:
c.实体管理
作为实体提取的一部分,也会提取大量的“噪声”。我们利用现有的产品元数据构建了一个字典,作为将提取的实体分类为噪声或“未知”观点的参考。然后,我们添加了一个管理模块,该模块可以利用启示式和手动标记的组合来肃清噪声。这确保了进入知识图谱的数据总是干净可靠的。
2.产品<->产品为了识别给定产品的替代品,我们同时利用文本数据和图像数据。在家具、服装等产品种别中,视觉相似性在识别替代品方面起着重要浸染。我们为我们的产品构建了图像嵌入和文本嵌入,并将它们放入FAISS索引中(FAISS是Facebook开拓的一个高效相似性搜索和向量聚类库)。对付每个产品,我们从文本嵌入和图像嵌入两方面天生其KNN(k隔壁),以得到候选集。在那之后,我们运用一个种别特定的排名逻辑来得出终极的结果。例如,在家具类别的情形下,“家居装饰风格”(中世纪/沿海/农舍)在确定可替代性方面起着关键浸染。
架构当我们开始构建零售图谱的旅程时,我们不太确定系统的终极状态会是什么样子。我们只知道我们须要一个组件来提取实体,链接它们,然后存储它们。考虑到我们产品目录的规模,我们知道每一个都必须扩展到100亿个产品。此外,还须要快速试验、构建并快速迭代以得到反馈。我们决定采取进化架构原则来构建我们的系统(https://evolutionaryarchitecture.com)。
一个进化的体系构造支持增量的、有辅导的变革,这是超过多个维度的紧张原则。
实体提取和链接被构建为大略的库,然后作为REST风格的API公开给其他系统集成。我们还在实体提取和实体链接器库之上构建了Hive udf,以便在我们的Hadoop集群上按比例运行它们。
数据处理管道我们有两条管道-一条用于天生产品<->实体,另一条用于天生产品<->产品。它们定期在我们的数据平台团队管理的Hadoop集群上运行。以下是对数据处理管道的高度概述:
图数据模型和图数据库
在聚合到LPG(标记属性图)之前,我们已经为读写用例测试了LPG和RDF图数据模型。在对内部的图形数据库进行了一些实验之后,我们缩小了对图数据模型的范围。我们与Azure团队密切互助,为我们供应Java支持,以实现数据的大容量吸收。对付图形遍历,我们利用gremlin。
沃尔玛内部运用程序为沃尔玛产品目录的大小构建产品知识图谱须要相称长的韶光。我们在构建这个模型时,一次只利用一个种别,然落后修并扩展到其他种别。我们开始这项事情的重点是家庭类和花园类。我们在沃尔玛产品页面上做了一个a/B测试,与利用产品关系的商品推举团队一起事情。
我们的电子商务语义搜索团队正与我们紧密互助,利用零售图谱中的关系构建一个新的查询理解系统。我们目前正在运行交错测试,A/B测试,以网络客户对我们的新语义搜索实现的反馈。
结尾很难在一篇文章中详细先容零售图谱的各个细节,但我希望这能供应一个不错的概述。我们还有很长的路要走。像这样的操持须要快速的迭代、大量的实验。我很幸运,有一个伟大的工程师和数据科学家的团队来互助这个有趣的项目!