本申请涉及互联网领域,特别涉及一种信息检索方法和装置。
背景技术:
随着互联网的高速发展,用户当前越来越多的倾向于通过在互联网上提问来获取问题的答案。搜索引擎在获取到用户的提问后,会基于提问中出现的一或多个关键词进行检索,并返回与所述一或多个关键词匹配的结果。
然而,对于机器来说,理解人类的一个问题是一件很困难的事情,通过上述这种方式获取到的结果很可能并不是用户提问想要获取的结果,从而造成检索准确率偏低。
技术实现要素:
本申请实施例提供了一种信息检索方法和装置,以提高检索出的用户待解决问题的结果的准确性。所述技术方案如下:
一方面,提供了一种信息检索方法,所述方法包括:
接收输入的待解决问题;
确定所述待解决问题所属的技术领域;
根据预先建立的在所述技术领域的知识库,确定所述技术领域中与所述待解决问题相匹配的目标文档,其中,所述知识库中包括问题对象、知识对象、文档对象、所述问题对象和所述知识对象之间的对应关系以及所述知识对象和所述文档对象之间的对应关系,所述知识对象选自所述问题对象的一部分;
返回所述目标文档。
另一方面,提供了一种信息检索装置,所述信息检索装置包括:
界面模块,用于接收输入的待解决问题;
处理模块,用于确定所述待解决问题所属的技术领域;
所述处理模块,还用于根据预先建立的在所述技术领域的知识库,确定所述技术领域中与所述待解决问题相匹配的目标文档,其中,所述知识库中包括问题对象、知识对象、文档对象、所述问题对象和所述知识对象之间的对应关系以及所述知识对象和所述文档对象之间的对应关系,所述知识对象选自所述问题对象的一部分;
所述界面模块,还用于返回所述目标文档。
本申请实施例提供的技术方案带来的有益效果包括:
在基于用户的待解决问题(即用户提问)进行检索时,不仅考虑到问题中的一或多个关键词,同时考虑到问题的技术领域,通过考虑待解决问题的技术领域以及利用预先构建的特定知识库,可以大幅提高检索出的用户待解决问题的结果的准确性。
附图说明
图1是本申请实施例提供的特定技术领域中的四层知识图的示意图;
图2是本申请实施例提供的一种示例性的问题节点、知识节点和文件节点的关系图;
图3是本申请实施例提供的示例信息检索方法的流程图;
图4是本申请实施例提供的一种示例信息检索方法的示意图;
图5是本申请实施例提供的示出节点间随机游走概率的节点之间的关系图;
图6是本申请实施例提供的一种示例信息检索装置的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。文中所讲的“电子设备”可以包括智能手机、平板电脑、智能电视、电子书阅读器、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。文中所讲的“信息检索装置”可以是一或多个服务器等。
相关的信息检索方法仅仅考虑到在一个问题当中出现的关键词,往往很难理解用户的意图。为了理解一个问题,人类通常使用他们在技术领域的基本知识。比如对于问题“当用户尝试在发件箱中发送一些特殊表格时,程序就停滞在等待状态”。首先,我们会关注到“特殊表格”和“发件箱”,这些都是产品outlook的一些部件,我们就能推断出这是outlook产生的一些问题。
从以上分析可以得出,技术领域的背景知识在问题理解当中发挥着重要作用。本申请中通过构建特定技术领域的知识库来方便机器理解用户问题。
本申请中的信息检索方法是基于预先构建的知识库。所述知识库中包括问题对象、知识对象、文档对象、所述问题对象和所述知识对象之间的对应关系以及所述知识对象和所述文档对象之间的对应关系。其中,问题对象可以是用户输入的一个个待解决问题,知识对象可选自所述待解决问题的一部分,文档对象可以是一个个解决待解决问题的文档。
为便于理解本申请中提到的知识库,下面的描述中是以知识图的形式展现知识库中的各个部分及其关系。
一个技术问题通常由三部分组成:产品,组件和事件词。通常来说,本申请中的知识图可包含四部分:概念层、产品层、组件层和事件层。其中:
概念层:在概念层中,一个节点表示一个概念,一个概念表示一组具有相似功能的产品,一个概念通常也是另一个概念的子概念。
产品层:产品层中包含了所有的产品以及产品的属性。产品层是整个知识图的核心,产品层的节点表示了一个特定的产品或者产品的属性。可预先定义产品的几种属性,例如版本、语言和运行环境。
组件层:通常来讲,一个技术问题都是关于产品的某个组件,组件层包含了所有产品的组件。
事件层:当产品或者组件已经定义之后,需要理解一个问题的具体现象,组件层包含描述问题现象的一些名词,动词,形容词等等。
一个知识图的例子可如1所示,图1中按从上到下的顺序以虚线分割出四层:概念层、产品层、组件层和事件层。
本文利用技术语料构建知识图,下面将描述具体的构建方法。
概念层和产品层
本文从产品信息中抽取概念和产品。总共得到了例如6052个产品,一共属于例如214个不同的类别。同时本文利用预先定义的规则来抽取产品的属性,比如“officeprowin32it”表示产品名为office,版本为pro,语言是意大利语(italian),并且是安装在32位的windows操作系统上。
组件层
本文利用技术语料和用户的问题日志来抽取组件。首先,利用一些序列标注的方法识别出语料当中提到的组件。这些抽取出的短语被表示为组件层的节点,本文使用产品与组件的pmi值来衡量。pmi是一种常见的用来衡量两个短语之间相似度的方法,如果说一个组件c与一个产品p的pmi值超过一个阈值,那么我们认为c是p的一个组件。pmi的定义如下:
其中
#(c)表示c的出现次数,#(p)表示p的出现次数,#(p,c)表示p和c的共现次数。
事件层
事件层有两种不同的边,分别是“事件词(eventwordof)”和“有关于(relatedto)”,我们分别讨论这两种边。首先,事件词(eventwordof)连接一个产品和一个动作词,我们使用类似组件层的方法,利用pmi来抽取这样的关系。通常来说,用户都使用动词、形容词、副词、名词等来描述一个问题的现象。给定大规模的技术语料,首先利用一些成熟的位置标签(pos-tag)的方法,标注出技术语料的词性。同时,假定两个技术问题如果能被同一个问题解决,那么它们在语义上应该是非常相似的,比如,文档d能解决3个技术问题,分别如下:
q2:outlook2007不动了(outlook2007getsfrozen)。
q9:outlook发送状态保持数小时了(outlooksendingstatusremainsforhours)。
q15:电子邮件卡在发件箱了(emailsgetstuckinoutbox)。
所以,我们能得出不动(frozen)、保持(remain)和卡住(stuck)三个词在语义上比较相似,所以在这三个词语对应的时间节点之间,会连接“有关于(relatedto)”的关系。
为了返回和用户待解决问题相关联的目标文档,本申请中将知识对象和文档对象进行关联。其中,文档对象可根据网络上搜集的技术问题日志来获得。
问题对象、知识对象和文档对象的一种示例连接关系可如图2所示。图2中每个节点可表示一个对象,例如一个问题对象、一个知识对象或一个文档对象。图2中的待解决问题q为:一些具体的自定义表格在用户发送时卡在发件箱了(somespecificcustomformsgetstuckinoutboxwhenuserssendit)。文档d1为对微软office套装sp2的说明(descriptionof2007microsoftofficesuitesp2)。
在图2中,存在三种类型的连接边:问题节点连接到知识节点的边、连接两个知识节点的边以及知识节点连接到文档节点的边。其中,对同一个问题节点而言,该问题节点连接到各个知识节点的边,具有相同的权重。连接两个知识节点的边的权重可用条件概率表示,也就是说,从节点x到节点y的权重表示为x出现的情况下y出现的概率,如下表示:
其中,#(x,y)表示x和y的共现次数。
对于知识节点连接到文档节点的边的权重可用如下公式来表示:
其中,分子表示所有能被d解决且包含属于x的问题的个数,分母是所有能被d解决的问题的数量,ql(d)表示所有能被d解决的问题。
在预先构建好知识库后,即可根据用户输入的问题进行信息检索。
参照图3,本发明实施例提供一种信息检索方法,所述方法包括:
步骤31,接收输入的待解决问题。
其中,输入的待解决问题可以是用户通过电子设备输入的待解决问题。
步骤32,确定所述待解决问题所属的技术领域。
在本申请实施例中,可以通过待解决问题中的一或多个关键词确定待解决问题所属的技术领域。
步骤33,根据预先建立的在所述技术领域的知识库,确定所述技术领域中与所述待解决问题相匹配的目标文档,其中,所述知识库中包括问题对象、知识对象、文档对象、所述问题对象和所述知识对象之间的对应关系以及所述知识对象和所述文档对象之间的对应关系,所述知识对象选自所述问题对象的一部分;
步骤34,返回所述目标文档。
在本申请中,所述与所述待解决问题相匹配的目标文档可以例如为解决所述待解决问题的目标文档、包含待解决问题的目标文档、包含待解决问题中的一或多个关键词的目标文档。
在本申请中,步骤34中所述返回所述目标文档可包括:返回所述目标文档的名称和/或返回所述目标文档中的内容。
本申请实施例在基于用户的待解决问题(即用户提问)进行检索时,不仅考虑到问题中的一或多个关键词,同时考虑到问题的技术领域,通过考虑待解决问题的技术领域以及利用预先构建的特定知识库,可以大幅提高检索出的用户待解决问题的结果的准确性。
在本申请实施例中,步骤33中所述确定所述技术领域中与所述待解决问题相匹配的目标文档可包括:
根据所述知识库中所述问题对象、所述知识对象以及所述问题对象和所述知识对象之间的对应关系,确定所述技术领域中与所述待解决问题类似的问题;
确定每个所述类似的问题与所述待解决问题之间的相似度得分;
基于所述相似度得分,以及每个所述类似的问题对应的目标文档,确定与所述待解决问题相匹配的目标文档。
这里需了解的是,本申请实施例基于相似度得分以及每个所述类似的问题对应的目标文档,可直接选择相似度得分最高的类似问题对应的目标文档作为所述待解决问题相匹配的目标文档。这样,可以以最快的速度向用户返回结果。这种方式可以适用于用户对速度要求极高的场景。
当然,在本申请中,可以以每个所述类似的问题对应的目标文档作为候选文档,所述基于所述相似度得分以及每个所述类似的问题对应的目标文档,确定与所述待解决问题相匹配的目标文档可包括:
基于所述相似度得分,确定所述待解决问题与所述候选文档中的每一个的相似度;
按照所述待解决问题与所述候选文档之间相似度从高到低的顺序选择一或多个候选文档作为与所述待解决问题相匹配的目标文档;
其中,以如下方式确定所述待解决问题与所述候选文档中的每一个的相似度:
q表示待解决问题,d表示一个候选文档,score(q,d)表示待解决问题q和候选文档d之间的相似度,#(d,c)表示d在c中出现的总次数,#(d,c0)表示d在c0中出现的次数,(q’i,d)∈c0表示d能解决在c0中的问题q’i,score(q’i,q)表示q’i与q的相似度得分;且c0表示问题日志c的子集,q’表示与待解决问题q类似的问题,且
c0={(q′0,d′0),{(q′1,d′1),...,{q′m,d′m)},q’i表示第i个与q类似的问题,m表示与q类似的问题的总数,d’表示与q’对应的目标文档。
可参照图4,图4中示出了与所述待解决问题属于同一技术领域的类似问题,以及每个类似问题对应的目标文档。本申请在确定所述技术领域中与所述待解决问题相匹配的目标文档的过程中,参照图4,假如问题q000为与待解决问题之间的相似度得分最高的类似问题,则可将问题q000对应的文档d1作为待解决问题的目标文档。当然,也可以将d5和d1(仅为示例)均作为待解决问题的目标文档,同时在返回结果时将d1排在d5之前。
作为一种可选方式,也可基于所述待解决问题与所述候选文档中的每一个的相似度来确定返回的结果的排列次序。相应地,在步骤33确定出目标文档之后,本申请实施例提供的信息检索方法还可包括:基于随机游走(randomwalk)算法,计算所述待解决问题与所述知识库中的每一个文档对象的相似度;基于所述待解决问题与所述知识库中的每一个文档对象的相似度,对所述多个目标文档进行重排序。
在对多个目标文档重排序之后,即可按照重排序后的结果返回目标文档。
其中,本申请实施例中所述基于随机游走算法,计算所述待解决问题与所述知识库中的每一个文档对象的相似度包括:选择所述待解决问题与所述文档对象之间的一或多个节点设置索引,其中,所述节点的索引表示该节点到所述知识库中的各个文档对象的相似度;基于为所述一或多个节点设置的所述索引,计算所述待解决问题与所述知识库中的每一个文档对象的相似度。
一种选择设置索引的节点的方式为:选择路径上的频繁节点设置索引,其中,频繁节点为入度和出度的乘积大于阈值的节点。
随机游走(randomwalk)算法是衡量节点相似度的方法,通常来讲,如果从一个节点作为开始,根据每条边的概率,随机走到另一个节点上,到达另一节点的概率就是初始节点和另一节点的相似度。随机游走算法计算出的相似度可以由如下方式进行计算:
其中,s(x,y)是基于随机游走的节点x和节点y之间的相似度,n(x)表示所有和x相连接的节点,t(x,x’)表示从节点x走到节点x’的概率。
本申请中,使用归一化的权重作为转移的概率。在基于随机游走算法计算相似度时,只保留从知识空间节点连接到文档节点的边,对于从问题节点连接到知识节点的边,也使用相同的方式。
基于随机游走的用户问题节点q和文档节点d的相似度能通过不同的方式来计算。一种方式是基于采样的方法。我们从用户问题节点q出发,以边权重为转移概率,随机移动到一个相邻的节点。假设采样次数为n,其中有r次停留在了文档节点d上,q和d的相似度就是r/n,实验表明,大概需要400万次采样,节点相似度才会趋于收敛,这表明在在线查询中使用基于采样的方法非常耗时,因为在查询阶段,需要系统实时响应。另一种方式是基于随机游走相似度的定义,创建线性方程组,并解线性方程组得到答案。参照图5,图5中每两个节点之间的连线表示从一个节点游走到另一个相邻节点的概率。基于图5所示数值可列出的线性方程组如下:
然而,求解一个线性方程组的复杂度很高,通过高斯消元求解线性方程组的复杂度为o(n3),其中n为方程组中未知数的个数。在本文构建的知识图中,节点数量非常庞大,求解一个线性方程组的复杂度很高,为了提高计算速度,可预先在一些节点上构建索引。对于一个被索引的节点,索引的形式就是一连串的浮点数,表示当前节点到所有文档的相似度,比如对节点x进行索引,x的索引形式为:
idex(x)={s(x,d0),s(x,d1),...,s(x,dm)}
其中,m为文档的个数,假设在节点上构建索引,可以得到与各个文档的相似度。
举例而言,如果在节点v5、v8、v10上预先建立索引,可以直接得到s(v5,d1)=0.701,s(v8,d1)=0.668,s(v10,d1)=0.642,那么上面的线性方程组经过简化的结果可如下:
从上面的例子可以看出,如果预先在一些节点上构建索引,方程的未知数的数量将会大大减少(从11个减少到了3个)。
在本申请实施例中,提出一个贪心算法来选择物化(被索引)的节点。这个贪心的算法每次选择出一些频繁出现在很多路径上的节点,因为频繁的节点更容易覆盖到更多的路径,本文利用入度×出度作为频繁节点的衡量指标,也就是说入度×出度越大,频繁度越高。贪心算法中每次挑选出频繁度最高的节点,将此节点加入索引节点,然后重新计算其它节点的频繁度,最后得到所有的物化节点。
本申请实施例提供的基于索引的计算相似度的方式,可以极大地降低计算量,提高计算效率。同时,基于频繁度来选择设置索引的节点,可以选择部分节点设置索引,而不用对所有节点设置索引,进一步降低了计算量。
图6是本申请实施例提供的一种信息检索装置的结构框图,参照图6,本申请实施例提供的信息检索装置600包括:界面模块601和处理模块602。其中:
界面模块601,用于接收输入的待解决问题;
处理模块602,用于确定所述待解决问题所属的技术领域;
所述处理模块602,还用于根据预先建立的在所述技术领域的知识库,确定所述技术领域中与所述待解决问题相匹配的目标文档,其中,所述知识库中包括问题对象、知识对象、文档对象、所述问题对象和所述知识对象之间的对应关系以及所述知识对象和所述文档对象之间的对应关系,所述知识对象选自所述问题对象的一部分;
所述界面模块601,还用于返回所述目标文档。
本申请实施例提供的信息检索装置,在基于用户的待解决问题(即用户提问)进行检索时,不仅考虑到问题中的一或多个关键词,同时考虑到问题的技术领域,通过考虑待解决问题的技术领域以及利用预先构建的特定知识库,可以大幅提高检索出的用户待解决问题的结果的准确性。
可选地,所述与所述待解决问题相匹配的目标文档为解决所述待解决问题的目标文档。
所述界面模块具体用于:返回所述目标文档的名称和/或返回所述目标文档中的内容。
可选地,所述处理模块602具体用于:
根据所述知识库中所述问题对象、所述知识对象以及所述问题对象和所述知识对象之间的对应关系,确定所述技术领域中与所述待解决问题类似的问题;
确定每个所述类似的问题与所述待解决问题之间的相似度得分;
基于所述相似度得分,以及每个所述类似的问题对应的目标文档,确定与所述待解决问题相匹配的目标文档。
可选地,每个所述类似的问题对应的目标文档作为候选文档,所述处理模块602具体用于:
基于所述相似度得分,确定所述待解决问题与所述候选文档中的每一个的相似度;
按照所述待解决问题与所述候选文档之间相似度从高到低的顺序选择一或多个候选文档作为与所述待解决问题相匹配的目标文档;
其中,以如下方式确定所述待解决问题与所述候选文档中的每一个的相似度:
q表示待解决问题,d表示一个候选文档,score(q,d)表示待解决问题q和候选文档d之间的相似度,#(d,c)表示d在c中出现的总次数,#(d,c0)表示d在c0中出现的次数,(q’i,d)∈c0表示d能解决在c0中的问题q’i,score(q’i,q)表示q’i与q的相似度得分;且c0表示问题日志c的子集,q’表示与待解决问题q类似的问题,且
c0={(q′0,d′0),{(q′1,d′1),...,{q′m,d′m)},q’i表示第i个与q类似的问题,m表示与q类似的问题的总数,d’表示与q’对应的目标文档。
可选地,在确定目标文档之后,所述处理模块602还用于:
基于随机游走算法,计算所述待解决问题与所述知识库中的每一个文档对象的相似度;
基于所述待解决问题与所述知识库中的每一个文档对象的相似度,对所述多个目标文档进行重排序。
可选地,在基于随机游走算法,计算所述待解决问题与所述知识库中的每一个文档对象的相似度时,所述处理模块602具体用于:
选择所述待解决问题与所述文档对象之间的一或多个节点设置索引,其中,所述节点的索引表示该节点到所述知识库中的各个文档对象的相似度;
基于为所述一或多个节点设置的所述索引,计算所述待解决问题与所述知识库中的每一个文档对象的相似度。
可选地,在选择设置索引的节点时,所述处理模块602具体用于:
选择路径上的频繁节点设置索引,其中,频繁节点为入度和出度的乘积大于阈值的节点。
需要说明的是:上述实施例提供的信息检索装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将信息检索装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的信息检索装置与信息检索方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
这里还需了解的是,界面模块601和处理模块602可以为同一物理设备内的不同模块,还可以视应用而定,界面模块601可以为分布于不同位置处的一或多个物理设备,处理模块602也可以为分布于不同位置处的一或多个物理设备。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行上述信息检索方法。
除非另作定义,此处使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请专利申请说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的示例实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。