一种文档检索匹配方法
技术领域
本发明所属技术领域为自然语言处理、信息检索,尤其涉及一种文档检索匹配方法。
背景技术
信息检索中计算文档相关性的算法有很多,基于TF-IDF框架的算法是其中重要的一类,而OkapiBM25又是该类算法中的一个经典实现。本文的文档检索匹配方法主要是基于该经典算法的优化实现,方法和相关技术也可以推广到其它算法。算法中的符号及含义如表格1所示。
表格1基于TF-IDF框架的算法中使用的符号及含义
OkapiBM25算法的具体计算公式如下(公式十一):
其中,t表示词,Q表示查询文档,D表示待匹配文档。k1一般取值1.0~2.0,b一般取值0.75,k3一般取值取值0~1000,均为常数。
发明内容
本发明所要解决的技术问题是提供一种文档检索匹配方法,提高算法实现程序的执行效率,减少全文检索过程所需要的时间。
为解决上述技术问题,本发明提供一种文档检索匹配方法,包括计算查询文档与待匹配文档相关度的步骤,其特征是:所述计算查询文档与待匹配文档相关度的步骤根据公式一计算得出,所述公式一为:
其中,Q表示查询文档,D表示待匹配文档,t表示索引词,tf为索引词在待匹配文档中出现的次数,dl为待匹配文档的文档长度;
所述公式一的计算因子tf,dl,ipp,pk1b,pbavdl由数据预处理的步骤得出;
所述数据预处理的步骤是:
(a)记录文档库中的总文档数N,总文档长度adl,根据公式计算得出平均文档长度avdl;
将b取值0.75,根据公式四计算得出pbavdl,所述公式四为:
记录待匹配文档的长度dl,记录索引词在待匹配文档中出现的次数tf;
(b)获取索引词的查询词频qtf,记录索引词出现的文档数量df,将k1取值1.0~2.0,k3取值0~1000,根据公式二计算得出ipp,所述公式二为:
(c)根据公式三计算得出pk1b,所述公式三为:pk1b=k1(1-b);
所述数据预处理的步骤在计算查询文档与待匹配文档相关度的步骤之前。
优选地,所述公式一由公式十一转换而来,所述公式十一为:
所述由公式十一向公式一转换的步骤为:
(1)令
(2)令k1+1=pk1;
(3)令
(4)令idf·pk1·pqtf=ipp;
(5)令k1(1-b)=pk1b;
(6)令
优选地,所述公式二由公式十一向公式一转换的步骤(1),(2),(3),(4)组合转换而来。
优选地,所述idf为索引词的逆文档频率,所述索引词的逆文档频率根据总文档数N和索引词出现的文档数量df得出。
优选地,所述总文档数N和总文档长度adl记录在文档库中。
优选地,所述文档库包括倒排索引表和文档信息表,所述文档信息表记录文档、文档的唯一编号ID和文档长度dl,所述倒排索引表记录了索引词和索引词的列表信息。
优选地,所述索引词的列表信息包括:索引词出现的文档数量df,索引词在对应文档中出现的次数tf。
优选地,所述公式一中的索引词为同时从查询文档和待匹配文档中获取的索引词。
优选地,所述公式一的计算因子tf,dl,ipp由数据预处理的步骤(a)得出;
所述公式一的计算因子pk1b,由数据预处理的步骤(b)得出;
所述公式一的计算因子pbavdl,由数据预处理的步骤(c)得出。
本发明的有益效果是:能提高算法对应软件程序的执行效率,减少全文检索过程所需要的时间。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,在附图中:
图1为本发明的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明的技术方案作进一步具体说明。
为解决上述技术问题,本发明提供一种文档检索匹配方法,将经典算法进行了优化,优化技术主要通过数据预处理和改变计算公式中计算项的先后顺序实现,包括三个步骤:
如图1所示,第一步:数据预处理,通过数据预处理计算出ipp,pk1b,和pbavdl这三个计算项,
所述数据预处理的步骤是:
(a)记录文档库中的总文档数N,总文档长度adl,根据公式计算得出平均文档长度avdl;
将b取值0.75,根据公式四计算得出pbavdl,所述公式四为:
记录待匹配文档的长度dl,记录索引词在待匹配文档中出现的次数tf;
(b)获取索引词的查询词频qtf,记录索引词出现的文档数量df,将k1取值1.0~2.0,k3取值0~1000,根据公式二计算得出ipp,所述公式二为:
(c)将b取值0.75,将k1取值1.0~2.0,根据公式三计算得出pk1b,所述公式三为:pk1b=k1(1-b);
所述总文档数N和总文档长度adl记录在文档库中,所述文档库包括倒排索引表和文档信息表,所述文档信息表记录文档、文档的唯一编号ID和文档长度dl,所述倒排索引表记录了索引词和索引词的列表信息;所述索引词的列表信息包括:索引词出现的文档数量df,索引词在对应文档中出现的次数tf。
一般的倒排索引表中:记录了所有的索引词以及这些索引词在每篇文档中出现的频率;倒排索引表一般形式如表格2所示。
修改后的倒排索引表如
表格3所示。在表格2中,索引词对应的是该词在文档中的信息列表,每项为文档编号及索引词在该文档中出现的次数tf。在
表格3中,索引词对应的信息增加了该词在多少篇文档中出现过即索引词出现的文档数量df,也就是文档频率。
表格2倒排索引表一般形式
表格3修改后的倒排索引表形式
根据
表格3中的文档频率和总文档数,即可计算得到公式中第一个计算项的值。
在数据预处理阶段完成计算项的准备。
第二步:计算公式转换,将公式十一转换成公式一:
背景技术中提到经典算法OkapiBM25算法的具体计算公式如下(公式十一):
其中,t表示词,Q表示查询文档,D表示待匹配文档。k1一般取值1.0~2.0,b一般取值0.75,k3一般取值取值0~1000,均为常数。
本发明对该经典公式进行了转换以便于优化,转换为公式一,所述公式一为:
其中,Q表示查询文档,D表示待匹配文档,所述t表示根据查询文档获取的索引词,所述tf为索引词在对应文档中出现的次数,所述dl为文档长度;
所述公式一的计算因子tf,dl,ipp由数据预处理的步骤(a)得出;
所述公式一的计算因子pk1b,由数据预处理的步骤(b)得出;
所述公式一的计算因子pbavdl,由数据预处理的步骤(c)得出。
所述ipp由公式二计算得出,所述pk1b由公式三计算得出,所述pbavdl由公式四计算得出;
公式十一转换成公式一的步骤为:
(1)令
(2)令k1+1=pk1;
(3)令
(4)令idf·pk1·pqtf=ipp;
(5)令k1(1-b)=pk1b;
(6)令
其中,所述公式二 由上述步骤(1),(2),(3),(4)组合转换而来。
其中,所述idf为索引词的逆文档频率,所述索引词的逆文档频率根据总文档数N和索引词出现的文档数量df得出,在数据预处理的步骤(2)可以计算得出。
第三步:根据转换后的计算公式即公式一逐一计算查询文档与待匹配文档之间的相关度,转换后的计算公式即公式一为:
上述步骤为一种文档相关性计算方法优化算法,其先进性体现在以下:
OkapiBM25算法实现时,对每一篇候选文档计算相关性得分时,对该文档中出现的每一个索引词,简单按公式实现的计算量,以及算法优化实现后的计算量,进行比较的数据如表格4所示。其中加减法次数减少7/9,乘除法次数减少7/10,对数计算次数从1次减少到0。
表格4算法实现的单项计算量比较
算法优化实现的计算还需要基于对查询文档中的索引词的预处理计算,也就是计算ipp,pk1b,pbavdl这三项的值,对应的计算量如表格5所示,其中ipp的完整计算公式为:
表格5索引词的预处理计算量
计算相关性的词,也就是索引词数量为M,候选文档数量为N,则简单实现和优化实现对应的计算量如表格6所示。其中M-1为连加符号对应的计算量。
表格6算法实现计算量比较
优化实现相对简单实现所需要的计算量,根据各种运算类型计算可得:
一般来说,有N>>M>>1,因此,文档相关性的计算量约可以降为原来的3/10。虽然算法的理论复杂度没有变化,但是算法实现的计算量减少了约7/10,则相应的计算时间也可以缩短约7/10。
最后所应说明的是,以上具体实施方式仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。