自动化构建产品知识图谱技术解析

本文介绍AutoKnow系统如何通过机器学习技术自动构建产品知识图谱,涵盖 taxonomy 扩展、关系发现、数据填补、数据清洗和同义词识别五大模块,将产品图谱中的事实数量提升了近200%。

自动化构建产品图谱

知识图谱是以灵活方式捕获数据关系的数据结构。它们可以帮助提高信息检索的精确度,也可用于发现大型数据集中先前未知的关系。手动构建知识图谱极其耗时,因此该领域的研究人员长期研究自动生成知识图谱的技术。这种方法在电影信息等领域取得了成功,这些领域的关係类型相对较少,且结构化数据源丰富。

在零售产品领域自动生成知识图谱则困难得多,因为数据项之间的关系类型基本上是无界的——服装的颜色、糖果的口味、电子产品的瓦数等等——而且许多有用信息存储在自由形式的产品描述、客户评论和问答论坛中。

AutoKnow框架

知识图谱通常由实体(图的节点,通常描绘为圆形)和实体之间的关系(通常描绘为连接节点的线段)组成。例如,实体"饮料"可能通过关系"包含"与实体"咖啡"相关。实体"咖啡袋"可能通过关系"有体积"与实体"16盎司"相关。

在电影信息等狭窄领域中,实体类型(如导演、演员和编辑)的数量有限,关系的数量(如执导、表演、编辑等)也有限。此外,电影源通常提供结构化数据,明确列出演员和工作人员。

而在零售领域,产品类型的数量往往随着图的扩展而增长。每种产品类型都有自己的一组属性,这些属性可能与下一种产品类型的属性完全不同——例如颜色和纹理,与电池类型和有效范围。关于产品的关键信息——例如咖啡杯太热而无法握持——可能隐藏在评论或问答部分的自由形式文本中。

AutoKnow通过五个基于机器学习的处理模块应对这些挑战,每个模块都建立在前一个模块的输出之上:

  • 分类扩展:扩展图中实体类型的数量
  • 关系发现:识别产品属性、这些属性的可能值范围(例如不同的口味或颜色),以及哪些属性对客户很重要
  • 数据填补:使用先前模块发现的实体类型和关系,确定与产品相关的自由形式文本是否包含图中缺失的任何信息
  • 数据清洗:对现有和新提取的数据进行分类,查看源文本中是否有任何数据被错误分类
  • 同义词查找:尝试识别具有相同含义的实体类型和属性值

分类套件

AutoKnow的输入包括现有产品图谱;包含一些结构化信息(如标记的产品名称)和非结构化产品描述的产品目录;自由形式的产品相关信息,如客户评论和产品相关问答集;以及产品查询数据。

为了识别新产品,分类扩展模块使用机器学习模型标记源目录中产品标题的子字符串。例如,在产品标题"Ben & Jerry’s黑樱桃芝士蛋糕冰淇淋"中,模型会将子字符串"冰淇淋"标记为产品类型。

同一模型还标记指示产品属性的子字符串,用于关系发现步骤。例如,在这种情况下,它会将"黑樱桃芝士蛋糕"标记为口味属性。该模型根据手工分类的分类法对已分类产品描述进行训练。

接下来,分类扩展模块根据其上义词(它们所属的更广泛产品类别)对新提取的产品类型进行分类。例如,冰淇淋属于上义词"冰淇淋和新奇品",而该上义词又属于上义词"冷冻食品",依此类推。

上义词分类器使用关于客户互动的数据,例如客户在单个查询后查看或购买了哪些产品。同样,机器学习模型根据现有分类法对标记的产品数据进行训练。

关系发现

关系发现模块根据两个标准对产品属性进行分类。第一个是属性是否适用于给定产品。例如,口味属性适用于食品但不适用于服装。

第二个标准是属性对特定产品的购买者有多重要。事实证明,品牌名称对零食购买者比农产品购买者更重要。

两个分类器都分析提供商提供的数据——产品描述——和客户提供的数据——评论和问答。对于两种类型的输入数据,分类器考虑属性词在与给定产品相关的文本中出现的频率;对于提供商数据,它们还考虑给定词在特定产品类型实例中出现的频率。

这些模型根据已注释的数据进行训练,以指示特定属性是否适用于相关产品。

数据套件

第三步,数据填补,寻找产品描述中可能适合前几步识别的新产品和属性类别但尚未添加到图中的术语。

此步骤使用嵌入,将描述性术语表示为向量空间中的点,其中相关术语分组在一起。其思想是,如果空间中聚集在一起的许多术语共享相同的属性或产品类型,那么同一簇中未标记的术语也应该如此。

先前,我与某中心的同事以及犹他大学的同事通过训练序列标记模型展示了最先进的数据填补结果,该模型类似于我上面描述的模型,将"黑樱桃芝士蛋糕"标记为口味。

然而,在这里,我们通过以产品类型为条件来改变该方法:即,模型标记的序列输出取决于产品类型,我们将产品类型的嵌入包含在输入中。

下一步是数据清洗,它使用基于Transformer架构的机器学习模型。模型的输入是文本产品描述、属性(口味、体积、颜色等)以及该属性的值(巧克力、16盎司、蓝色等)。根据产品描述,模型决定属性值是否分配错误。

为了训练模型,我们收集出现在单个产品类型多个实例中的有效属性-值对(例如,所有冰淇淋类型都有口味);这些构成正例。我们还通过用不匹配的值替换有效属性-值对中的值来生成负例。

最后,我们分析我们的产品和属性集以找到应在产品图的单个节点中组合的同义词。首先,我们使用客户互动数据来识别在同一查询期间查看的项目;它们的产品和属性描述是候选同义词。

然后我们使用多种技术组合来过滤候选术语。这些包括编辑距离(两个字符串相似性的度量)和神经网络。在测试中,这种方法产生了可观的0.83精确率-召回率曲线下面积。

在正在进行的工作中,我们正在解决许多悬而未决的问题,例如如何处理具有多个上义词的产品(在产品层次结构中具有多个"父级"的产品),在数据用于训练我们的模型之前清洗数据,以及使用图像数据和文本数据来提高我们模型的性能。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计