搜索知识图:从多个来源构建



我想谈谈什么是知识图谱,以及从多个主题来源构建知识图谱的方法之一。

搜索中的大量查询包含单个实体-用户询问的对象。它可以是关于某些人,电影,系列,音乐或地理对象的请求。当用户发出这样的请求时,在发出请求时,可以向他显示一张附加的信息卡,希望该卡中的信息对用户而言是令人感兴趣的。卡片可装饰问题并增加其可见性。在信息卡的帮助下,我们让一个人了解他正在使用智能服务,因为搜索引擎意识到他已经在考虑要问什么样的对象。此外,可以通过直接在问题页面上响应用户的请求来扩展此情报。例如,针对“布拉格的景点”,我们可以立即显示该城市的景点。

有时,用户想要了解某个对象的某些知识,但是除了其存在的事实外,对它一无所知。或者用户想继续研究某个主题。特别是在这种情况下,卡片会显示此对象的用途,并在“另请参阅”块中显示继续进行研究的可能选项。

知识图


所有这些语义技术都基于知识图-知识图的节点是真实世界的对象,而过渡是对象之间的类型化关系(例如,出生地的关系与出生日期的关系不同)。小知识图的一个示例如图2所示。1。


图。1.知识图示例

可以下载和使用开放的知识图。表格中提供了有关最著名的开放知识图的示例和一些统计信息。1.

桌子。1.开放知识图的统计

知识图记录数物件数量更新频率
自由库超过30亿4900万未更新
维基数据7.48亿1800万每周一次(递增-每天一次)
Dbpedia4.11亿400万2019年8月的最新更新

开放图的问题在于,并非所有知识领域都被足够深入地覆盖。例如,俄罗斯电视节目。它们在世界范围内并不十分流行,但对我们来说尤为珍贵,因为用户询问它们。这意味着我们需要找到有关这些系列的一些信息,并将其带到SERP(搜索引擎结果页)中。第二个问题是相当罕见的更新。但是,当事件发生时,我们希望尽快带出这些信息,并将其显示在搜索结果页面上。

这些问题至少有三种可能的解决方案。

第一:什么都不做,和解,闭上眼睛,继续生活。第二:仔细手动添加信息以打开知识列,然后从那里使用数据。第三种选择是:自动将来自某些专题来源的知识与图表合并。对于相同的电影和电视节目,有很多这样的资源:KinoPoisk,IMDb和KinoMail.ru。此外,通常在知识图中,对象具有指向流行主题资源的链接

我们开始实施第三种方法。在开始解决此问题之前,您需要准备。事实是,源中的数据以不同的格式表示。例如,在Wikidata中,它是JSON,在Cinema Search-HTML中。它们需要转换为相同的格式。我们转换为N-Triples,因为并行处理很方便,在这种情况下,这非常重要,因为我们使用大数据。Wikidata的扩展JSON转储占用约720 GB,电影搜索HTML页面为230 GB,因此几乎所有任务都可以使用MapReduce范例在群集上解决。

双胶合


合并知识图时最困难的任务之一就是粘贴重复项。例如,我们有图和两个对象,它们是现实世界中的一个对象。我们希望将它们粘合在一起,形成结果图中,使其成为知识图中的一个对象。我们从一开始就提出的解决方案非常简单。让我们粘贴所有具有相同名称的对象。因此,我们了解到,至少有两个著名人物以布拉德·皮特(Brad Pitt)为名,比四十部电影和系列电影《桥》(The Bridge)少一点,在伊万诺夫斯上也有相同数量的人,有关维基百科的文章也是如此。

显然,这种简单的方法行不通,需要更复杂的方法。然后我们提出了一个三部分的解决方案。第一部分是用于链接的候选生成器。第二个是分类器,它试图回答是否应该将两个对象粘合在一起的问题。第三步是附加的粘合步骤:我们正在粘合由于某种原因而无法工作的东西,以便在上一步中粘合。

为了减少用于链接的候选对象的数量,需要一个生成器(尝试将每个对象与每个对象链接太昂贵)。因此,我们将自己限制在少数候选人中,然后仅对这一小集合运行分类器。基本思想是,可以关联的对象名称应在某种程度上相似。我们决定从子串的完全匹配开始,但是具有重新排列单词的能力。这意味着,如果两个对象的词序不同(例如,人名和姓氏混合在一起),则它们仍将匹配。我们使用俄语名称和原始外国名称。对于从Wikipedia重定向收集的对象,我们还使用昵称,别名和同义词。

在训练模型之前,最好从某个地方获取数据。我们很幸运,所需的一切已经在知识的开放图中。例如,在Wikidata中,有不到20万个对象,指向KinoPoisk的电影和电视节目的链接,以及不到10万个与KinoPoisk的人的链接。我们将接受有关此数据的培训。

