用于搜索文档的方法和系统 【技术领域】
本发明涉及信息处理技术,尤其涉及用于搜索文档的方法和系统。
背景技术
随着网络的快速发展,在互联网上发布的信息越来越多,使得互联网成为信息发布和信息搜索的重要媒介。互联网上的信息处理,主要涉及三个方面,即信息发布、信息分类和信息搜索。信息发布者通过互联网或其他相关途径在一些信息平台上,根据一定规则发布相关信息、自由发布信息或对已发布的信息进行评论。信息搜索者指通过互联网或其他相关途径在一些分类信息平台上查找相关的信息。信息分类,是指为了信息的搜索,而对发布的信息进行组织。常用的搜索方法包括根据一个或多个关键词搜索,在搜索结果中再搜索,网页查询时可以直接用网址进行查询等等。
在搜索领域存在以下两个问题。第一,由于文档本身不包含用户查询的关键词,导致符合用户需要的文档不能被检索出来。目前的搜索引擎在搜索文档时只关注于文档本身是否包含用户输入的关键词。如一篇文章,内容讲的是“中国创新”,但是内容中使用的词语是”炎黄子孙”,“发明创造”。通过目前的搜索引擎用检索词“中国创新”搜索,一般找不到这篇文章。第二,现有搜索引擎不能准确根据用户输入的搜索关键词和搜索出的文档在语义上的相关性进行排序。用户需要搜索引擎能够搜索出与查询关键词的语义更加匹配的文档。但是现有的搜索引擎很难做到这一点。因为现有的搜索引擎或者按照文章的重要程度对文档进行排序或者按照文档的受欢迎程度对文档进行排序,并没有考虑文档与用户输入查询关键词在语义上的匹配程度。例如“page rank”、“被点击最多”、“关键词最多出现”等排序算法.
例如,一篇新文章,讲的是“发明创造”,因为新文章看过的人很少,被引用的也很少,目前的搜索引擎会将这篇文章排在非常靠后的位置。这样用户很难找到这篇文章。尽管这篇文章中的能容非常“符合发明创造”。
因此,需要对现有的搜索机制进行改进,以便为用户提供更符合其需求的文档信息。
【发明内容】
鉴于已有技术的不足,本发明提供了一种用于搜索文档的方法,包括:接收用于搜索的检索词;查询与所述检索词相关的标签;搜索具有所述标签中的至少一个标签的文档;对所述文档进行等级排序;以及发送对所述文档进行等级排序的结果。
本发明还提供了一种用于搜索文档的系统,包括:接收装置,用于接收用于搜索的检索词;查询装置,用于查询与所述检索词相关的标签;搜索装置,用于搜索具有所述标签中的至少一个标签的文档;排序装置,用于对所述文档进行等级排序;以及发送装置,用于发送对所述文档进行等级排序的结果。
【附图说明】
图1示出了根据本发明一实施例的用于搜索文档的流程图。
图2示出了根据本发明另一实施例的用于搜索文档的流程图。
图3示出了根据本发明另一实施例的对文档进行排序的流程图。
图4示出了根据本发明一实施例的用于更新检索词/标签关系表的流程图。
图5示出了根据本发明一实施例的用于搜索文档的系统框图。
【具体实施方式】
以下参照按照本发明实施例地方法、装置描述本发明。其中,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生严出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置(means)。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
还可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了根据本发明一实施例的用于搜索文档的流程图。其中示出了一种用于搜索文档的方法100。该方法包括以下步骤。
在步骤S110,接收用于搜索的检索词(Docuterm)。检索词是一个用于描述文件主题内容或概念的词或短语,它可作为数据名用于以后的检索中。该检索词可以包括关键词或主题词,或者根据一文档内容可以获得的其它检索词。该检索词也可以是将用户的查询输入分解成的单词或短语。另,为了搜索与给定的文档相关的文档,还可以根据给定的文档内容获得检索词。对于本领域的技术人员来说,对于一个给定的文本片段,有多种方法来生成检索词。首先,文档的作者可以输入其所认为的与文本片段最相近的检索词。第二,可以利用已有的多种算法来生成检索词。例如,可以利用tf-idf算法来从给定的文本片段选择关键词。
在步骤S120,查询与所述检索词相关的标签。标签(Tag)可以包括被附加在文档上的一个或一组词汇或短语。为文档加标签可以用于对文档进行分类,方便进行文档的查询。标签与普通分类法不同,它是从下向上建立的,普通分类法一般从上向下建立。对于传统意义的普通分类法,分类设计人员预先设定好一些用于分类的词汇,然后按照预先设定的分类词汇对每篇文档进行逐一分类,这种分类是目录似的。对于标签分类,每个用户都可以根据自己对于文档的认知和查找需求在文档上附加任意的标签,使用标签不用考虑目录结构而给文章进行分类。同一篇文档可以被多个人附加任意多个标签,同一个标签也可以附加在不同的文档上。各个标签之间的关系可以是一种平行的关系,但是又可以根据相关性分析,将经常一起出现的标签关联起来,而产生一种相关性的分类。正是由于标签的可以被所有人使用,通过群体性智慧的归纳总结,很多标签可以准确对分档分类,并帮助其他用户对文档进行查找,这也正使用标签的主要优点。
为了更加有效地利用标签的分类作用,以便进行更有效的搜索,可以对标签进行管理。例如,可以根据标签内容的语义,与被附加该标签的文档的语义之间的关系,对文档上的标签进行过滤。还可以根据用户对于文档的反馈,来对标签进行过滤或者设置标签的权重以便对文档进行等级排序。
根据本发明的另一实施例,还可以预先建立一检索词/标签关系表,用于查询与所述检索词相关的标签。可以在所述检索词/标签关系表中建立检索词/标签对,还可以建立检索词/标签/文档组合,并确定所建立的检索词/标签对的分值,确定所建立的检索词/标签/文档组合的权重。在本发明中,一检索词/标签对包括一检索词和与该检索词相关联的一标签,可以通过该检索词查询到该标签;一检索词/标签/文档组合包括一检索词/标签对和与该检索词/标签对相关联的一文档、一文档的标识符或一文档的URL链接等,其中该文档被附加了该标签,可以通过该标签搜索到该文档。
根据本发明的另一实施例,在步骤S120中,查询与所述检索词相关的标签,可以进一步配置为根据检索词/标签关系表,查询与所述检索词相关的标签。所述方法进一步包括,根据对所述文档的反馈,更新所述检索词/标签关系表中的检索词/标签对。其中,所述至少一个标签可以包括被附加在文档上用于对文档进行分类的一个或一组词汇或短语。其中,所述词汇或短语可以与被附加该标签的文档具有语义相关性。
根据本发明的另一实施例,对于所述更新,如果所述检索词/标签关系表未包括检索词与该文档包括的一标签之间的检索词/标签对,则建立相应的检索词/标签对。对于所述更新,还可以先过滤掉并非用于分类的标签,或者过滤掉与文档内容没有语义关系的标签。然后,对于该文档的其他标签,如果所述检索词/标签关系表未包括检索词与其他标签中的一标签之间的检索词/标签对,则建立相应的检索词/标签对。根据对所述文档的反馈,可以更新所述检索词/标签关系表,以便包括检索词与文档包括的标签之间的检索词/标签对,例如,建立其中未包括的检索词与文档包括的标签之间的检索词/标签对。从而可以在以后的搜索中扩大搜索范围。
在步骤S130,搜索具有所述标签中的至少一个标签的文档。在步骤S140,对所述文档进行等级排序。其中,可以采用已有技术中对于文档进行等级排序的机制,例如因特网上流行的搜索引擎所采用的等级排序机制。还可以根据预定的标签/文档组合的权重对所述文档进行等级排序。标签用于对文档进行分类,对文档的大量反馈反映在标签/文档组合的权重,间接地反映了该标签对文档的分类在用户看来的价值、相关程度、有效性或认可程度。对文档的反馈反映到标签/文档组合的权重,相应地反映了该标签/文档之间的关联关系对用户查询的协助程度。对文档的反馈(对于特定的搜索来说,在用户看来的价值、相关程度、有效性或认可程度)反映在检索词/文档组合的权重,相应地反映了该检索词对文档分类对用户查询的协助程度。这样,在扩大搜索范围之后,将用户可能更认可的(或更有意义的)文档通过等级排序,优先推荐给用户。
根据本发明的一实施例,上述方法可以进一步包括,根据对所述文档的反馈,更新所述标签/文档组合的权重。其中,可以根据对所述文档的反馈次数,更新所述标签/文档组合的权重。
其中,还可以根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档进行等级排序。通过大量用户的反馈确定检索词/标签对的分值,间接反映了检索词/标签之间的关联关系对用户查询的协助程度。对文档的反馈反映在检索词/标签/文档组合的权重,相应地反映了该组合的关联关系,对用户查询的协助程度。
本领域的技术人员可以理解,可以根据预定的标签/文档组合的权重或检索词/文档组合的权重对所述文档进行第一种等级排序;也可以根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重或检索词/文档组合的权重对所述文档进行第二种等级排序。对于第一种等级排序,用户对于文档的反馈直接反映到标签/文档组合的权重或检索词/文档组合的权重。对于第二种等级排序,用户对于文档的反馈将反映到检索词/标签对的分值以及预定的检索词/标签/文档组合的权重或检索词/文档组合的权重。对文档的一次反馈,可能反映与该文档相关的标签分类对于用户搜索的协助程度。因此,对文档的大量反馈,能够反映与该文档相关的标签分类对于用户搜索的协助程度。
在步骤S150,发送对所述文档进行等级排序的结果。
根据本发明的另一实施例,其中,所述更新所述检索词/标签关系表中的检索词/标签对进一步配置为:根据对所述文档的反馈,如果所述检索词/标签关系表未包括检索词与该文档包括的一标签之间的检索词/标签对,则建立相应的检索词/标签对;并且所述方法进一步包括:建立相应的检索词/标签/文档组合,并确定所建立的检索词/标签对的分值,确定所建立的检索词/标签/文档组合的权重。
根据本发明的一实施例,上述方法可以进一步包括,根据对所述文档的反馈,更新所述检索词/标签对的分值以及所述检索词/标签/文档组合的权重。其中,可以根据对所述文档的反馈次数,更新与所述检索词/标签对的分值以及所述检索词/标签/文档组合的权重。还可以根据用户的反馈值,如对于搜索的检索词或标签来说用户认为文档非常好、好、一般或差,来更新与被附加在所述文档上的标签相关的检索词/标签对的分值。
根据对所述文档的反馈,还可以更新与所述文档相关的所述预定的检索词/标签/文档组合的权重。其中,可以根据对所述文档的反馈次数、评分(1-100分)评价(非常好、好、一般或差)或评估(与其搜索的检索词和/或标签相关、不相关)等,更新与所述文档相关的所述预定的检索词/标签/文档组合的权重。
用户的反馈往往是基于用户对于文档内容的认知,因此,与标签相关的检索词/标签对的分值,检索词/标签/文档组合的权重,能够反映用户对于标签与文档的内容和语义之间的关联的认可。因此,使用检索词与标签之间的关系(KL关系)以及KL关系与文档之间的关系(KL-D关系),可以反映用户的搜索经验以及全体用户的智慧,进而帮助用户搜索到与输入的查询检索词的语义最为匹配的文档。通过反馈确定的分值高的检索词/标签对中的标签或权重值高的检索词/标签/文档组合中的标签,可以具有以下一个或多个特征:是一个关键词或关键词组;与文档相关联;是根据文档内容的分类描述。
根据本发明的一实施例,上述方法可以进一步包括:搜索具有所述检索词的文档;对所述文档进行等级排序进一步配置为根据预定的标签/文档组合的权重或检索词/文档组合的权重对所述文档进行等级排序。其中,对所述文档进行等级排序可以进一步配置为根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重或检索词/文档组合的权重对所述文档进行等级排序。其中,还可以根据对所述文档的反馈,更新所述检索词/文档组合的权重。
图2示出了根据本发明另一实施例的用于搜索文档的流程图。其中示出了一种用于搜索文档的方法。在步骤S210,接收用于搜索的检索词。S220查询与所述检索词相关的标签。在步骤S230,搜索具有所述检索词或具有所述标签中的至少一个标签的文档。其中,在步骤S230A,搜索具有所述检索词文档。将用户的查询检索词提交给搜索引擎,搜索引擎查找所有包含查询关键字的文档集合(集合A1)。在步骤S230B,搜索具有所述标签中的至少一个标签的文档。其中,可以通过将标签与附加在文档上的标签相匹配,来搜索具有所述标签中的至少一个标签的文档。将步骤220中得到的标签,搜索所有被标注了这些标签之一的文档集合(集合A2)。最后将集合A1、A2进行合并得到所有符合条件的文档集合(集合A)。
在步骤S240,对所述文档进行等级排序。其中,可以采用已有技术中对于文档进行等级排序的机制,例如因特网上流行的搜索引擎所采用的等级排序机制。还可以根据预定的标签/文档组合的权重,以及关键词/文档组合的权重对所述文档进行等级排序。关键词/文档组合包括一检索词和与该检索词相关联的文档、文档的标识符或文档的URL链接,其中该文档被附加了该标签,可以通过该检索词搜索到该文档。预定的标签/文档组合的权重,可以是通过已有的用户反馈预先确定。在步骤S250,发送对所述文档进行等级排序的结果。
在步骤S260,接收用户在浏览排序结果后对一文档进行的反馈。S270对用户反馈的文档查询该文档上标注的标签。可以对标签进行过滤,以便选出其中用于分类的标签。用于分类的标签,一般包括被附加在文档上用于对文档进行分类的一个或一组词汇或短语。例如,可以计算文档和文档上每个标签在语义上的相关程度,这个相关程度以数字值表示。同时预先设定一个阈值,如果相关性分值低于阈值,则可认为标签与它所标注的文档语义相关性很小或不相关,从而将语义上相关性低的标签过滤。
在步骤S280,根据用户反馈更新检索词/标签关系表。根据对所述文档的反馈,更新所述检索词/标签关系表,以便包括检索词与文档包括的标签之间的检索词/标签对。例如,建立其中未包括的检索词与文档包括的标签之间的检索词/标签对。从而可以在以后的搜索中扩大搜索范围。对于所述更新,还可以先过滤掉并非用于分类的标签,或者过滤掉与文档内容没有语义关系的标签。然后,对于该文档的用于分类的标签,如果所述检索词/标签关系表未包括检索词与其之间的检索词/标签对,则建立相应的检索词/标签对。
对文档的反馈反映到标签/文档组合的权重,相应地反映了该标签/文档之间的关联关系对用户查询的协助程度。这样,在扩大搜索范围之后,根据标签/文档组合的权重进行等级排序,将用户可能更认可的(有意义的)文档优先推荐给用户。
根据本发明的一实施例,上述方法可以进一步包括,根据对所述文档的反馈,更新所述标签/文档组合的权重。其中,可以根据对所述文档的反馈次数,更新所述标签/文档组合的权重。
图3示出了根据本发明另一实施例对文档进行排序的流程图。其中,对于通过标签搜索得到的多个文档,在步骤S310,找出与输入的搜索关键词和搜索出的文章匹配的检索词/标签对以及检索词/标签/文档组合。在步骤S320,查询检索词/标签关系表得到预定的检索词/标签对的分值。在步骤S330,查询检索词/标签关系表得到得到预定的检索词/标签/文档组合的权重。在步骤S340,根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对每个文档的排序分数。在步骤S350,根据每个文档的排序分数对搜索得到的文档进行排序。
图4示出了根据本发明一实施例用于更新检索词/标签关系表的流程图。在步骤S410,接收到用户对某一篇文档的反馈。在步骤S420,查询检索词/标签关系表,根据检索词和文档被附加的标签查找相应的检索词/标签对。如果未找到,则执行步骤S430;如果找到,则执行步骤S440。在步骤S430,如果所述检索词/标签关系表未包括检索词与该文档包括的一标签之间的检索词/标签对,则建立相应的检索词/标签对并确定其分值;并且建立相应的检索词/标签/文档组合并确定其权重。在步骤S440,根据对所述文档的反馈,更新所述检索词/标签对的分值。在步骤S450,使用步骤S420中的检索词/标签对,查找检索词/标签关系表中是否存在相应的检索词/标签/文档组合。如果未找到,则执行步骤S460;如果找到,则执行步骤S470。在步骤S460,如果检索词/标签关系表中不存在相应的检索词/标签/文档组合,则建立相应的检索词/标签/文档组合,并确定其权重。在步骤S470,根据对所述文档的反馈,更新所述检索词/标签/文档组合的权重。
所述检索词/标签对的分值可以反映检索词与标签的相关性;检索词/标签/文档组合的权重可以反映检索词/标签对与文档的相关性。
当用户对依据检索词所查询到的文档集合中的其中一篇文档(文档A)进行正面反馈,这一反馈行为反映了用户认为文档A的内容与他提交的检索词相关。那么可以认为与文档A有相近内容的其它文档也与用户提交的检索词具有相关性。由于用于分类的标签是文档内容的体现,其它文档如果与文档A有相同的一个或多个标签,那么这些文档与文档A在内容上是相近的,相同的标签越多,相近程度也就越强。因此,不仅可以维护检索词与文档组合的相关性权重,还可以维护检索词与标签的相关性分值。
例如,根据检索词OOM检索到的文档A、文档B和文档C。文档A与文档B具有5个相同的标签,文档A与文档C具有1个相同的标签。根据对所述文档A的反馈,更新检索词/标签/文档组合的权重。检索词/标签/文档组合的权重,直接反映了用户对通过检索词/标签对检索到该文档的认可。
根据对所述文档的反馈,更新检索词/标签对的分值,可以将用户的反馈间接反馈到其它具有相同标签的文档。具有相同标签越多的文档之间的相关性越大,内容可能越相近。通过这种反馈,具有相同标签越多的文档在以后通过该关键词搜索时,排序分数得到的提高越多。
根据反馈更新之后,在以后用户输入检索词OOM进行搜索后,文档A的排序分数提高最多,文档B的排序分数比文档C的排序分数提高的多,文档C的排序分数提高最少。
具体的说,根据本发明的一实施例,计算文档与检索词的匹配程度是根据检索词(如关键词)与文档上的各个语义标签的相关性分值以及检索词/标签对与文档的相关性权重进行计算。当用户对一篇文档(文档A)进行反馈时,对该检索词(如关键词)和文档A上的所有标签的相关性分值进行调整,这一调整就会影响到包含这些语义标签的其它文档与该检索词的相关性的计算。而且其它文档与文档A相同的标签越多,计算时,它与该检索词的相关性的也就越大。
采用这种方式,能够最大程度地利用用户一次反馈中的信息。因为不仅对用户直接反馈的文档与检索词的相关性进行了调整,通过检索词/标签对还调整了与用户直接反馈的文档具有相近内容的其他文档与检索词的相关性。
而如果仅仅更新检索词与文档组合的权重,是不能体现检索词与其他具有相近内容文档的相关性。因此,根据反馈更新检索词/标签对的分值以及所述检索词/标签/文档组合的权重,比仅仅更新检索词/文档组合的权重更好,也比仅仅更新检索词/标签/文档组合的权重更好。
以下通过具体示例,详细说明确定检索词/标签对的分值以及检索词/标签/文档组合的权重或检索词/文档组合的权重。并结合示例详细说明根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重或检索词/文档组合的权重对所述文档进行等级排序。
根据本发明的一实施例,检索词与标签之间的关系通过广大的使用者的持续不断的反馈建立的并不断进行调整。具有动态性,是群体智慧的结果。因此也更能接近语义和搜索意图的匹配。在计算用户查询检索词与文档相关程度时,可以以标签作为中介,并建立了检索词与标签的关系,及检索词/标签对(pair)与文档间的关系。
通过建立的这两个关系,可以帮助用户搜索到更多相关的文档。因为在进行搜索时不仅搜索含有用户查询检索词的文档及被标注了查询检索词标签的文档。还通过本发明建立的检索词与标签关系,获得与检索词相关的标签,并查询包含被标注了这些标签的文档。
通过建立的上述两个关系,对一个文档的一次反馈可以扩展为对其他具有相同标签的文档的反馈,使得用户反馈的效率更高。通过本发明建立的两个关系,用户对通过查询检索词搜索出的一篇文档的反馈,转化为了对查询检索词与标签关系的反馈,以及对检索词标签对(pair)与文档关系的反馈。那么不仅用户直接反馈的这篇文档与查询检索词的匹配程度能够被这次反馈更新,具有与这篇文档相同标签的更多文档与检索词的匹配程度也能同时被更新。这种方式大大提高了用户反馈的效率。
通过不断的反馈,关系库在不断的扩展,这种扩展是在用户的反馈中自发完成的,能过体现出群体智慧。可以接受用户的正向反馈,从而使文档的排名上升。也可以接受用户的负向反馈,从而使文档的排名下降。经过大量的正向反馈或负向反馈,能够显著提高文档的排序精度。
还可以将基于标签的搜索排序和基于文本的搜索排序进行融合,如果检索词和文档间没有标签并且被用户进行了正向或负向反馈,可以之间建立检索词到文档之间的关系,参与到整个的打分排序的计算中。具体的计算方法可以有多种。
假设有文档A、B、C、D、F,这五篇文档分别包含文本Key1、Key2、Key3,和标注在这五篇文档上的标签Tag1、Tag2、Tag3、Tag4,这些关系如下表所示。
网页 具有检索词(With Text) 标签(Tag) Page A(URL A) Key1(OOM) Tag1(OOM) Tag2(crash) Tag3(memory) Page B(URL B) Key2(Out of memory) Tag1(OOM) Tag 3(memory) Tag4(Out of memory) Page C(URL C) Key3(memory) Tag1(OOM) Tag4(Out of memory) Page D(URL D) Key2(Out of memory) Tag4(Out of memory) Page F(URL F) Key1(OOM) No Tag
可以使用数据库来存储检索词/标签对及其分值、检索词/标签/文档组合及其权重和检索词/文档组合及其权重。初始化的数据库如下。
检索词/标签关系表1
检索词/标签对 编号(Pair Number) 检索词→标签 (Docuterm to Tag) 分值(Score)
检索词/标签关系表2
检索词/标签对/文档组合 (Docuterm/Tag pair to page combination) 权重(weight)
检索词/标签关系表3
检索词(Docuterm) 文档(document) 权重(weight)
(1)第一次,对于用户1提交的检索词Key1(OOM),搜索引擎搜索文档,例如网页,得到如下搜索结果。
网页
Page A
Page F
…….
…….
…….
用户1浏览网页Page A和网页Page F,并对网页Page A提交了正反馈。这时,可以根据用户1的正反馈建立检索词/标签对,并为该检索词/标签对设置初始分值,例如分值f1(X)=X,其中X为正反馈次数。
通过用户对page A的反馈建立如下检索词与标签之间关系。检索词与标签之间的关系是通过广大的使用者的持续不断的反馈建立的并不断进行调整。因此也更能接近语义和搜索意图的匹配。
检索词/标签关系表1
检索词/标签对编号 (Pair Number) 检索词→标签 (Docuterm to Tag) 分值(Score) Pair 1 Key1→Tag 1(OOM) f1(1)=1 Pair 2 Key1→Tag 2(crash) f1(1)=1 Pair 3 Key1→Tag 3(memory) f1(1)=1
可以根据用户1的正反馈还可以建立检索词/标签/文档组合,并为检索词/标签/文档组合设置初始权重,例如权重f2(X)=X+1,其中X为正反馈次数。
检索词/标签关系表2
检索词/标签对/文档组合 (Docuterm/Tag pair to page combination) 权重(weight) Pair 1→Page A f2(1)=2 Pair 2→Page A f2(1)=2 Pair 3→Page A f2(1)=2
第二次,用户2提交检索词Key1(OOM),根据检索词/标签关系表1查询与所述检索词相关的标签,可以得到以下标签。
Tag1(OOM)
Tag2(crash)
Tag3(memory)
搜索具有所述检索词或具有所述标签中的至少一个标签的文档,得到如下搜索结果。这里可以看到,通过第一次的正向反馈,原本只可以搜到Page A和Page F,现在也可以搜到Page B和Page C了。通过标签作为中介,可以搜索到更多的相关的文档。
Page A
Page B
Page C
Page F
对所述文档进行等级排序。根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档进行等级排序。
根据排序可以了解,通过一次正向反馈,Page A提高了排名,并且与Page A具有相同标签较多的Page B也挺高了分数,排在了page C之前。通过标签的关联性,对一个文档的反馈可以进一步表现为对其他具有相同标签的文档的反馈。
例如,文档的排序分数可以采用与该文档相关的检索词/标签对的分值乘以与该文档相关的检索词/标签/文档组合权重。其中,对于一文档,如果仅有与该文档相关的检索词/标签对的分值,而没有与该文档相关的检索词/标签/文档组合权重,则将检索词/标签对的分值的总和(*权重默认值1)作为该文档的排序分数。
还可以根据与该文档相关的检索词/标签对的分值,以及与该文档相关的检索词/标签/文档组合权重,采用其它方式计算文档的排序分数,以便进行等级排序。
Page A:Score=1*2+1*2+1*2=6
Page B:Score=1+1=2
Page C:Score=1
Page F:Score=0
通过两个关系(检索词/标签对的分值,检索词/标签/文档组合的权重)的调节,被反馈的文档和具有更多相同标签的文档能够能到更多的排名提升。
只计算检索词与标签的关系带来的问题是对一个文档的反馈导致所有与这个文档具有相同标签的文档全部得到相同的提升。而只计算检索词-标签与文档之间的关系,则无法发挥标签的中介作用。
Page F:Score=0,是因为Page F上没有附加标签。对于没有被附加标签的文档(如Page F),可以通过检索词/文档组合的权重对该文档计算排序分数并进行等级排序。
根据排序分数进行排序,得到如下排序结果。
1.Page A
2.Page B
3.Page C
4.Page F
用户2浏览Page A,Page B或Page C,并输入对于Page B的正向反馈1次。根据该正向反馈,可以更新检索词/标签关系表(创建检索词/标签对或更新检索词/标签对的分值,创建检索词/标签/文档组合或更新检索词/标签/文档组合的权重),如下。通过不断的反馈,关系表可以不断的扩展,这种扩展是在用户的反馈中自发完成的,能过体现出群体智慧。
创建检索词/标签对或更新检索词/标签对的分值。
检索词/标签关系表1
检索词/标签对 编号(Pair Number) 检索词→标签 (Docuterm to Tag) 分值(Score) Pair 1 Key1→Tag 1(OOM) f1(2)=2 Pair 2 Key1→Tag 2(crash) f1(1)=1 Pair 3 Key1→Tag 3(memory) f1(2)=2 Pair 4 Key1→Tag 4(Out of memory) f1(1)=1
创建检索词/标签/文档组合或更新检索词/标签/文档组合的权重
检索词/标签关系表2
检索词/标签对/文档 组合(Docuterm/Tag pair to page combination) 权重(weight) Pair 1→Page A f2(1)=2 Pair 2→Page A f2(1)=2 Pair 3→Page A f2(1)=2 Pair 1→Page B f2(1)=2 Pair 3→Page B f2(1)=2 Pair 4→Page B f2(1)=2
第三次,接收用户3提交的检索词Key1(OOM),根据检索词/标签关系表1查询与所述检索词相关的标签,可以得到以下标签。
Tag1(OOM)
Tag2(cra sh)
Tag3(memory)
Tag4(Out of memory)
搜索具有上述检索词或具有上述标签中的至少一个标签的文档,得到如下搜索结果。这里可以看到,通过两次的正向反馈,原本只可以搜到Page A和Page F,现在也可以搜到Page B、Page C和Page D了。通过标签作为中介,可以搜索到更多的相关的文档。
Page A
Page B
Page C
Page D
Page F
对搜索到的文档进行等级排序,根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档计算排序分数(如下),并根据排序分数进行等级排序。
Page A:Score=2*2+1*2+2*2=10
Page B:Score=2*2+2*2+1*2=10
Page C:Score=2+1=3
Page D:Score=1
Page F:Score=0
排序结果
1.Page A,Page B
2.Page C
3.Page D
4.Page F
可以注意到,通过对PageA和PageB的各一次反馈,PageA和PageB都排在前面且具有相同的排名分数。反映出对于排序具有的合理性。
用户3浏览Page D,并输入对于Page D的正向反馈1次。根据该正向反馈,可以更新检索词/标签关系表(创建检索词/标签对或更新检索词/标签对的分值,创建检索词/标签/文档组合或更新检索词/标签/文档组合的权重),如下。
检索词/标签关系表1
检索词/标签对 编号(Pair Number) 检索词→标签 (Docuterm to Tag) 分值(Score) Pair 1 Key1→Tag1(OOM) f1(2)=2 Pair 2 Key1→Tag2(crash) f1(1)=1 Pair 3 Key1→Tag3(memory) f1(2)=2 Pair 4 Key1→Tag4(Out of memory) f1(2)=2
检索词/标签关系表2
检索词/标签对/文档组 合(Docuterm/Tag pair to page combination) 权重(weight) Pair 1→Page A f2(1)=2 Pair 2→Page A f2(1)=2 Pair 3→Page A f2(1)=2 Pair 1→Page B f2(1)=2 Pair 3→Page B f2(1)=2 Pair 4→Page B f2(1)=2 Pair 4→Page D f2(1)=2
第四次,接收用户4提交的检索词Key1(OOM),根据检索词/标签关系表1查询与所述检索词相关的标签,可以得到以下标签。
Tag1(OOM)
Tag2(crash)
Tag3(memory)
Tag4(Out of memory)
搜索具有上述检索词或具有上述标签中的至少一个标签的文档,得到如下搜索结果。
Page A
Page B
Page C
Page D
Page F
对搜索到的文档进行等级排序,根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档计算排序分数(如下),并根据排序分数进行等级排序。
对PageD的正反馈使得PageB的排名分数同时有了提高,是由于PageB,PageC上包含PageD上的标签,在检索词和标签关系上对PageB和PageC产生了正向作用。
Page A:Score=10
Page B:Score=12
Page C:Score=4
Page D:Score=4
Page F:Score=0
排序结果
1.Page B
2.Page A
3.Page C,Page D
4.Page F
用户4浏览Page D,并输入对于Page D的正向反馈1次。根据该正向反馈,可以更新检索词/标签关系表(创建检索词/标签对或更新检索词/标签对的分值,创建检索词/标签/文档组合或更新检索词/标签/文档组合的权重),如下。
检索词/标签关系表1
检索词/标签对 编号(Pair Number) 检索词→标签 (Docuterm to Tag) 分值(Score) Pair 1 Key1→Tag 1(OOM) f1(2)=2 Pair 2 Key1→Tag 2(crash) f1(1)=1 Pair 3 Key1→Tag 3(memory) f1(2)=2 Pair 4 Key1→Tag 4(Out of memory) f1(3)=3
检索词/标签关系表2
检索词/标签对/文档组合 (Docuterm/Tag pair to page combination) 权重(weight) Pair 1→Page A f2(1)=2 Pair 2→Page A f2(1)=2 Pair 3→Page A f2(1)=2 Pair 1→Page B f2(1)=2 Pair 3→Page B f2(1)=2 Pair 4→Page B f2(1)=2 Pair 4→Page D f2(2)=3
第五次,接收用户4提交的检索词Key1(OOM),根据检索词/标签关系表1查询与所述检索词相关的标签,可以得到以下标签。
Tag 1(OOM)
Tag 2(crash)
Tag 3(memory)
Tag 4(Out of memory)
搜索具有上述检索词或具有上述标签中的至少一个标签的文档,得到如下搜索结果。
Page A
Page B
Page C
Page D
Page F
对搜索到的文档进行等级排序,根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档计算排序分数(如下),并根据排序分数进行等级排序。
Page A:Score=10
Page B:Score=14
Page C:Score=5
Page D:Score=9
Page F:Score=0
排序结果
1.Page B
2.Page A
3.Page D
4.Page C
5.Page F
可以看到,对Page D的正向反馈可以使Page D的得分有较快的增长,具体的增长分数以具体排序算法而定。这里只是一个具体的示例。
如果,收到对于Page C的正向反馈100次。更新检索词/标签关系表如下。
检索词/标签关系表1
检索词/标签对 编号(Pair Number) 检索词(标签 (Docuterm to Tag) 分值(Score) Pair 1 Key1→Tag 1(OOM) f1(102)=102 Pair 2 Key1→Tag 2(crash) f1(1)=1 Pair 3 Key 1→Tag3(memory) f1(2)=2 Pair 4 Key1→Tag 4(Out of memory) f1(103)=103
检索词/标签关系表2
检索词/标签对编号 (Pair Number) 检索词→标签 (Docuterm to Tag) Pair 1→Page A f2(1)=2 Pair 2→Page A f2(1)=2 Pair 3→Page A f2(1)=2 Pair 1→Page B f2(1)=2 Pair 3→Page B f2(1)=2 Pair 4→Page B f2(1)=2 Pair 4→Page D f2(2)=3 Pair 1→Page C f2(100)=101 Pair 4→Page C f2(100)=101
在随后的搜索中,接收用户6提交的检索词Key1(OOM),根据检索词/标签关系表1查询与所述检索词相关的标签,可以得到以下标签。
Tag 1(OOM)
Tag 2(crash)
Tag 3(memory)
Tag 4(Out of memory)
搜索具有上述检索词或具有上述标签中的至少一个标签的文档,得到如下搜索结果。
Page A
Page B
Page C
Page D
Page F
对搜索到的文档进行等级排序,根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档计算排序分数(如下),并根据排序分数进行等级排序。
Page A:Score=210
Page B:Score=414
Page C:Score=20705
Page D:Score=309
Page F:Score=0
排序结果
1.Page C
2.Page B
3.Page D
4.Page A
5.Page F
如果,收到对于Page D的正向反馈200次。更新检索词/标签关系表如下。
检索词/标签关系表1
检索词/标签对 编号(Pair Number) 检索词→标签 (Docuterm to Tag) 分值(Score) Pair 1 Key1→Tag 1(OOM) f1(102)=102 Pair 2 Key1→Tag 2 (crash) f1(1)=1 Pair 3 Key1→Tag 3 (memory) f1(2)=2 Pair 4 Key1→Tag 4 (Out of memory) f1(303)=303
检索词/标签关系表2
检索词/标签对 编号(Pair Number) 检索词→标签 (Docuterm to Tag) Pair 1→Page A f2(1)=2 Pair 2→Page A f2(1)=2 Pair 3→Page A f2(1)=2 Pair 1→Page B f2(1)=2 Pair 3→Page B f2(1)=2 Pair 4→Page B f2(1)=2
检索词/标签对 编号(Pair Number) 检索词→标签 (Docuterm to Tag) Pair 4→Page D f2(202)=203 Pair 1→Page C f2(100)=101 Pair 4→Page C f2(100)=101
在随后的搜索中,接收用户7提交的检索词Key1(OOM),根据检索词/标签关系表1查询与所述检索词相关的标签,可以得到以下标签。
Tag 1(OOM)
Tag 2(crash)
Tag 3(memory)
Tag 4(Out of memory)
搜索具有上述检索词或具有上述标签中的至少一个标签的文档,得到如下搜索结果。
Page A
Page B
Page C
Page D
Page F
对搜索到的文档进行等级排序,根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档计算排序分数(如下),并根据排序分数进行等级排序。可以看到大量的正向反馈后,能够根据文档标签之间的关系扩展搜索结果,并且排序结果能够反映用户对于文档的评价。本发明的实施例正是基于大量的用户反馈,来提供符合多数用户需要的文档。
Page A:Score=210
Page B:Score=814
Page C:Score=40705
Page D:Score=61509
排序结果
1.Page D
2.Page C
3.Page B
4.Page A
5.Page F
本领域的技术人员可以理解,也可以根据用户的负向反馈(负面评价),使检索词/标签对的分值以及检索词/标签/文档组合的权重减小,从而影响相应的文档的等级排序。例如,收到pageD 10个负向反馈,可以更新检索词/标签关系表如下。
检索词/标签关系表1
检索词/标签对编号 (Pair Number) 检索词→标签 (Docuterm to Tag) 分值(Score) Pair 1 Key1→Tag 1(OOM) f1(102)=102 Pair 2 Key1→Tag 2(crash) f1(1)=1 Pair 3 Key1→Tag3(memory) f1(2)=2 Pair 4 Key1→Tag 4(Out of memory) f1(303)=303-10=293
检索词/标签关系表2
检索词/标签对/文档组合 (Docuterm/Tag pair to page combination) 权重(weight) Pair 1→Page A f2(1)=2 Pair 2→Page A f2(1)=2 Pair 3→Page A f2(1)=2 Pair 1→Page B f2(1)=2 Pair 3→Page B f2(1)=2 Pair 4→Page B f2(1)=2 Pair 4→Page D f2(202)=203-10=193 Pair 1→Page C f2(100)=101 Pair 4→Page C f2(100)=101
接收用户8提交的检索词Key1(OOM),根据检索词/标签关系表1查询与所述检索词相关的标签,可以得到以下标签。
Tag 1(OOM)
Tag 2(crash)
Tag 3(memory)
Tag 4(Out of memory)
搜索具有上述检索词或具有上述标签中的至少一个标签的文档,得到如下搜索结果。
Page A
Page B
Page C
Page D
Page F
对搜索到的文档进行等级排序,根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档计算排序分数(如下),并根据排序分数进行等级排序。
Page A:Score=92×1-9×1-8×1=75
Page B:Score=814-20=994
Page C:Score=40705-1010=39695
Page D:Score=293×193=56549(原:61509)
可见PageD的得分下降最快,这正是由于两个关系相互作用的结果.
排序结果
1.Page D
2.Page C
3.Page B
4.Page A
5.Page F
图5示出了根据本发明一实施例的用于搜索文档的系统框图。其中示出了一种用于搜索文档的系统500,其包括以下多个装置。接收装置510,用于接收用于搜索的检索词。查询装置520,用于查询与所述检索词相关的标签。搜索装置530,用于搜索具有所述标签中的至少一个标签的文档。排序装置540,用于对所述文档进行等级排序。发送装置550,用于发送对所述文档进行等级排序的结果。
根据本发明的一实施例,所述系统500可以进一步包括:一用于存储检索词/标签关系表的一关系库;以及一更新装置,用于更新所述检索词/标签关系表中的检索词/标签对。其中所述查询装置可以进一步配置为:根据检索词/标签关系表,查询与所述检索词相关的标签;所述更新装置可以进一步配置为:根据对所述文档的反馈,更新所述检索词/标签关系表中的检索词/标签对。
根据本发明的一实施例,所述系统500中所述排序装置540可以进一步配置为根据预定的标签/文档组合的权重对所述文档进行等级排序。所述系统500可以进一步包括一更新装置,用于根据对所述文档的反馈次数,更新所述标签/文档组合的权重。
根据本发明的一实施例,所述系统500中所述排序装置540可以进一步配置为根据预定的检索词/标签对的分值以及预定的检索词/标签/文档组合的权重对所述文档进行等级排序。
根据本发明的一实施例,其中,所述至少一个标签包括被附加在文档上用于对文档进行分类的一个或一组词汇或短语。
根据本发明的一实施例,所述系统500中,所述更新装置可以进一步配置为:根据对所述文档的反馈,如果所述检索词/标签关系表未包括检索词与该文档包括的一标签之间的检索词/标签对,则建立相应的检索词/标签对,并确定所建立的检索词/标签对的分值;并且建立相应的检索词/标签/文档组合,并确定所建立的检索词/标签/文档组合的权重。
根据本发明的一实施例,所述系统500中,所述更新装置可以进一步配置为:根据对所述文档的反馈,更新所述检索词/标签对的分值以及所述检索词/标签/文档组合的权重。
本发明还提供了一种存储介质或信号载体,其中包括用于执行根据本发明的方法的指令。
附图中的流程图和框图,图示了按照本发明实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
所属技术领域的技术人员知道,本发明可以体现为系统、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质(medium ofexpression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言——诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
以上结合优选法方案对本发明进行了详细的描述,但是可以理解,以上实施例仅用于说明而非限定本发明。本领域的技术人员可以对本发明的所示方案进行修改而不脱离本发明的范围和精神。