知识库三元组检验的方法与装置与流程

文档序号:12719921阅读:324来源:国知局
知识库三元组检验的方法与装置与流程
本发明涉及知识库扩充技术,尤其涉及一种知识库三元组检验的方法与装置。
背景技术
:知识库是一种以三元组的形式结构化地存储知识的数据库,用于对某一领域或者某一行业中海量知识进行结构化地存储。例如,一个历史知识库可以存储历史领域中的海量知识,包括各个历史人物、历史事件等。知识库以实例为主要描述对象,采用面向对象的方法表示知识,一个实例是对现实中一个具体或抽象事务的指代。例如,实例可以表示一个人物,也可以表示一座城市、一件事情等。一个知识库通常包括多个实例,实例的多个属性以及各个实例之间的关系均采用三元组的结构存储。三元组是知识库中用于表示知识的基础结构。它的结构可以表示为<第一语句,关系语句,第二语句>,关系语句用于表示所述第一语句和所述第二语句之间的关系。知识库扩充是指在原知识库不完备的情况下,通过数据挖掘的方法,利用已知的表示知识的三元组预测未知的三元组,以在原知识库中扩展新的三元组,使得知识库更加完备。因此,检验新的三元组是否可信成为亟需解决的技术问题。技术实现要素:本发明提供一种知识库三元组检验的方法与装置,以解决现有技术中扩展的三元组不可信等缺陷。本发明第一个方面提供一种知识库三元组检验的方法,包括:获取扩展三元组对应的规则,所述扩展三元组是基于现有知识库中的原三元组和所述规则进行扩展操作得到的三元组,所述扩展三元组包括至少由第一语句、关系语句、第二语句组成的有序集合,所述关系语句用于表示所述第一语句和所述第二语句之间的关系;确定所述规则对应的因子函数,所述因子函数用于表示所述规则是否正确的概率,所述因子函数是根据初始因子函数和EM算法获得的;根据所述因子函数确定所述扩展三元组是否可信。根据如上所述的方法,可选地,所述根据所述因子函数确定所述扩展三元组是否可信包括:根据置信传播和所述因子函数确定所述扩展三元组对应的第一概率分布和第二概率分布,所述第一概率分布用于表示所述扩展三元组应该可信的概率,所述第二概率分布用于表示所述扩展三元组不可信的概率,且所述第二概率分布=1-所述第一概率分布;根据目标概率分布和预设阈值确定所述扩展三元组是否可信,所述目标概率分布为所述第一概率分布或所述第二概率分布。根据如上所述的方法,可选地,所述根据目标概率分布和所述预设阈值确定所述扩展三元组是否可信包括:若所述预设阈值为可信的阈值,则所述目标概率分布为第一概率分布,若所述目标概率分布大于或等于所述预设阈值,则确定所述扩展三元组可信;若所述目标概率分布小于所述预设阈值,则确定所述扩展三元组不可信;若所述预设阈值为不可信的阈值,则所述目标概率分布为第二概率分布,若所述目标概率分布大于或等于所述预设阈值,则确定所述扩展三元组不可信;若所述目标概率分布小于所述预设阈值,则确定所述扩展三元组可信。根据如上所述的方法,可选地,所述确定所述规则对应的因子函数包括:根据如下公式确定通过所述EM算法进行迭代操作之后的所述因子函数f(t+1):f(t+1)=f(t)*[f’(t)/p(t)];其中,f(t)表示所述因子函数在第t轮的取值,t为大于或等于0的正整数且t的初始值为0,f(0)为初始化的因子函数的值,f’(t)表示所述因子函数在t轮的经验分布,p(t)表示所述因子函数在第t轮的采样分布,所述经验分布和所述采样分布是在EM算法进行迭代操作过程中得到的。根据如上所述的方法,可选地,所述迭代操作在f(t)的值不再发生变化时停止。本发明另一个方面提供一种知识库三元组检验的装置,包括:获取模块,用于获取扩展三元组对应的规则,所述扩展三元组是基于现有知识库中的原三元组和所述规则进行扩展操作得到的三元组,所述扩展三元组包括至少由第一语句、关系语句、第二语句组成的有序集合,所述关系语句用于表示所述第一语句和所述第二语句之间的关系;确定模块,用于确定所述规则对应的因子函数,所述因子函数用于表示所述规则是否正确的概率,所述因子函数是根据初始因子函数和EM算法获得的;处理模块,用于根据所述因子函数确定所述扩展三元组是否可信。根据如上所述的装置,可选地,所述处理模块包括:第一子模块,用于根据置信传播和所述因子函数确定所述扩展三元组对应的第一概率分布和第二概率分布,所述第一概率分布用于表示所述扩展三元组应该可信的概率,所述第二概率分布用于表示所述扩展三元组不可信的概率,且所述第二概率分布=1-所述第一概率分布;第二子模块,用于根据目标概率分布和预设阈值确定所述扩展三元组是否可信,所述目标概率分布为所述第一概率分布或所述第二概率分布。根据如上所述的装置,可选地所述第二子模块具体用于:若所述预设阈值为可信的阈值,则所述目标概率分布为第一概率分布,若所述目标概率分布大于或等于所述预设阈值,则确定所述扩展三元组可信;若所述目标概率分布小于所述预设阈值,则确定所述扩展三元组不可信;若所述预设阈值为不可信的阈值,则所述目标概率分布为第二概率分布,若所述目标概率分布大于或等于所述预设阈值,则确定所述扩展三元组不可信;若所述目标概率分布小于所述预设阈值,则确定所述扩展三元组可信。根据如上所述的装置,可选地,所述确定模块具体用于:根据如下公式确定通过所述EM算法进行迭代操作之后的所述因子函数f(t+1):f(t+1)=f(t)*[f’(t)/p(t)];其中,f(t)表示所述因子函数在第t轮的取值,t为大于或等于0的正整数且t的初始值为0,f(0)为初始化的因子函数的值,f’(t)表示所述因子函数在t轮的经验分布,p(t)表示所述因子函数在第t轮的采样分布,所述经验分布和所述采样分布是在EM算法进行迭代操作过程中得到的。根据如上所述的装置,可选地,所述确定模块还用于:所述迭代操作在f(t)的值不再发生变化时停止。根据本发明的知识库三元组检验的方法与装置,通过获取扩展三元组对应的规则,根据初始因子函数和EM算法确定该规则对应的因子函数,并根据该因子函数确定扩展三元组是否可信,进而可以确定是否将该扩展三元组放入知识库中,对知识库进行扩充,提高了知识库扩充的准确性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明一实施例提供的知识库三元组检验的方法的流程示意图;图2为本发明另一实施例提供的知识库三元组检验的方法的流程示意图;图3为本发明一实施例提供的知识库三元组检验的装置的结构示意图;图4为本发明另一实施例提供的知识库三元组检验的装置的结构示意图;图5为本发明实施例中构建的因子图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一本实施例提供一种知识库三元组检验的方法,用于检验知识库的扩展三元组是否可信。本实施例的执行主体是知识库三元组检验的装置。如图1所示,为知识库三元组检验的方法的流程示意图,该方法包括:步骤101,获取扩展三元组对应的规则,扩展三元组是基于现有知识库中的原三元组和规则进行扩展操作得到的三元组,扩展三元组包括至少由第一语句、关系语句、第二语句组成的有序集合,关系语句用于表示第一语句和第二语句之间的关系。知识库由表示知识的多个三元组构成,比如Freebase知识库,一个三元组可以表示为(第一语句,关系语句,第二语句),其中,关系语句用于表示第一语句和第二语句之间的关系,例如,知识库中的一个三元组为(李明,国籍,中国),其表示的意思是李明的国籍是中国,另一个三元组为(李明,居住地,北京),则表示李明住在北京。知识库扩充即根据知识库中原有的三元组,采用规则发现方法发现一些规则,再根据原有的三元组和这些规则进行扩展操作得到扩展三元组。其中,采用的规则发现方法可以是现有技术常用的方法,比如关联规则发现方法AMIE或者其他发现方法。具体如何根据规则获取扩展三元组,有很多种方式。例如,现有知识库中存在多组如下的原三元组:(A,女儿,B)、(C,丈夫,B)、(A,女儿,C),其中,(A,女儿,B)表示A是B的女儿、(C,丈夫,B)表示C是B的丈夫、(A,女儿,C)表示A是C的女儿,则可以发现有这样一个规则:由(H,女儿,Y)和(Z,丈夫,Y)可以推测出(H,女儿,Z),将这个规则表示为(H,女儿,Y)+(Z,丈夫,Y)=>(H,女儿,Z),有了这一规则,若知识库中存在(小红,女儿,王英)和(张三,丈夫,王英),但是并不存在小红与张三的知识三元组时,根据规则(H,女儿,Y)+(Z,丈夫,Y)=>(H,女儿,Z)及已有的两个原三元组(小红,女儿,王英)和(张三,丈夫,王英),可以得出扩展三元组(小红,女儿,张三)。此时,该扩展三元组对应的规则即为(H,女儿,Y)+(Z,丈夫,Y)=>(H,女儿,Z)。可以理解地,规则中的每个三元组中的第一语句和第三语句并不是确定的,而是如方程式中的变量一样,是未知的,我们称组成规则的每个三元组为原子规则,该原子规则是未知的三元组,可以将知识库中的原三元组或者扩展三元组,能满足该规则的,代入该规则,得出一个规则的实例。根据上述的过程,在知识库中原三元组的基础上会得到多个规则,并能根据多个规则和原三元组进行扩展操作得到多个扩展三元组。可以理解地,在根据多个规则和原三元组进行扩展操作得到多个扩展三元组之后,还可以再根据多个规则及原三元组和多个扩展三元组继续进行扩展操作,直至没有新的扩展三元组得出。将知识库中所有能满足多个规则的原三元组或者扩展三元组均代入规则中,得出多个规则的多个实例,可以理解的,一个规则可以有多个实例。其中,若一个规则的实例中有某个扩展三元组,则该扩展三元组对应的规则即为该规则。可以理解地,在实际操作过程中,会用到所有规则,而我们的目的是为了检验扩展三元组是否可信,因此,此处只是为了达到目的,所以是获取扩展三元组对应的规则。步骤102,确定规则对应的因子函数,因子函数用于表示规则是否正确的概率,因子函数是根据初始因子函数和EM算法获得的。对于每个规则,可以理解地,可以是由至少两个原子规则组成,我们称组成一个规则的原子规则的个数为该规则的长度,用因子函数表示一个规则是否正确的概率。而一个规则对应的因子函数是基于该规则的实例及实例中涉及到的三元组(可以包括原三元组和扩展三元组)根据初始因子函数采用EM算法获得。需要说明的是,为了便于说明,在实际操作中,我们将规则的每个实例都用一个因子函数表示,即每个实例有一个因子函数,一个规则可能对应多个实例,则在计算过程中一个规则可能对应多个因子函数,我们称一个规则对应的多个因子函数为属于同一族的因子函数,而同一族的因子函数在同一计算步骤中的结果是相同的,均可以表示该规则是否正确的概率。因此,此处我们可称为确定规则对应的因子函数,也即确定规则对应的实例的因子函数。EM算法是最大期望算法(ExpectationMaximizationAlgorithm),是一种迭代算法,用于含有隐变量(latentvariable)的概率参数模型的最大似然估计或极大后验概率估计,经过两个步骤交替进行计算,本实施例中是经过多次迭代来确定规则对应的因子函数。可以理解地,在计算规则对应的因子函数的过程中,由于规则的实例中不仅有扩展三元组,也有原三元组,而原三元组也可能对应其他规则,因此,计算一个规则对应的因子函数的过程中也可能涉及其他规则的信息。初始因子函数是随机初始化的值,具体可以根据实际需要选定。步骤103,根据因子函数确定扩展三元组是否可信。在确定了扩展三元组对应的实例的因子函数后,根据因子函数计算扩展三元组可信或不可信的概率,来确定扩展三元组是否可信。可选地,根据因子函数计算扩展三元组的可信或不可信的概率也可以采用EM算法,步骤102和步骤103是相互依赖的过程,实际操作过程中,首先根据初始化的所有实例的因子函数求得所有三元组(包括知识库原三元组和扩展三元组)的可信或不可信的概率,再用该概率经过一系列计算更新实例的因子函数,而该因子函数还要再用于更新所有三元组的可信或不可信的概率,如此不断迭代,直至所有三元组的可信或不可信的概率和所有实例的因子函数均不再变化,则用最后一轮更新的因子函数求出最后的所有三元组的可信或不可信的概率。然后可以从所有三元组的可信或不可信的概率中获取扩展三元组的可信或不可信的概率,以确定该扩展三元组是否可信。本实施例提供的知识库三元组检验的方法,通过获取扩展三元组对应的规则,根据初始因子函数和EM算法确定该规则对应的因子函数,并根据该因子函数确定扩展三元组是否可信,进而可以确定是否将该扩展三元组放入知识库中,对知识库进行扩充,提高了知识库扩充的准确性。实施例二本实施例对实施例一提供的知识库三元组检验的方法做进一步补充说明。如图2所示,为本实施例提供的知识库三元组检验的方法的流程示意图。该方法包括:步骤201,获取扩展三元组对应的规则,扩展三元组是基于现有知识库中的原三元组和规则进行扩展操作得到的三元组,扩展三元组包括至少由第一语句、关系语句、第二语句组成的有序集合,关系语句用于表示第一语句和第二语句之间的关系。该步骤的具体操作与步骤101一致,此处不再赘述。步骤202,根据如下公式确定通过所述EM算法进行迭代操作之后的所述因子函数f(t+1):f(t+1)=f(t)*(f’(t)/p(t))其中,f(t)表示所述因子函数在第t轮的取值,t为大于或等于0的正整数且t的初始值为0,f(0)为初始化的因子函数的值,f’(t)表示所述因子函数在t轮的经验分布,p(t)表示所述因子函数在第t轮的采样分布,所述经验分布和所述采样分布是在EM算法进行迭代操作过程中计算得到的。因子函数用于表示规则是否正确的概率,因子函数是根据初始因子函数和EM算法获得的。步骤203,根据置信传播和因子函数确定扩展三元组对应的第一概率分布和第二概率分布,第一概率分布用于表示扩展三元组应该可信的概率,第二概率分布用于表示扩展三元组不可信的概率,且第二概率分布=1-第一概率分布。EM算法包括两个步骤,第一步是计算期望(E),称为E-step,本实施例中是在本步骤中根据置信传播和因子函数确定扩展三元组对应的第一概率分布和第二概率分布。第二步是最大化(M),称为M-step,本实施例中是在本步骤中,根据上步中求得的第一概率分布和第二概率分布来更新因子函数。得到的因子函数再用于根据置信传播得到新的第一概率分布和第二概率分布。两步交替迭代,迭代停止后最终确定扩展三元组对应的第一概率分布和第二概率分布。可以理解地,步骤202和步骤203是相互依赖的过程,实际操作过程中,首先根据初始化的所有实例的因子函数通过EM算法的E-step的置信传播求得所有三元组(包括知识库原三元组和扩展三元组)的概率分布(包括第一概率分布和第二概率分布),该概率分布用于EM算法的M-step中,经过一定过程的计算,来更新因子函数,而该因子函数还要再用于E-step更新所有三元组的概率分布,然后再到M-step,如此不断迭代,直至所有三元组的概率分布和所有实例的因子函数均不再变化则用最后一轮更新的因子函数到E-step求出最后的所有三元组的概率分布,EM算法的迭代过程即结束。然后可以获取扩展三元组的概率分布。步骤204,根据目标概率分布和预设阈值确定所述扩展三元组是否可信,所述目标概率分布为所述第一概率分布或所述第二概率分布。在确定了扩展三元组对应的第一概率分布和第二概率分布之后,根据该第一概率分布或者第二概率分布与预设阈值进行比较,来确定该扩展三元组是否可信。可选地,预设阈值可以设为可信的阈值,则目标概率应为第一概率分布,当目标概率分布大于预设阈值,则该扩展三元组可信,当目标概率小于预设阈值,则该扩展三元组不可信。可选地,预设阈值可以设为不可信的阈值,则目标概率应为第二概率分布,当目标概率小于预设阈值,则该扩展三元组可信,当目标概率大于所述阈值,则该扩展三元组不可信。本实施例提供的知识库三元组检验的方法,通过在EM算法中不断更新扩展三元组的目标概率分布以及该扩展三元组对应的规则对应的因子函数,使得规则的正确的概率即规则的可信度在扩展后的知识库的基础上进一步学习,并且扩展三元组的可信度的计算是基于其对应的规则对应的因子函数计算得到的,而其对应的规则对应的因子函数的计算又涉及到了知识库中原三元组的可信度,因此扩展三元组的可信度的计算也考虑到了知识之间全局的关联性,从而能够高效高质量高准确性地扩充知识库。实施例三本实施例对上述实施例提供的知识库三元组检验的方法做具体举例说明。举例来说,选取5个知识库中的原三元组,依次编号为e1~e5,根据知识库已发现的规则的个数为4个,依次编号为r1~r4,根据规则进行扩展操作得到的扩展三元组的个数为3个,依次编号为e6、e7、e8。对于每个三元组,每个原三元组应该可信的概率用第三概率分布表示,每个原三元组不可信的概率用第四概率分布表示,每个扩展三元组可信的概率用第一概率分布表示,每个扩展三元组不可信的概率用第二概率分布表示。其中,第四概率分布=1-第三概率分布,第二概率分布=1-第一概率分布。例如,5个原三元组可信的概率依次可表示为b1~b5,则其第四概率分布依次表示为(1-b1)~(1-b5),3个扩展三元组的第一概率分布依次表示为a1~a3,则其不可信的概率依次表示为(1-a1)~(1-a3)。5个原三元组和3个扩展三元组可信或者不可信依次用x1~x8表示,x=[x1,x2,x3,x4,x5,x6,x7,x8]表示所有三元组可信或不可信的集合,其中,x1~x8均为取0或者1的二值函数,我们分别称为三元组e1~e8的变量,取0表示该三元组不可信,取1表示该三元组可信。举例来说,从知识库中选取的5个三元组,和已经发现的4个规则,如表1和表2所示。表1原三元组表2规则编号规则r1(H,居住地,Y)+(Y,国家,Z)=>(H,国籍,Z)r2(H,区,Y)+(Y,市,Z)=>(H,市下区,Z)r3(H,国籍,Y)+(H,出生地,Z)=>(Z,国家,Y)r4(H,市下区,Y)=>(H,国家,Y)其中,在同一规则中,H表示同一个未知的语句,各规则之间的H不一定表示相同的语句,明显地,Y和Z也是如此,可以把已有三元组中满足相应规则中相应关系语句的第一语句和第二语句代入,得到规则的实例或者扩展三元组。根据原三元组和规则进行扩展操作,得到扩展三元组,如表3所示。表3扩展三元组根据原三元组和扩展三元组及规则继续进行扩展操作,得到新的扩展三元组,如表4所示。表4新的扩展三元组最终得到包括原三元组和所有扩展三元组的数据。表5所有三元组与变量x对照表三元组编号x(B,R1,A)e1x1(A,R2,C)e2x2(B,R3,D)e3x3(E,R4,C)e4x4(D,R5,E)e5x5(B,R6,C)e6x6(D,R7,C)e7x7(D,R2,C)e8x8由原三元组和扩展三元组得到所有规则的实例包括:实例1:(B,R1,A)+(A,R2,C)=>(B,R6,C)实例2:(B,R3,D)+(B,R6,C)=>(D,R2,C)实例3:(D,R5,E)+(E,R4,C)=>(D,R7,C)实例4:(D,R7,C)=>(D,R2,C)可知,实例1是规则r1的实例,实例2是规则r3的实例,实例3是规则r2的实例,实例4是规则r4的实例。可以理解地,若从知识库中选取的三元组多的情况下,会有多个实例对应一个规则的情况,此处只是举例说明,并不作为限制。根据所有三元组与实例构建因子图,如图5所示,其中,q=[q1,q2,q3,q4,q5,q6,q7,q8]表示三元组可信或不可信的概率分布,即,若该三元组为原三元组,比如e1,则当x1=1时,q1=b1,当x1=0时,q1=1-b1,若该三元组为扩展三元组,比如e7,则当x7=1时,q7=a2,当x7=0时,q7=1-a2。f1-f4分别表示每个实例的因子函数,具体如表6所示。表6三元组与变量x即因子函数q的对照表例如一个规则的原子规则的个数为3个(如(H,女儿,Y)+(Z,丈夫,Y)=>(H,女儿,Z)),则规则的实例相应的都由三个三元组构成,如上述实例1,由三元组e1、e2和e6组成,其变量分别x1、x2、x6,则该实例的因子函数表示为f1=[f11,f12,f13,f14,f15,f16,f17,f18],其中,f11~f18分别表示三个三元组的变量分别取1或0两种情况的8种组合时的该实例对应的规则正确的概率,如表7所示。可以理解地,若规则的原子规则的个数为2个,如实例4,则该实例的因子函数f4=[f41,f42,f43,f44]。为了后续便于描述,我们将因子图中圆圈的节点称为变量节点,将方形节点称为因子节点,则因子节点包括q节点和f节点。表7x1x2X6f1000f11001f12010f13011f14100f15101f16110f17111f18本实施例有4个实例,相应的有4个因子函数,即f=[f1,f2,f3,f4],f表示所有因子函数的集合。4个实例对应的因子函数如表8所示:表8则,f2=[f21,f22,f23,f24,f25,f26,f27,f28]f3=[f31,f32,f33,f34,f35,f36,f37,f38]f4=[f41,f42,f43,f44]构建了因子图之后,采用EM算法,迭代求得因子函数及所有三元组对应的变量的概率分布q。EM算法是最大期望算法(ExpectationMaximizationAlgorithm),是一种迭代算法,用于含有隐变量(latentvariable)的概率参数模型的最大似然估计或极大后验概率估计,经过两个步骤交替进行计算:第一步是计算期望(E),称为E-step,利用对隐藏变量的现有估计值,计算其最大似然估计值,本实施例中是在本步骤中计算变量x的概率分布(包括第一概率分布和第二概率分布)q;第二步是最大化(M),称为M-step,最大化在E步上求得的最大似然值来计算参数的值,本实施例中是在本步骤中,根据上步中求得的变量的概率分布来更新因子函数。M-step中得到的因子函数被用于下一个E-step计算中,这个过程不断交替进行,直至变量x的分布q即因子函数不再变化为止,相应地,第一概率分布和第二概率分布也不会再变化,此时的第一概率分布和第二概率分布可以用于确定扩展三元组是否可信。具体过程如下:(1)初始化在因子图构建完毕后,需要对所有的q和f进行初始化。1)q的初始化由上述内容可知,每个三元组如e1,其q1为二值函数,分别表示变量x1取0或1时该三元组的概率,我们可以用{1-b1,b1}表示,前面表示变量取0时的概率,后面表示变量取1的概率。对于原三元组,其已经存在于知识库中,则可以初始化为{0.01,0.99}。对于扩展三元组,其q的取值与其对应的规则的正确性一致。本实施例中所有q的初始化如下:q1,q2,q3,q4,q5的初始化值均为{0.01,0.99};q6初始化值为{0.2,0.8};q7初始化值为{0.3,0.7};q8初始化值为{0.1,0.9}。2)因子函数f的初始化,为随机初始化,如表9所示。表9(x1,x2,x6)f1(x3,x6,x8)f2(x4,x5,x8)f3(x7,x8)f4(0,0,0)0.125(0,0,0)0.125(0,0,0)0.125(0,0)0.25(0,0,1)0.125(0,0,1)0.125(0,0,1)0.125(0,1)0.25(0,1,0)0.125(0,1,0)0.125(0,1,0)0.125(1,0)0.25(0,1,1)0.125(0,1,1)0.125(0,1,1)0.125(1,1)0.25(1,0,0)0.125(1,0,0)0.125(1,0,0)0.125--(1,0,1)0.125(1,0,1)0.125(1,0,1)0.125--(1,1,0)0.125(1,1,0)0.125(1,1,0)0.125--(1,1,1)0.125(1,1,1)0.125(1,1,1)0.125--(2)E-step置信传播是因子图中求解变量节点的边缘分布的一种算法。我们以变量x8以及与之相连的因子为例,解释置信传播的过程。因子节点向变量节点传递信息(第一轮):我们用s(f->x)和s(q->x)分别表示因子节点f和因子节点q向变量节点x传递的信息,该信息初始化为根据f和q得到的x的边缘分布,则有:s1(q8->x8)={0.1,0.9};s1(f2->x8)={0.5,0.5};s1(f3->x8)={0.5,0.5};s1(f4->x8)={0.5,0.5};其中,s1表示第一轮因子节点向变量节点传递信息,s1(q8->x8)则表示第一轮q8因子节点向与其连接的x8变量节点传递的信息,即将q8初始化的值{0.1,0.9}传递到变量节点x8;s1(f2->x8)={0.5,0.5}表示将f2初始化值中x8=0的概率相加,x8=1的概率相加得到{0.5,0.5},传递给与其相连的变量节点x8;f3和f4的传递过程与f2相似,不再赘述。可以理解地,因子节点向其他变量节点x1~x7节点传递的过程与因子节点向x8节点传递的过程相似,此处不再赘述。变量节点向因子节点传递信息(第一轮):我们用h(x->f)表示变量节点x向因子节点f传递的信息,有:h1(x8->f2)=s1(q8->x8)*s1(f3->x8)*s1(f4->x8)={0.1*0.5*0.5,0.9*0.5*0.5};h1(x8->f3)=s1(q8->x8)*s1(f2->x8)*s1(f4->x8)={0.1*0.5*0.5,0.9*0.5*0.5};h1(x8->f4)=s1(q8->x8)*s1(f2->x8)*s1(f3->x8)={0.1*0.5*0.5,0.9*0.5*0.5};其中,h1表示第一轮变量节点向因子节点传递的信息,h1(x8->f2)则表示第一轮x8变量节点向与其连接的f2因子节点传递的信息,即将上一步q8因子节点和除f2本身外的f3及f4节点传递给x8的信息相乘然后传递给因子节点f2,x8向f3和f4传递的过程与x8向f2传递的过程相似,此处不再赘述,式中的*表示各{c1,d1}形式的二值函数的各c1相乘,及各d1相乘,得到一个新的二值函数{各c1相乘的结果,各d1相乘的结果}。可以理解的,其他的变量节点向与其相连的因子节点传递的过程与变量x8向与其相连的因子节点传递的过程相似,此处不再赘述。需要说明的是,本实施例中,所说的因子节点向变量节点传递和变量节点向因子节点传递,都是相连的两节点间进行传递。将相乘得到的结果归一化:h1(x8->f2)={0.1*0.5*0.5,0.9*0.5*0.5}={0.025,0.225}={0.1,0.9};h1(x8->f3)={0.1*0.5*0.5,0.9*0.5*0.5}={0.025,0.225}={0.1,0.9};h1(x8->f4)={0.1*0.5*0.5,0.9*0.5*0.5}={0.025,0.225}={0.1,0.9};。因子节点向变量节点传递信息(第二轮):还以变量节点x8为例,与其相连的因子节点有q8节点、f2节点、f3节点和f4节点,则s2(q8->x8)=s1(q8->x8);s2(f2->x8)=s1(f2->x8)&h1(x3->f2)&h1(x6->f2);s2(f3->x8)=s1(f3->x8)&h1(x4->f3)&h1(x5->f3);s2(f4->x8)=s1(f4->x8)&h1(x7->f4);其中,s2表示第二轮因子节点向变量节点传递信息,s2(q8->x8)表示q8节点向x8节点传递信息,在一个E-step的循环过程中,q8节点向x8节点传递的信息不变,直到本次E-step结束,会求得新的q8的概率分布,经M-step后再到E-step时,q8向x8传递的信息会是新的q8的概率分布,s2(f2->x8)表示第二轮中因子节点f2向变量节点x8传递的信息,即将第一轮中f2向x8传递的信息s1(f2->x8)、第一轮中x3向f2传递的信息h1(x3->f2)、以及第一轮中x6向f2传递的信息h1(x6->f2)组合相乘后传递给x8,式中&表示各{c2,d2}形式的二值函数组合相乘,得到8值函数,如表10所示,然后将x8=0的加起来,x8=1的加起来,得到的新的二值函数。举例来说,由上可知,s1(f2->x8)={0.5,0.5},由于上述内容中没有具体给出h1(x3->f2)和h1(x6->f2)归一化后的值(实际运算过程中都会得到并保存),为了更清楚地说明传递过程,我们假设h1(x3->f2)={0.2,0.8},h1(x6->f2)={0.3,0.7},则:s2(f2->x8)={0.5,0.5}&h1{0.2,0.8}&{0.3,0.7}={0.5,0.5}{0.03,0.07,0.12,0.28,0.03,0.07,0.12,0.28}表示对应变量x8,x3,x6取0或1时的8中组合情况对应的f2传递的信息:表10x8x3x6s2(f2->x8)0000.5*0.2*0.3=0.030010.5*0.2*0.7=0.070100.5*0.8*0.3=0.120110.5*0.8*0.7=0.281000.5*0.2*0.3=0.031010.5*0.2*0.7=0.071100.5*0.8*0.3=0.121110.5*0.8*0.7=0.28同样,可以得到f3和f4向x8传递的信息:s2(f3->x8)和s2(f4->x8)变量节点向因子节点传递信息(第二轮):计算方法与第一轮一致,此处不再赘述。因子节点向变量节点传递信息(第三轮):计算方法与第二轮一致,此处不再赘述。不断迭代上述过程,直到传递的信息变化很小(即收敛)。上述迭代完成(算法收敛)之后,我们根据因子向变量节点传递的信息计算变量的概率分布。同样以变量x8为例,假设迭代了15轮后收敛:q8=s15(q8->x8)*s15(f2->x8)*s15(f3->x8)*s15(f4->x8)其中,s15(q8->x8)=s1(q8->x8)。为了方便说明,假设:q8={0.5*0.5*0.4*0.35,0.5*0.5*0.6*0.65}={0.035,0.0975}归一化后,q8={0.264,0.736},即为E-step第一波循环后得到的变量x8的概率分布q8为{0.264,0.736},则对应的三元组e8的第一概率分布为0.264,第二概率分布为0.736。同样地,可以求出其他变量的概率分布,此处不再赘述。可以理解的,这个结果只是E-step第一波循环后得到的,要用于M-step中,更新因子函数f,然后根据更新后的因子函数还要再进行E-step的第二波循环,再得出变量的一组新的概率分布,用于M-step,如此迭代多次,直至最终的变量的概率分布与更新的因子函数均不再变化为止。此时得到的变量的概率分布即为目标概率分布,用于判断相应的三元组是否可信的标准。(3)M-step因子函数的更新:为了便于说明,此步骤中,我们设因子函数的经验分布为f’(0),即f’(0)=[f1’(0),f2’(0),f3’(0),f4’(0)],f’根据如下公式求得:f1’(0)=q1^q2^q6;f2’(0)=q3^q6^q8;f3’(0)=q4^q5^q8;f4’(0)=q7^q8;其中,q1~q8是在E-step中求得的变量x1~x8的概率分布,f1’(0)~f4’(0)表示t=0轮循环中得到的因子函数的经验分布,其为如上所述的f1形的8值函数或4值函数,^表示组合相乘。可以理解地,在一个完整的M-step的循环过程中,用到的因子函数的经验分布不变,即都是根据之前E-step得到的变量的概率分布求得的,也即f1’(t)=f1’(3)=f1’(2)=f1’(1)=f1’(0);直到本次M-step结束,再经E-step求得新的变量的概率分布,根据新的变量的概率分布求得新的因子函数的经验分布。以f1’(0)举例来说,若在E-step中求得的q1、q2、q3分别为{0.01,0.99}、{0.01,0.99}、{0.1,0.9},则f1’(0)的经验分布的计算如表11所示。表11(x1,x2,x6)f1’(0)(0,0,0)0.01*0.01*0.1=0.00001(0,0,1)0.01*0.01*0.9=0.00009(0,1,0)0.01*0.99*0.1=0.00099(0,1,1)0.01*0.99*0.9=0.00891(1,0,0)0.99*0.01*0.1=0.00099(1,0,1)0.99*0.01*0.9=0.00891(1,1,0)0.99*0.99*0.1=0.09801(1,1,1)0.99*0.99*0.9=0.88209然后通过采样得到因子函数的采样分布,具体过程如下:首先,初始化:t=0,t表示M-step外层循环的次数;其次,对于每个变量x1~x8,随机初始化其值(0或者1),比如m=[x1,x2,x3,x4,x5,x6,x7,x8]=[0,1,0,0,1,1,0,1],m为数组,我们称为采样数据,用于保存变量的采样值;再次,对因子函数f,随机初始化,同E-step,此处不再赘述。最后,循环过程如下:当t<T时(T=50,T表示M-step外层循环最大循环次数,可以理解地,也可以是其他数值,此处不做限制):1)若t=0,则L取一个较大的值(如L=100,L表示M-step内层循环的最大循环次数),若t>0,则L取一个较大的值(如L=30);初始化l=0,l表示M-step内层循环的次数;当l<L时:1、对每个变量x1~x8,在假设其他几个变量取值确定的情况下,得到该变量的概率分布,并根据其概率分布确定该变量的取值。举例来说,以变量x8为例,假设,x1~x7的取值分别为[0,1,0,0,1,1,0],当前因子函数已经初始化,可认为是已知的,由于f2、f3、f4的概率分布与x8相关,则可以得到x8关于f2、f3、f4的概率分布,以f3为例,假设当前f3取值情况如下表所示,为了便于说明,我们可以用f3(0)表示初始化的f3,如表12所示,因为x4和x5的取值为[0,1],于是可以得到x8关于f3的概率分布为{0.12,0.18}(需要将这两个值归一化,使它们之和等于1),归一化后为(0.4,0.6)。同理,可以得到x8关于f2和f4的概率分布,假设分别为{0.3,0.7}和{0.2,0.8}。则x8的概率分布等于这3个概率分布相乘(并归一化),即x8的概率分布为{0.4*0.3*0.2,0.6*0.7*0.8},归一化后为{0.067,0.933}。得到这个分布之后,我们根据这个分布对x8进行采样,并更新采样数组m。表12(x4,x5,x8)f3(0)(0,0,0)0.025(0,0,1)0.025(0,1,0)0.12(0,1,1)0.18(1,0,0)0.05(1,0,1)0.05(1,1,0)0.10(1,1,1)0.45同样地,可以得到其他几个变量x1~x7的采样值,最终,m中的所有变量的采样值都进行了更新,得到一组变量的采样值,并另外保存。2、更新l=l+1,进入下次内层循环。此次循环变量初始化为上次循环得到的那组采样值,经过L次循环,内层循环结束,会得到L组变量的采样值,根据最后M轮(如M=15)循环得到的M组采样值计算每个因子函数的采样分布,具体过程如下:举例来说,以f3为例,假设(x4,x5,x8)最后15轮的采样结果如表13所示,为了便于说明,我们可以用p3(0)表示f3在t=0轮循环的采样分布。表13(x4,x5,x8)15组采样值中中出现的次数p3(0)(0,0,0)11/15(0,0,1)22/15(0,1,0)11/15(0,1,1)11/15(1,0,0)00/15(1,0,1)11/15(1,1,0)33/15(1,1,1)66/15同样可以得到其他几个因子函数的采样分布,此处不再赘述。则更新因子函数如下:举例来说,以f3为例:f3(1)=f3(0)*(f3’(0)/p3(0))其中,f3(1)表示外层循环t=0循环更新后的因子函数f3的值,f3(0)表示初始化的因子函数f3的值,f3’(0)是根据E-step的变量的概率分布求得的因子函数f3的经验分布,p3(0)表示t=0时的因子函数f3的采样分布。可以理解地,若当t=2,则,f3(2)=f3(1)*(f3’(1)/p3(1));其中,f3(2)为t=1循环更新的因子函数f3的值,f3’(1)为t=1时的因子函数f3的经验分布,p3(1)为t=1时的因子函数f3的采样分布,依次类推,此处不再赘述。同样的可以得到其他因子函数的更新后的值,此处不再赘述。可以理解地,若同一规则r3的实例有多个,则f3’(0)为由多个实例求得的多个经验分布相加的结果,同样地,p3(0)为由多个实例求得的采样分布相加的结果。举例来说,若还有三个三元组x9、x10、x11也是规则r3的实例,则根据上述过程,会同x4、x5、x8一样,再求出一个经验分布和一个采样分布,则,公式中f3’(0)为这两个经验分布相加,p3(0)为这个两个采样分布相加。更新t=t+1,进入下一外层循环。当外层循环T次结束后,得到一组更新后的因子函数f1(T)、f2(T)、f3(T)、f4(T)。可以理解地,M-step循环得到的因子函数为本轮循环的结果,该结果因子函数要再用于初始化E-step的因子函数,继续循环,直到得到的因子函数和变量的概率分布不再变化(即收敛)时,得到的因子函数即为最终的因子函数,可以用于判断规则的正确性。EM算法结束后,得到了所有变量的概率分布,其中,扩展三元组的概率分布即为目标概率分布,我们设一个预设阈值,根据目标概率分布和预设阈值确定所述扩展三元组是否可信,目标概率分布为第一概率分布或第二概率分布。举例来说,假设扩展三元组e8的概率分布为{0.1,0.9},即其第一概率分布为0.9,其第二概率分布为0.1,若设定预设阈值为可信的阈值i(比如i=0.98),则取目标概率分布为第一概率分布即0.9,则当0.9>j时,我们认为该扩展三元组为可信的,可以将其放入知识库,以对知识库进行扩充,若0.9<j,则认为该扩展三元组不可信,便不将其放入知识库。若设定阈值为不可信的阈值j(比如j=0.2),则取目标概率分布为第二概率分布即0.1,则当第二概率分布<0.2时,该扩展三元组可信,当第二概率分布>0.2时,该扩展三元组不可信。需要说明的是,对于因子函数的确定公式f(t+1)=f(t)*(f’(t)/p(t)),可以通过以下过程推导而得的:构建因子图后,将规则的可信度的学习问题转化成了因子的学习:假设表示一个因子图,其中变量节点和因子节点的集合分别是和对于任意一个中的节点,我们用N(u)表示与节点u相连的节点集合,其中,u表示集合中的一个节点,例如本发明实施例中与因子节点f2相连的节点有变量节点x3、x6和x8。用表示任意一个集合,对于任意一个集合我们用表示从到的映射函数集合,其中表示是的子集,包含中的一部分或者全部变量节点。用表示中属于同一族的未知函数的集合,即表示多个函数的集合,即表示属于同一族的因子函数的集合,集合里的每个函数都对应同一个规则,它们的取值情况一致,例如本发明实施例中的每条规则为从属于同一族的多个实例归结出的一个未知函数。对于中的一个函数f:有m(f)个变量,并且每个变量都从中取值。让因子图中每个节点与一个函数相关,表示gu是中的一个函数,其中,m(gu)=|N(u)|。其中u表示因子图中的因子节点,gu表示与该因子节点u对应的因子函数;N(u)表示与因子节点u直接相连的变量节点的集合;m(gu)=|N(u)|表示与因子节点u直接相连的变量节点的集合的大小,即变量节点的数量,需要说明的是,对于不同的节点u,gu和gu′可能相同,即若gu和gu′对应于同一个规则,则gu和gu′相同。对每个函数我们用∧(f)表示集合即,∧(f)表示中与函数f相关的所有节点集合,也即∧(f)表示中与函数f属于同一族的所有函数的集合,即该集合中所有因子函数对应于同一个规则。则代表函数的乘积形式假设该乘积代表一组随机变量的联合分布其中,表示因子图中变量节点的集合;表示与变量节点相关的变量,这里的每个变量与本发明实施例中的每个变量是一致的;表示一组这样的变量,例如实施例中一个因子函数所对应的三个变量的集合,也即这里的即为本发明实施例中的变量x,由于是未知的,意味着这个联合分布也是未知的。假设观测到一个经验分布表示联合分布的经验分布,即为本发明实施例中根据EM算法的E-step所得到的变量的经验分布计算得到的因子函数的经验分布。目的是根据这个经验分布去估计每个因子函数具体来说,通过对采样M次,每个值观测到了次,观测到的集合{a(i):i=1,2,…,}表示为D。用表示logp(D|F),其中,logp(D|F)表示在给定观测集合D的情况下的似然函数,p(D|F)表示F的后验分布,则我们需要最大化对每一个用D:S表示D中观测到的组合在S上的映射,例如一组变量S=[x3,x6,x8]的观测值可能为[0,0,0],[0,0,1],…,[1,1,1]。对每一个和任意一个向量用mS(a)表示观测到的组合是a的次数。对任意用a:S表示映射在S上的子向量,即表示对于变量组合S的具体取值情况为a。我们定义:其中,表示一组变量,例如(x3,x6,x8),a表示这组变量的具体取值,例如[0,0,0],…,[1,1,1],则有,用A表示可得::=A-Mlogz(10)现在对于每个我们推导得到,和是上的函数:其中,∧*(f)表示对应于函数集合∧(f)的所有变量的组合。对于每个a∈∧*(f),有:引理1:对每个将上述偏导式设为0,对每个可得:将f(b)移到等式的一边作为ft+1(b),可得到算法的迭代公式:其中,表示第t轮经过采样得到的采用分布,例如本发明实施例中的由一个实例计算得到的因子函数的采样分布p3(0)。需要说明的是,为了便于描述,本发明实施例中将迭代公式(16)表示为:f(t+1)=f(t)*[f’(t)/p(t)],其中,f(t)表示所述因子函数在第t轮的取值,即公式(16)中的ft(b),t为大于或等于0的正整数且t的初始值为0,f(0)为初始化的因子函数的值,f’(t)表示所述因子函数在t轮的经验分布,即公式(16)中的p(t)表示所述因子函数在第t轮的采样分布,即公式(16)中的本实施例提供的知识库三元组检验的方法,通过在EM算法中不断更新扩展三元组的目标概率分布以及该扩展三元组对应的规则的因子函数,使得规则的正确的概率即规则的可信度在扩展后的知识库的基础上进一步学习,并且扩展三元组的可信度的计算是基于其对应的规则的因子函数计算得到的,而其对应的规则的因子函数的计算又涉及到了知识库中原三元组的可信度,因此扩展三元组的可信度的计算也考虑到了知识之间全局的关联性,从而能够高效高质量高准确性地扩充知识库。实施例四本实施例提供一种知识库三元组检验的装置,用于执行实施例一的知识库三元组检验的方法。如图3所示,为本实施例提供的知识库三元组检验的装置的结构示意图。本实施例的知识库三元组检验的装置40包括获取模块41、确定模块42和处理模块43。其中,获取模块41用于获取扩展三元组对应的规则,扩展三元组是基于现有知识库中的原三元组和规则进行扩展操作得到的三元组,扩展三元组包括至少由第一语句、关系语句、第二语句组成的有序集合,关系语句用于表示第一语句和第二语句之间的关系;确定模块42用于确定获取模块41获取的规则对应的因子函数,因子函数用于表示规则是否正确的概率,因子函数是根据初始因子函数和EM算法获得的;处理模块43用于根据确定模块42所确定的因子函数确定扩展三元组是否可信。关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。根据本实施例的知识库三元组检验的装置,通过获取扩展三元组对应的规则,根据初始因子函数和EM算法确定该规则对应的因子函数,并根据该因子函数确定扩展三元组是否可信,进而可以确定是否将该扩展三元组放入知识库中,对知识库进行扩充,提高了知识库扩充的准确性。实施例五本实施例对实施例四的知识库三元组检验的装置做进一步补充说明,以执行实施例二的花样编辑的方法。如图4所示,本实施例的知识库三元组检验的装置40中的处理模块43包括第一子模块51和第二子模块52。其中,第一子模块51用于根据置信传播和因子函数确定扩展三元组对应的第一概率分布和第二概率分布,第一概率分布用于表示扩展三元组应该可信的概率,第二概率分布用于表示扩展三元组不可信的概率,且第二概率分布=1-第一概率分布;第二子模块52用于根据目标概率分布和预设阈值确定扩展三元组是否可信,目标概率分布为第一概率分布或第二概率分布。可选地,确定模块42具体用于根据如下公式确定通过EM算法进行迭代操作之后的因子函数f(t+1):f(t+1)=f(t)*[f’(t)/p(t)];其中,f(t)表示因子函数在第t轮的取值,t为大于或等于0的正整数且t的初始值为0,f(0)为初始化的因子函数的值,f’(t)表示因子函数在t轮的经验分布,p(t)表示因子函数在第t轮的采样分布,经验分布和采样分布是在EM算法进行迭代操作过程中得到的。可选地,确定模块42还用于迭代操作在f(t)的值不再发生变化时停止。关于本实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。根据本实施例的知识库三元组检验的装置,通过在EM算法中不断更新扩展三元组的目标概率分布以及该扩展三元组对应的规则对应的因子函数,使得规则的正确的概率即规则的可信度在扩展后的知识库的基础上进一步学习,并且扩展三元组的可信度的计算是基于其对应的规则对应的因子函数计算得到的,而其对应的规则对应的因子函数的计算又涉及到了知识库中原三元组的可信度,因此扩展三元组的可信度的计算也考虑到了知识之间全局的关联性,从而能够高效高质量高准确性地扩充知识库。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1