所有属性都基于这样的思想,即两列中的同一对象应具有相似的上下文。类似的想法用于解决实体链接问题。此外,图中的上下文并不意味着该对象的相邻对象,而是它们的字符串描述。更正式地说,图中的对象上下文将被视为与其相邻的所有行,以及与该对象相关的对象的名称和类型。在图。属于该对象的上下文的2行以粗体突出显示。


图。2.对象上下文有

几种使用字符串的方法。首先,要考虑字符串的重合,将它们作为一个整体进行匹配,也就是说,仅考虑完全重合。其次,我们可以将字符串用作一袋单词,将字符串分解为单词并牺牲顺序。我们使用两种方法。

字符串可以一起使用,也可以按与对象关联的关系类型进行分组。还考虑了按组进行的绝对和相对匹配。

让我们以两个对象为例:Lionel Messi(Lionel Messi)和Lionel Richie(Lionel Richie)。2.

桌子。2. Lionel Messi和Lionel Richie对象的某些关系。

关系名称莱昂内尔·梅西莱昂内尔·里奇
名称莱昂内尔·梅西“莱昂内尔·里奇”
生日1987年6月24日“ 1949年6月20日”
足球俱乐部巴塞罗那足球俱乐部--

名称不完全匹配,因此名称中的完全匹配为零。但是名称中单词匹配的数量为1,因为原始名称“ Lionel”匹配两个对象。名称的提花系数(交集大小与并集大小的比率)将为0.2:

J(Messi,Richie)=|«Lionel»||«»,«»,«Lionel»,«Messi»,«Richie»|


我们没有立即理解,如果一个对象没有正确的关系,那么在这个符号上匆匆写零就没有意义了,最好写出Missing值。毕竟,当我们将主题图添加到大图时,它通常没有某种关系,并且您需要能够区分两种关系不匹配的情况,以及其中一个对象根本没有必要的关系的情况。 。按照此逻辑,football_club关系的匹配单词数将为Missing值。在所有关系中,完整行匹配的数量为零,匹配单词的数量为两个(“ Lionel”和“ June”)。

该模型使用的最佳功能的等级如图2所示。 3。


图。3.使用的最重要符号

我们模型的最佳属性是单词的总相对重合。这个复杂的名称隐藏了所有关系的提花系数之和。有趣的是,如果我们完全放弃此任务的所有机器学习,并通过此功能的值保留或多或少的适当截止值,则模型的质量将降低F1-措施将仅下降20%。如果我们采用上述标志,则可以开箱即用地训练它们XGBoost,即250棵树木,高度为4,那么我们将获得非常好的度量。

表。3.测试数据的质量模型度量。

指标名称
精确0.961531
完整性(召回)0.963220
F10.962375
澳柯0.999589

但是有一个问题:在这些度量标准上,我们未粘合的某些对象不可见。这些是具有许多关系的所谓“大物体”。城市,国家,职业-这些是与大量其他对象关联的对象。在图。图4显示了在SERP上的外观。一切似乎都无害:


图。4.“大”物件的问题

。卡中有重复的物件看起来还可以,但实际上问题更加严重,数据一致性受损。这是因为在我们的训练数据中根本没有这样的对象。在这里有必要应用一种不同的方法,为了自己的利益使用这些对象的大量关系。在图。图5示出了该方法的图。假设有两个对象X和Y,它们通过分类器相连。这些对象属于不同的图,每个对象都与其图中的其他一些对象关联。对象X通过关系与对象A,B,C关联r1r2r3,以及对象Y与对象D,E和F之间的关系 r1r2r4但是现在我们知道对象X和Y实际上是现实世界中的一个对象。


图。5.附加粘合

我们提出两个假设:

  • H1:P(D|A)=p=P(D|¬A)- 一个东西 D不以任何方式连接并且独立于对象发生 A
  • H2:P(D|A)=p1p2=P(D|¬A)-之间的某种关系 DA一切就是这样。

然后,我们可以应用似然比检验并接受两个假设之一。因此,我们可以将大型物体粘在一起。

最终的解决方案非常通用,因此可以类似的方式为其他主题源粘贴重复项,从而不断增加知识图中主题的覆盖范围和深度。

结论


本文考虑了解决粘合不同知识图的相同对象问题的一种可能解决方案。构建完知识图之后,我们可以在页面上显示带有搜索结果的信息卡,使用图中的知识来回答事实,或者提出一些其他有趣的应用程序来取悦用户。

希望能有一点从内到外的了解它的工作原理很有趣。如果有任何无法理解的时刻,请提出问题,我将尽力回答。

All Articles