一种文本排序方法及设备
技术领域
本发明涉及计算机技术领域,尤其涉及到一种文本排序方法及设备。
背景技术
搜索引擎是当前竞争非常激烈的一个领域。当用户输入一个关键词后,通常会得到成千上万甚至更多的搜索结果,而对于用户来说,其会希望在显示页面的第一页甚至第一页的前几个网页中即找到自己想要的结果,因此,如何对搜索到的各网页进行排序,将直接影响到用户的用户体验。
TF-IDF(term frequency–inverse document frequency,字词频率-逆向文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。根据搜索词在不同文件中的重要程度,可以确定不同文件与搜索词的关联程度,进而根据关联程度对文件进行排序。
然而,在实现本发明的过程中,申请人发现,TF-IDF算法仅考虑搜索词中的各个子词在文件中的词频,然而词频的高低可能并不能真实反映该文件与搜索词的相关程度,从而无法对搜索结果进行更好的排名。
发明内容
本发明提供了一种文本排序方法,能够更为准确的反映各个文本与检索请求的相关程度,从而对各个文本进行更好的排序。
本发明提供了一种文本排序方法,方法包括:
对每一个待排序文本,获取检索请求query中的每一个子词相对于在所述query与该子词相邻的子词的文本偏移差dpage,dpage表示一个子词在该待排序文本中的位置相对于另一个子词在该待排序文本中的位置的偏移,根据获取到的文本偏移差dpage确定所述query在该待排序文本中的子词偏离系数offset_ratio;
根据各个待排序文本对应的子词偏离系数offset_ratio对各个待排序文本进行排序。
优选的,所述获取检索请求query中的每一个子词相对于在所述query与该子词相邻的子词的文本偏移差dpage,包括:当其中一个子词ti在该待排序文本中对应多个位置时,分别计算在所述query中与ti相邻的子词t(i+1)在该待排序文件中的位置相对于所述多个位置中的每一个位置的偏移,并取各个偏移中的最小值作为ti和t(i+1)在该待排序文本中的文本偏移差dpage。
优选的,所述获取检索请求query中的每一个子词相对于在所述query与该子词相邻的子词的文本偏移差dpage,还包括:
当在query中,子词tj的位置在与其相邻的子词t(j+1)之前,且在一个待排序文本中,t(j+1)的位置f(j+1)在tj的位置fj之前,取位置f(j+1)相对于位置fj实际的偏移与预设值M的和作为位置f(j+1)相对于位置fj的偏移,根据t(j+1)所在的位置相对于tj所在的位置的偏移确定子词tj和t(j+1)在该待排序文本中的文本偏移差dpage(j+1),tj,其中M大于0。
优选的,所述根据获取到的文本偏移差dpage确定所述query在该待排序文本中的子词偏离系数offset_ratio之前,所述方法包括:
针对query中的每一个字词,获取该字词相对于在所述query与该子词相邻的子词的query偏移差dquery,dqurey用于表示一个子词在一个query中的位置相对于另一个子词在同一query中的位置的偏移;
针对query中的每一个字词,获取该字词与在query中与该字词相邻的字词的相交系数,所述相交系数表示相邻的两个子词所共同拥有的元素与所述两个子词合计拥有的元素之间的比值;
所述根据获取到的文本偏移差dpage确定所述query在该待排序文本中的子词偏离系数offset_ratio,具体包括:
分别获取在query中所有相邻的两个子词在该待排序文本中对应的dpage与这两个子词对应的dquery之间的差值dpos;
获取各个dpos与对应的相交系数之间的乘积的和作为所述query在该待排序文本中的偏离总量min_diff;
根据所述偏离总量min_diff确定所述query在该待排序文本中的子词偏离系数offset_ratio。
优选的,所述根据所述偏离总量min_diff确定所述query在该待排序文本中的子词偏离系数offset_ratio,具体包括:
根据如下公式确定所述query在该待排序文本中的子词偏离系数offset_ratio:
其中,A、B、C、D、E、basic_ratio均为预设值。
本发明还提供了一种文本排序设备,包括:
第一获取模块,用于针对每一个待排序文本,获取检索请求query中的每一个子词相对于在所述query与该子词相邻的子词的文本偏移差dpage,dpage表示一个子词在该待排序文本中的位置相对于另一个子词在该待排序文本中的位置的偏移,根据获取到的文本偏移差dpage确定所述query在该待排序文本中的子词偏离系数offset_ratio;
排序模块,用于根据各个待排序文本对应的子词偏离系数offset_ratio对各个待排序文本进行排序。
优选的,所述第一获取模块,包括:第一计算子模块,用于当其中一个子词ti在该待排序文本中对应多个位置时,分别计算在所述query中与ti相邻的子词t(i+1)在该待排序文件中的位置相对于所述多个位置中的每一个位置的偏移;第一获取子模块,用于获取第一计算子模块计算得到的各个偏移中的最小值作为ti和t(i+1)在该待排序文本中的文本偏移差dpage。
优选的,所述第一获取模块,还包括:偏移获取模块,用于当在query中,子词tj的位置在与其相邻的子词t(j+1)之前,且在一个待排序文本中,t(j+1)的位置f(j+1)在tj的位置fj之前时,取位置f(j+1)相对于位置fj实际的偏移与预设值M的和作为位置f(j+1)相对于位置fj的偏移,其中M大于0;第二获取子模块,用于根据到tj+1所在的位置相对于tj所在的位置的偏移确定子词tj和tj+1的文本偏移差。
优选的,所述设备还包括::
第三计算模块,用于针对query中的每一个字词,获取该字词相对于在所述query与该子词相邻的子词的query偏移差dquery,dqurey用于表示一个子词在一个query中的位置相对于另一个子词在同一query中的位置的偏移;
第四计算模块,用于针对query中的每一个字词,获取该字词与在query中与该字词相邻的字词的相交系数,所述相交系数表示相邻的两个子词所共同拥有的元素与所述两个子词合计拥有的元素之间的比值;
所述第一获取模块,包括:
第三获取子模块,用于分别获取在query中相邻的子词在每一个待排序文件中对应的dpage与相邻的子词对应的dquery之间的差值dpos;
第四获取子模块,用于获取每一个待排序文件中的各个dpos与对应的相交系数之间的乘积的和作为所述query在该待排序文本中的偏离总量min_diff;
第五获取子模块,用于根据每一个待排序文本对应的偏离总量min_diff确定所述query在该待排序文本中的子词偏离系数offset_ratio。
优选的,第五获取子模块,具体用于根据如下公式确定所述query在相应待排序文本中的子词偏离系数offset_ratio:
其中,A、B、C、D、E、basic_ratio均为预设值。
本发明中,对每一个待排序文本,获取检索请求query中的每一个子词相对于在所述query与该子词相邻的子词的文本偏移差dpage,dpage表示一个子词在该待排序文本中的位置相对于另一个子词在该待排序文本中的位置的偏移;根据获取到的文本偏移差dpage确定所述query在该待排序文本中的子词偏离系数offset_ratio,由于query中相邻的子词term在文本中位置关系更能够反映query与该文本的相关性,则根据子词偏离系数做出的排名能够将更为相关的网页优先推荐给用户,从而提升用户体验。
附图说明
图1为本发明实施例提供的一种文本排序方法的流程图;
图2为本发明实施例提供的一种文本排序方法的流程图;
图3为本发明实施例二提供的一种文本排序方法的流程图;
图4为本发明实施例三提供的一种文本排序设备的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例一
本发明实施例一提供了一种文本排序方法,如图1所示,该方法包括:
步骤S11,对每一个待排序文本,获取检索请求query中的每一个子词相对于在该query与该子词相邻的子词的文本偏移差dpage,dpage表示一个子词在该待排序文本中的位置相对于另一个子词在该待排序文本中的位置的偏移,并根据获取到的文本偏移差dpage确定该query在该待排序文本中的子词偏离系数offset_ratio。
步骤S12,根据各个待排序文本对应的子词偏离系数offset_ratio对各个待排序文本进行排序。
本发明实施例中,获取用于反映query中相邻的子词term在待排序文本中的位置相互偏离的程度的子词偏离系数,由于query中相邻的子词term在文本中位置关系更能够反映query与该文本的相关性,则根据子词偏离系数做出的排名能够将更为相关的网页优先推荐给用户,从而提升用户体验。
优选的,可以首先获取query中的各个子词在待排序文本中的位置(该位置可以为一个数字,表示该子词的第一个元素是这个文本的第多少个元素),计为该子词在该文本中的偏移,然后对两个相邻的子词所对应的偏移相减,该差值的绝对值即为其中任意一个term相对于另外一个term在文本中的偏移。按照这种方式,系统获取所有相邻的(两个)子词在各个待排序文本中的文本偏移差dpage。
本发明的实施例中的子词偏离系数是指一个query中相邻的两个子词在待排序文本中的位置相互偏离的程度。实际应用中,字词偏离系数的具体形式可以根据本领域技术人员需要任意设定,只要能够反映一个query中相邻(两个)子词在文本中的偏移程度,都应该落入本发明的保护范围。
优选的,上述步骤S11中,获取检索请求query中的每一个子词相对于在该query与该子词相邻的子词的文本偏移差dpage,包括:当其中一个子词ti在该待排序文本中对应多个位置时,分别计算在该query中与ti相邻的子词t(i+1)在该待排序文件中的位置相对于多个位置中的每一个位置的偏移,并取各个偏移中的最小值作为ti和t(i+1)在该待排序文本中的文本偏移差dpage。
实际应用中,一个子词(比如第i个term,计为ti)可能在一个文本中多次出现,即该子词在该文本中会有多个位置,此时在query中与该子词相邻的子词(比如第i+1个term,t(i+1))相对于该子词有多个偏移(相对偏移),本发明优选的实施例中,取多个偏移中的最小值作为这两个子词在该文本中的文本偏差值。本申请发明人经过大量的试验和统计发现,通过这种方式获取到的子词偏离系数能够更为准确的反映query与相应文本的相关程度。当然实际应用中,本领域技术人员也可以取上述多个相对偏移的平均值作为该两个字词的文本偏移差,或者取最小的n个上述相对偏移的平均值作为该两个子词的文本偏移差,具体通过何种方式同样不影响本发明的保护范围。
优选的,上述步骤S11中,获取检索请求query中的每一个子词相对于在所述query与该子词相邻的子词的文本偏移差dpage,包括:
当在query中,子词tj的位置在与其相邻的子词t(j+1)之前,且在该待排序文本中,t(j+1)的位置f(j+1)在tj的位置fj之前,取位置f(j+1)相对于位置fj实际的偏移与预设值M的和作为位置f(j+1)相对于位置fj的偏移,根据到t(j+1)所在的位置相对于tj所在的位置的偏移确定子词tj和tj+1的文本偏移差,其中M大于0。在实现本发明的过程中,本申请发明人发现,如果两个子词在query中的先后顺序与该两个子词在一个文本中出现两个位置的先后顺序相反,则很可能说明该文本与该query不够相关。在此基础上,本发明优选的实施例中,取两个位置实际的偏移和一个大于0的预设值M的和作为该这两个位置的偏移,通过这种方式能够降低顺序颠倒的两个位置之间的实际偏移对文本相关性的贡献,从而使排序结果更加合理。
优选的,上述步骤S11之前,该方法还包括如图2所示S101-S102:
步骤S101,针对query中的每一个字词,获取该字词相对于在该query与该子词相邻的子词的query偏移差dquery,dqurey用于表示一个子词在一个query中的位置相对于另一个子词在同一query中的位置的偏移。
步骤S102,针对query中的每一个字词,获取该字词与在query中与该字词相邻的字词的相交系数,所述相交系数表示相邻的两个子词所共同拥有的元素与所述两个子词合计拥有的元素之间的比值。
这里的相交系数反映的是两个子词元素重合的程度,具体计算方法为:相交系数=共同拥有的元素/合计拥有的元素数+a,a为预设值。这里所指的共同拥有的元素是指,两个子词共同拥有的、在query中占用同一个位置的元素。比如“中国人民”中,“中国”和“国人”中的“国”计为共同拥有的元素,则当a取值为1时,子词“中国”和“国人”的相交系数为33%+1=133%,“中国国民”的两个子词“中国”和“国民”中虽然也包含了同一个字“国”,但是由于两个“国”字在query中的位置不同,不能认为是同一个元素,当检索请求词为“中国国民”时,子词“中国”和“国民”的相交系数为1。
上述步骤S11中,根据获取到的文本偏移差dpage确定该query在该待排序文本中的子词偏离系数offset_ratio,具体包括如图2所示的步骤S111-S113:
步骤S111,分别获取在query中相邻的子词对应的dpage与其对应的dquery之间的差值dpos。
步骤S112,获取各个dpos与对应的相交系数之间的乘积的和作为所述query该待排序文本中的偏离总量min_diff。
步骤S113,根据步骤S112中获取到的偏离总量min_diff确定该query在该任一待排序文本中的子词偏离系数offset_ratio。
实际应用中,可以将各个dpos相加,得到该query在待排序文本中的偏离总量,并根据偏离总量确定相应的子词偏离系数,该偏离总量越大,则说明各个子词在该待排序文本中越为分散,说明该待排序文本与该query越不相关。
申请人在实现本发明的过程中发现,在query中相邻的两个子词在文本中的偏移差较小时,两个相邻的子词相交系数越大,该文本与query的相关性越低,在此基础上,本申请发明人使偏移总量乘以一个相交系数,则对于相交系数较大的两个相邻子词,其偏移总量会被放大,由此得到的子词偏移系数必然降低该文本与query的相关性,对该文本与query的相关性计算更为准确。
优选的,步骤S113具体包括:根据如下公式确定所述query在所述任一待排序文本中的子词偏离系数offset_ratio:
其中,A、B、C、D、E、basic_ratio均为预设值,可以根据不同的应用场景设置不同的值,比如根据检索系统的类型(比如对于科技类的检索系统,A、B、C、D、E可以设置为较大的值)。本申请发明人根据大量的统计发现,通过上述公式得到的子词偏离系数能够更为准确的反映文本与query的相关程度。
优选的,A=15,B=50,C=150,D=300,E=0.3。
本领域技术人员可以理解,上述的offset_ratio,与偏离总量负相关,而偏离总量与文本相对于query的相关度负相关,则offset_ratio与文本相对于query的相关度正相关。按照本领域技术人员的一般设计,可以按照文本的offset_ratio的大小从大到小将文本显示给用户。
优选的,上述任一实施例中,在根据子词偏离系数对文本进行排序时,还可以参考相应的query的词频和idf值。
实施例二
下面具体应用场景对本发明提供的文本排序方法进行进一步说明,以下实施例仅为本发明的优选实施方式,而不应该对本发明保护范围的限定。假设本发明实施例二中,用户输入的query为“中国人的生活”,如图3所示,本发明实施例二提供的文本排序方法可以包括如下流程:
步骤S21,对query“中国人的生活”进行切词,得到“中国”、“国人”、“的”和“生活”4个子词。
为了方便描述,以下分别以t1、t2、t3、t4分别代表“中国”、“国人”、“的”和“生活”4个子词。具体的切词方式可以与现有技术中一致,在此不再赘述。
步骤S22,计算每一个子词与相邻子词的相交系数dtight。
其具体计算公式为:相交系数=共同拥有的元素/合计拥有的元素数+1,则子词“中国”与子词“国人”的相交系数dtightt1,t2为133%,“国人”和“的”的相交系数dtightt2,t3为1,“的”与“生活”的相交系数为dtightt3,t4为1。
步骤S23,计算每一个子词相对于邻居子词的query偏移差dquery。这里的一个子词的邻居子词是指在query中与一个子词相邻的子词。query偏移差,是指一个子词在query中的位置相对于另一个子词在同一query中的位置的偏移,单位为字。比如,由于“中国”中的“中”字为文本中的第一个字,则认为子词“中国”在该文本中的位置为1,相应的“国人”在该文本中的位置为2。则“中国”相对于“国人”的query偏移差dqueryt1,t2=|1-2|=1(字),相应的dqueryt2,t3=|2-4|=2,dqueryt3,t4=|4-5|=1。可以理解,ti相对于t(i+1)的dquery偏移差与t(i+1)相对于ti的文本偏移差相同。
步骤S24,针对每一个待排序的文本,获取检索请求query中的每一个子词相对于在该query与该子词相邻的子词的文本偏移差dpage。dpage表示一个子词在该待排序文本中的位置相对于另一个子词在该待排序文本中的位置的偏移,比如在一个文本中,如果“中国”和“国人”仅出现一次,且“中国”中的“中”字为该文本的第10个字,“国人”中的“国”字为该文本中的第15个字,则“中国”相对于“国人”的文本偏移差dpaget1,t2=|10-15|=5(字)。需要指出的是,实际应用中,一个子词可能在文本中出现多次,这样该子词在query中的邻居子词在文本中的位置相对于该字词在文本的位置有多个偏移,此时取偏移中的最小值作为两个子词该文本的文本偏移差dpage。另外,如果在query中,一个子词出现在另一个子词之前,比如ti出现在t(i+1)之前,而在文本中,ti出现的一个位置fi在t(i+1)出现的位置f(i+1)之后,则将位置fi相对于位置f(i+1)实际的偏移加上一个大于零的预设值M,由于偏移值越小说明越相关,在通过这种方式能够降低上述两个位置的偏移对文本相关性的贡献。或者,如上述的,当采用取偏移中的最小值作为文本偏移差dpage时,能够降低上述两个位置的偏移被选作文本偏移差dpage的概率。
步骤S25,针对每一个待排序的文本,获取各组在query中相邻的子词该文本中对应所对应的dpage与其对应的dquery之间的差值dpos。其具体计算公式为:dposeti,t(i+1)=|dpageti,t(i+1)-dqueryti,t(i+1)|。假如“中国”和“国人”在一个文本中的dpage为10,则dpose1,2=|5-1|=4。
步骤S26,针对每一个待排序的文本,获取各组在query中相邻的子词所对应的dpos与dtight的乘积,并取各个乘积的和作为该query在文本中的偏移总量min_diff。
即 term_count为query中子词的个数,“中国人的生活”对应的term_count即为4。
步骤S27,根据步骤S26获取到的min_diff获取“中国人的生活”在每一个待排序文本中的子词偏离系数offset_ratio。其具体计算公式为:
其中,A=15,B=50,C=150,D=300,E=0.3。
步骤S28,根据获取到的各个待排序文本的子词偏离系数offset_ratio对各个待排序文档进行排序。
基于同样的构思,本发明实施例三还提供了一种文本排序设备,如图4所示包括,包括:
第一获取模块401,用于针对每一个待排序文本,获取检索请求query中的每一个子词相对于在所述query与该子词相邻的子词的文本偏移差dpage,dpage表示一个子词在该待排序文本中的位置相对于另一个子词在该待排序文本中的位置的偏移,根据获取到的文本偏移差dpage确定所述query在该待排序文本中的子词偏离系数offset_ratio;
排序模块402,用于根据各个待排序文本对应的子词偏离系数offset_ratio对各个待排序文本进行排序。
优选的,第一获取模块401,包括:第一计算子模块4011,用于当其中一个子词ti在该待排序文本中对应多个位置时,分别计算在所述query中与ti相邻的子词t(i+1)在该待排序文件中的位置相对于所述多个位置中的每一个位置的偏移;第一获取子模块4012,用于获取第一计算子模块4011计算得到的各个偏移中的最小值作为ti和t(i+1)在该待排序文本中的文本偏移差dpage。
优选的,第一获取模块401,还包括:偏移获取模块4013,用于当在query中,子词tj的位置在与其相邻的子词t(j+1)之前,且在一个待排序文本中,t(j+1)的位置f(j+1)在tj的位置fj之前时,取位置f(j+1)相对于位置fj实际的偏移与预设值M的和作为位置f(j+1)相对于位置fj的偏移,其中M大于0;第二获取子模块4014,用于根据到tj+1所在的位置相对于tj所在的位置的偏移确定子词tj和tj+1的文本偏移差。
优选的,该设备还包括:
第三计算模块403,用于针对query中的每一个字词,获取该字词相对于在所述query与该子词相邻的子词的query偏移差dquery,dqurey用于表示一个子词在一个query中的位置相对于另一个子词在同一query中的位置的偏移;
第四计算模块404,用于针对query中的每一个字词,获取该字词与在query中与该字词相邻的字词的相交系数,该相交系数表示相邻的两个子词所共同拥有的元素与所述两个子词合计拥有的元素之间的比值;
第一获取模块401,包括:
第三获取子模块4015,用于分别获取在query中相邻的子词在每一个待排序文件中对应的dpage与相邻的子词对应的dquery之间的差值dpos;
第四获取子模块4016,用于获取每一个待排序文件中的各个dpos与对应的相交系数之间的乘积的和作为所述query在该待排序文本中的偏离总量min_diff;
第五获取子模块4017,用于根据每一个待排序文本对应的偏离总量min_diff确定所述query在该待排序文本中的子词偏离系数offset_ratio。
优选的,第五获取子模块4017,具体用于根据如下公式确定所述query在相应待排序文本中的子词偏离系数offset_ratio:
其中,A、B、C、D、E、basic_ratio均为预设值。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。