CN101535945A - 全文查询和搜索系统及其使用方法 - Google Patents

全文查询和搜索系统及其使用方法 Download PDF

Info

Publication number
CN101535945A
CN101535945A CNA2007800232204A CN200780023220A CN101535945A CN 101535945 A CN101535945 A CN 101535945A CN A2007800232204 A CNA2007800232204 A CN A2007800232204A CN 200780023220 A CN200780023220 A CN 200780023220A CN 101535945 A CN101535945 A CN 101535945A
Authority
CN
China
Prior art keywords
information
inquiry
word
information word
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2007800232204A
Other languages
English (en)
Inventor
元华·汤姆·唐
胡前进
永红·格蕾丝·杨
陈春暖
梅明华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
INFOVELL Inc
Original Assignee
INFOVELL Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by INFOVELL Inc filed Critical INFOVELL Inc
Publication of CN101535945A publication Critical patent/CN101535945A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明粗略地描述了一种用以搜索数据库的数据库搜索方法,其中根据命中文件和查询的共有信息元的信息数值对命中文件进行评级。该信息数值可以是Shannon信息分值,或是另一种显示了共有信息元的信息值的数值。一个信息元可以是一个单词或其它符号,或是多个单词的短语,而且可以互相重叠。查询中的信息元可以用同义词代替,代替的信息元的信息数值会根据预设的同义词相似性数值被降低。间接搜索方法是这样被描述的:根据共有信息元的信息数值重新对来自其它搜索引擎的命中文件评级。可以搜索结构化的和完全非结构化的数据库,其中命中文件被动态划界。命中文件可以基于信息数值加权的距离空间中的距离被聚类。

Description

全文查询和搜索系统及其使用方法
技术领域
本发明涉及信息,尤其涉及用以搜索信息的方法和系统。
背景技术
用于文本内容数据库的传统搜索方法多数是以关键词为基础的。即,一个文本数据库与和它相应的字典首先被建立。该数据库的一个逆索引文件从该字典被推导出来,在该字典中每个关键词的出现和它们在数据库中的位置都被记录下来。当一个含有关键词的查询被输入时,查找就在逆索引中进行,在数据库中含有该关键词的所有条目都被返回。针对一个包含多个关键词的搜索,查找将进行多次,接着通过“联合”操作找到包含所有关键词(或者部分关键词)的文件。在高级搜索类型中,用户也能够具体指定要排除的单词,其中出现被具体指定的单词的条目将被排除在结果之外。
对一个或少量有限个的关键词来说,这种搜索方法的一个主要问题就是“大量命中”。当数据库很大,或媒体变得不均匀时,这一方法尤其麻烦。因此,传统的搜索引擎限制了数据库的内容和大小,也限制了关键词的选择。在万维网搜索中,我们面对非常巨大的数据库和非常不均匀的数据内容。这些局限必须被消除。YAHOO首先尝试使用分类并对数据内容施加限制,同时针对用户选择的每个特定的分类限制数据库的大小。这种方法是非常劳动密集型的,并且对在众多的分类和子分类间浏览的用户施加了很多负担。
GOOGLE是通过评定每个条目的质量来解决“大量命中”的问题的。对一个网页数据库来说,一个条目的质量能通过链接数量(有多少其他网页引用了该网站)和该网站的受欢迎度(该网页有多少游客)等来计算得出。对商业广告的数据库来说,质量也可以通过支付的金额来确定。互联网用户因而不再需要承受遍历多层的分类或关键词的限制的负担。使用任何关键词,GOOGLE的搜索引擎返回一个由它的算法所“客观地评级”的结果列表。GOOGLE搜索引擎的局限性在于:
●限制了搜索单词的数量:关键词的数量受限(通常少于10个单词)。这些单词的选择会对结果产生很大影响。在许多场合,可能很难用少量关键词来完整地定义一个有关的主题。用户经常需要面对选择少量单词来搜索的窘境。用户应该背负选择关键词的负担么?如果他们需要背负,那他们应该如何选择?
●在许多场合,根据质量对“命中”的评级是不相关的。举例来说,一个集合了专利、法律案例、内部邮件或者任何文本数据库的数据库,其中并没有允许对其进行质量评定的“链接数量”。“链接数量”仅针对网络内容存在。除了因特网之外的所有其它文本数据库都没有链接数量。我们也需要适用于它们的搜索引擎。
●“大量命中”的问题仍然存在。它并未得到解决,只是被隐藏了!用户仍然需要面对极大数量的不相关结果。有些时候评级是起作用的,但在多数时候,它却将最想要的结果深埋了。最糟糕的是,它将外部质量评估强加于新手使用者。用户得到的结果因链接数量而偏离了。它们不是真正“客观的”。
因此,在解决“大量命中”的问题时,如果你对GOOGLE的解决方法不满意,你还能做什么?继GOOGLE之后信息检索该演化往哪个方向?
以下将鉴别和讨论信息搜索的传统途径。
1、美国专利:5,265,065-Turtle。通过替换自然语言中的域特定溯源短语产生搜索查询,以在数据库上进行信息检索的方法和装置。
该专利提出一种排除查询中的常用单词(停止单词),并使用溯源以减少查询的复杂性的方法。这些方法现在在本领域内是常用做法。我们也使用停止单词和溯源。但是我们更进了一步。我们的信息元的概念可以视作是停止单词概念的扩展。即,引入了所有信息元的分布函数。我们可以选择在用户希望的任何阶段排除常用单词。我们所定义的“共同”单词不再是固定的给定集合,而是一个依赖于用户选择的阈值的变量。
2、美国专利:5,745,602-Chen。从文件中自动选择多单词关键短语的方法。
该专利提供了一种自动生成关键短语的方法。该方法首先将文件文本分割成不含有可以开始和结束的停止单词的多单词短语。然后,选择最频繁的短语作为关键词短语。相对于我们的自动信息元识别方法,Chen的方法更简单。在我们的方法里采用了一些关键词的选择方法。首先,在选择针对全文查询的关键词时,我们选择一定数量的“稀少”单词。这样就提供了在数据库中识别相关文件的最佳微分器。在第二种情况下,我们有一种用于短语识别或者复杂信息元识别的自动方法。举例来说,为了识别一个两个单词的信息元,我们将观测到的其在数据库中的出现频率与预期频率(由每个单词的给定频率分布计算得到)比较。如果观测频率比预期频率高很多,那么该两个单词就是一个信息元(短语)。
3、美国专利:5,765,150-Burrows。统计学上进行信息评级的方法。
在进行网页集合的搜索时,该专利为单个网页分配了一个分值。该分值是以匹配单词的数量和这些单词的权数为基础的累积数值。确定一个单词权数w的一种方法是:W=logP-logN,其中P为被索引的页面数量,而N为含有将被加权的特定单词的页面数量。在查询中被指定的共同出现单词对一个被评定质量的网页的总分值或者权数W的贡献可以忽视,而包含稀少单词的页面则会得到一个相对较高的分值。Burrows搜索被局限为关键词搜索。它采用在一定程度上与我们的评分系统相关的加权方案处理关键词。但是区别是明显的。当我们使用整个数据库的总分布函数来分配频率(权数)时,Burrows使用的权数就更有启发性。权数的本质:N/P不是频率。在Burrows的专利中有着信息理论想法,但是相对于我们的方法来说该方法是不完整的。我们采用分布函数和与其相关的Shannon信息来计算“权数”。
4、美国专利:5,864,845-Voorhees。利用多个搜索引擎查询的聚类融合策略来促进万维网搜索。
因为搜索引擎处理查询的方法不同,也因为它们覆盖的网络范围不同,在不同的引擎给定相同的查询语句常常会得到不同的结果。将相同的查询提交给多个搜索引擎就能提高总搜索效率。该专利提出了一种促进网络搜索的自动化方法。对一个单一查询来说,它将来自不同搜索引擎的结果组合以产生一张单一列表,该列表比任何单个搜索引擎建立的各自的列表都要准确。最终组合的排序方法有点奇怪。在保持来自相同搜索引擎的评级顺序不变的前提下,该方法通过随机死亡将来自不同搜索引擎的结果混合。我们在我们的申请中提出了一种非直接的搜索引擎技术。正如我们的目的是成为第一个因特网上的全文查询搜索引擎,我们采用了许多不同的方法。唯一与该专利相同就是搜索引擎的结果都来自不同的搜索引擎。区别有以下几点:1)我们采用样本分布函数,这是Voorhees完全没有采用的概念。2)我们既将全文也将关键词搜索作为查询问题来寻址,而Voorhees仅适用于关键词搜索;2)一旦备选结果从各个搜索引擎生成,我们有统一的评级。我们完全忽略返回的原始顺序,而是采用我们自己的评级系统。
5、美国专利:6,065,003-Sedluk。找到一个数据条目的最接近匹配的系统和方法。
该专利提出了一种搜索系统,以生成和搜索与搜索条目匹配的寻找列表。该系统能在包含单个和多个单词的条目的智能生成的寻找列表中智能寻找到该包含单个或多个单词的搜索条目的最接近匹配。它允许搜索条目包含拼写错误、字母转换或者单词转换。该专利是一个适用于简单单词匹配的特定搜索引擎。它有能力修复微小的用户查询错误,然后在备选列表库中寻找最佳匹配。正如我们更致力于复杂查询,Sedluk与我们不同,他的专利致力于简单查询。我们不采用自动拼写修复。实际上,在某些场合,拼写错误和语法错误包含最高的信息量,因此它们提供了最高的Shannon信息量。在例如寻找抄袭文件、源代码的版权侵害等时,这些错误具有特殊的益处。
6、期刊出版物:Karen S.Jones.1972.检索词特殊性的统计说明及其检索应用,期刊文献,卷28,11-21页。
这是最初引入逆文件频率(IDF)概念的文章。公式为log2N-log2n+1,其中N为集合中的文件总数,而n为出现检索词的文件的数量。因此,n<=N。这基于以下直觉:在许多文件中出现的查询检索词不是一个好的鉴别器,因此应该给它相对于其它在文件中出现的词更少的权数。IDF概念和Shannon信息函数都是采用log函数来提供基于单词频率的衡量。但是在IDF中频率的定义与我们的Shannon信息量版本中的定义是完全不同的。频率的分母是单词(或者信息元)的总数,Jones的分母是数据库中条目的总数。这种不同是非常本质性的。我们在专利中导出的所有理论,如分布式计算或者数据库搜索都不能由IDF函数导出。IDF和Shannon信息函数间的关联从不明朗。
7、期刊出版物:Stephen Robertson.2004.理解逆文件频率:对IDF的理论论证,期刊文献,卷60,503-520页。
该文章是对IDF历史、公知的TF*IDF方案(其中TF是检索词频率数值,而IDF是逆文件频率数值)以及针对与Shannon信息理论的和解所做的理论努力的很好的回顾。它揭示了发展至今的信息理论方法是有问题的,但是也有在信息检索的传统概率模型中对IDF和TF*IDF的很好的辩护。Robertson博士认识到了调解TF*IDF方法和Shannon信息理论的困难。我们认为这两个概念是有区别的。我们完全放弃TF*IDF加权,而是单独基于Shannon信息函数建立我们的理论基础。所以我们的理论是与Shannon信息完全一致的。我们的系统能在数据库环境中衡量不同文章的相似性,然而TF*IDF方法仅适合计算数量非常有限的单词或短语。我们的方法基于简单而有力的假定,而TF*IDF的理论基础却很难建立。这一简单抽象的结果就是信息元衡量理论在以下方面的许多深入的应用,如分布式计算、聚类分析、搜索非结构化和结构化数据。可以应用信息元衡量理论来研究需要考虑文本顺序的搜索问题,然而IF*IDF方法却不能解决这类问题。
指出以上方法的上述和其它缺点,使得本发明在本领域内有了教学的需要。
同样处于申请过程中的申请No.11/259,468使得信息搜索领域的状态得到了显著进步。
本发明扩展了申请过程中的申请的教学内容以解决这些和其它问题,并且解决了本领域内的其它需要。
发明内容
概略地说,本发明的一个方面为,一种数据库搜索方法按照由命中文件和查询共有的信息元的信息数值来评定命中文件。该信息数值是一种重要性数值,但不包括例如对引入的引用数量的重要性数值,即一个la Google。然而,一项信息数值尝试表明命中文件的信息值。该信息数值可以是Shannon信息分值,或者其它表明了共有信息元信息值的数值。信息元可以是单词或其它符号,或者多单词短语,并且可以相互重叠。可以对查询中的信息元进行同义词替换,被替换的信息元的信息数值将根据预先设定的同义词相似性的衡量被降低。间接搜索方法是这样来描述的,根据共有的信息元的信息数值对来自其它搜索引擎的命中文件重新评级。随着命中文件被动态划界,可以搜索结构化的和完全非结构化的数据库。命中文件可以基于一根据信息数值加权的距离空间中的距离来聚类。
本发明的另一个实施例提供一个搜索引擎,用于以文本为基础的数据库。该搜索引擎包含一种算法,该算法使用一个查询来搜索、检索、以及评定出现于至少一个数据库的文本、单词、短语、信息元、或诸如此类。该搜索引擎使用以查询和命中文件之间的共有单词或信息元得出的Shannon信息分值为基础的评级,以计算出的Shannon信息分值p-值为基础,或者以单词或信息元频率、共有单词或信息元的百分比本身为基础的p-值来进行评级。
本发明的另一个实施例也提供一个以文本为基础的搜索引擎,该引擎包含一种算法,该算法包含如下步骤:1)用于将查询文件中的第一个文本与文本数据库中的第二个文本作比较的办法;2)用于识别两者之间共有的信息元的办法;并且3)用于计算累积分值或以下各分值的办法,包括利用信息元频率分布来衡量信息内容的重叠次数的分值,以及从共有信息元的累积Shannon信息、共有信息元的组合p-值、重叠单词的数量、和重叠单词的百分比的集合中挑选出的分值。
在一个具体实施例中,本发明提供一个文本信息的计算机化存储和检索系统用于搜索和评级,该系统包括:用于输入和储存数据以作为一个数据库的装置;用于显示数据的装置;一个用于执行文本自动分析的可编程的中央处理单元,其中分析的是文本,该文本从包含所查询的全文、所查询的网页的集合中挑选出,根据查询和命中文件之间共有单词得出Shannon信息分值来评定命中文件,评级以p-值,计算出的Shannon信息分值为基础或p-值以单词频率为基础,该单词频率已经被为了专门的数据库而直接计算出或被来自至少一个的外部来源所评估,共有信息元的百分比本身,查询和命中文件之间共有信息元得出的Shannon信息分值,共有信息元的p-值,共有信息元的百分比自身,计算出的Shannon信息分值或者以信息元频率为基础的p-值,该信息元频率已经被为了专门的数据库而直接计算出或被来自至少一个的外部来源所评估,并且其中文本包含至少一个单词。在可供选择的实施例中,该文本包含众多的单词。在另一个具体实施例中,查询包含的文本的单词数从含有1-14,15-20,20-40,40-60,60-80,80-100,100-200,200-300,300-500,500-750,750-1000,1000-2000,2000-4000,4000-7500,7500-10000,10000-20000,20000-40000,以及超过40000个单词的集合中挑选出。在进一步的实施例中,文本包含至少一个短语。在进一步的实施例中,文本可以是被加密的。
在另一个实施例中,该系统所包含的在此以及在彼公开的系统自动分析进一步允许在查询文件中重复的信息元和以更高的值来安置重复的信息元。在更优的实施例中,自动分析评级以p-值为基础,该p-值是命中文件对查询所共有的信息元的可能性或几率的量度,并且其中的p-值是以数据库中信息元的分布来计算的,并且可选择地,在此p-值是以数据库中信息元的估计分布来计算的。在一个可供选择的实施例中,命中文件的自动评级是以Shannon信息分值为基础的,在此Shannon信息分值是查询和命中文件共有的信息元的累积Shannon信息。在另一个可供选择的实施例中,命中文件的自动评级是以百分比本身为基础的,在此百分比本身是2*(共有的信息元)/查询和命中文件中总信息元的比率。
在此公开的系统的另一个实施例中,计算查询和命中文件中的信息元是在词干溯源之前执行的。可供选择的,计算查询和命中文件中的信息元是在词干溯源之后执行的。在另一个可供选择中,计算查询和命中文件中的信息元是在移走普通单词之前执行的。在另一可供选择中,计算查询和命中文件中的信息元是在移走普通单词之后执行的。
在此公开的系统的进一步实施例中,对命中文件评级是以累积分值为基础的,该累积分值从含有p-值、Shannon信息分值、以及百分比本身的集合中挑选出。在一个更优的实施例中,自动分析分别为每个匹配的单词分配一个固定的分值和为每个匹配的短语分配一个固定的分值。
在该系统的另一个实施例中,该算法进一步包含办法用于在显示器上以命中文件呈现查询文件,其中让共有的文本被标示。
在另一实施例中数据库进一步包含一个同义词和短语列表。
在本系统的另一实施例中,该算法允许用户向数据库输入同义词,该同义词与相关的查询联合并且包括在分析中。在另一实施例中,该算法接受文本作为查询而不要求关键词,在此文本从含有摘要、标题、句子、论文、文章以及其中的任何部分的集合中挑选出。在可供选择的实施例中,该算法接受文本作为查询而不要求关键词,在此文本从含有网页、网页URL地址、网页的重要区段以及其中的任何部分的集合中挑选出。
在本发明的一个实施例中,该算法分析一个单词,其中该单词可在自然语言中找到。在更优的实施中,该语言从含有汉语、法语、日语、德语、英语、爱尔兰语、俄语、西班牙语、意大利语、葡萄牙语、希腊语、波兰语、捷克语、斯洛伐克语、塞卜-克罗特语、罗马尼亚语、阿尔巴尼亚语、土耳其语、希伯来语、阿拉伯语、印度语、乌都语、泰语、togalog语、玻利尼西亚语、韩语、越南语、老挝语、kmer语、缅甸语、印度尼西亚语、瑞士语、挪威语、丹麦语、冰岛语、芬兰语、匈牙利语、以及此类的集合中挑选出。
本发明的另一个实施例中,算法分析一个单词,其中该单词可在电脑语言中找到。在更优的实施例中,该语言从含有C/C++/C#,JAVA,SQL,PERL,PHP,以及此类的集合中挑选出。
本发明的另一实施例提供一个来源于原始文本数据库的处理过的文本数据库,该处理过的文本数据库所有的文本从含有过滤出普通单词的文本,和用词干溯源的办法归并起来的、有同样词根的单词,一个生成的含有单词和自动识别的短语的信息元列表,一个生成的频率分布或每个单词的估计频率,以及与每个信息元相联系的从频率分布中计算出的Shannon信息的集合中挑选出。
在此公开的本系统的另一实施例中,可编程的中央处理单元进一步包含一个算法用于屏蔽和忽略数据库中很可能与查询无关的文本。在更优的实施例中,该屏蔽算法进一步包含倒转索引,查找该索引,针对该数据库的查询可以很快识别在数据库中包含与该查询相关的特定单词的某些条目。
本发明的另一实施例提供一个搜索引擎方法用于搜索和评定文本,该方法包含如下步骤:1)提供如在此所公开的计算机化的储存和检索系统;2)在可编程的中央处理单元中安装以文本为基础的搜索引擎;3)输入文本,该文本从含有正文、全文、或关键词的集合中挑选出;该方法在数据库中产生一个经搜索和评级的文本。
本发明的另一实施例提供一个方法用于生成一个列表,该列表含有短语列表,在给定的文本数据库中他们的分布频率,以及他们相联系的Shannon信息分值,该方法包含如下步骤:1)提供在此公开的系统;2)提供一个阈值频率用于识别固定长度的两个单词的连续词组,在数据库中作为一个短语;3)提供区别阈值频率用于识别固定长度的3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,以及20个单词的连续词组作为数据库中的短语;4)识别每个被识别出的短语在文本数据库中的频率值;5)识别至少一个信息元;并且6)有根据地调整频率表,以使得当新的固定长度的短语被识别后,一个已被识别的信息元中的分量信息元不会被多次计算,由此产生一个列表,含有短语、他们的分布频率、以及与他们关联的Shannon信息分值。
本发明的另一实施例提供一个方法用于比较两个句子以发现它们之间的相似性并且提供相似性分值,其中比较以两个或多个项目为基础,这些项目从含有单词频率、短语频率、单词和短语的顺序、插入和删除处罚的集合中挑选出,并且利用代替矩阵来计算相似性分值,其中该代替矩阵提供一个不同单词和短语之间的相似性分值。
本发明的另一实施例提供一个文本查询搜索引擎包含装置用于使用在此公开的方法,用全文作为查询的搜索引擎或者用网页作为查询的搜索引擎。
本发明的另一实施例提供一个搜索引擎包含在此公开的系统、在此公开的数据库、在此公开的搜索引擎、以及用户接口,进一步包含一个命中,该命中从含有根据网络的受欢迎度评级、引用分值评级、支付的广告费的数目评级的命中文件的集合中挑选出。在一个实施例中,算法进一步包含装置用于重新评定来自其它搜索引擎的搜索结果,该重新评级使用为数据库文本的Shannon信息或为重叠单词的Shannon信息。在另一实施例中,该算法进一步包含装置用于重新评定来自其它搜索引擎的搜索结果,该重新评级使用一个p-值,它以数据库中的信息元分布频率为基础计算出或者以重叠信息元的分布频率为基础计算出。
本发明的另一实施例提供一个方法用于为查询和命中文件中重复的信息元计算Shannon信息,该方法包含使用等式S=min(n,m)*Sw计算值S的步骤,其中Sw是信息元的Shannon信息,在查询中一个共有的信息元次数是m,在命中文件中一个共有的信息元次数是n。
本发明的另一实施例提供一个方法用于评定广告,该方法使用在此公开的全文搜索引擎、在此公开的搜索引擎方法、Shannon信息分值、并且该方法用于计算上面公开的Shannon信息,该方法进一步包含创建一个广告数据库的步骤。在一个实施例中,用于评定广告的该方法进一步包含向用户输出评级的步骤,用户通过从用户接口或电子邮件公告来收到。
本发明的另一个实施例提供一个方法用于向使用评定广告的方法的顾客收费,并且这是以计算广告中的单词和由顾客点击进入广告商的网址的连接次数为基础的。
本发明的另一个实施例提供一个方法用于重新评定来自第二搜索引擎的输出,该方法进一步包含如下步骤:1)使用来自第二搜索引擎的命中文件作为查询;并且2)使用权利要求26的方法生成一个重新评级的命中文件,其中搜索的数据库局限于已由第二搜索引擎返回的所有命中文件。
本发明的另一实施例提供一个用户接口,该用户接口进一步包含第一虚拟按钮设置在至少一个命中文件的虚拟邻接中,并且其中当第一虚拟按钮被用户点击,搜索引擎使用该命中文件作为查询再次搜索整个数据库产生一个以该命中文件作为查询基础的新的结果页。在另一个可供选择的实施例中,用户接口进一步包含第二虚拟按钮设置在至少一个命中文件的虚拟邻接中,并且其中当第二虚拟按钮被用户点击,搜索引擎使用该点击作为查询来重新评级所有命中文件的集合产生一个以该命中文件为查询基础的新的结果页。在一个实施例中,该用户接口进一步包含一个与网络浏览器相联合的搜索功能和设置在网络浏览器的头部的第三虚拟按钮。在另一个实施例中,第三虚拟按钮被标志为“搜索因特网”以使当第三虚拟按钮被用户点击后,搜索引擎将使用显示的页面作为查询来搜索整个因特网数据库。
本发明的另一个实施例提供一台电脑包含在此公开的系统和用户接口,其中该算法进一步包含使用由用户选择的查询来搜索因特网的步骤。
本发明的另一个实施例提供一个方法用于压缩一个以文本为基础的含有唯一标识符的数据库,该方法包含如下步骤:1)产生一个包含字符串的表格;2)给表格中每个字符串设置一个标识符(ID),其中给表格中的每个字符串的ID都是根据文本在数据库中的使用空间设置的,使用空间通过利用等式freq(字符串)*length(字符串)来计算;并且3)在上升顺序中用列表中的各ID来代替表格中的文本,该步骤产生一个压缩数据库。在该方法的更优实施例中,该ID是一个整数从含有二进制数和整数级数的集合中挑选出。在另一个可供选择的实施例中,本方法进一步包含使用zip压缩和解压软件程序的压缩。本发明的另一个实施例提供一个方法用于解压压缩的数据库,该方法包含如下步骤:1)用相关的字符串来代替列表中的各ID,并且2)在表格中列出字符串,该步骤产生一个解压的数据库。
本发明的另一个实施例提供一个全文查询和搜索方法包含在此公开的压缩方法,该压缩方法进一步包含如下步骤:1)在硬盘中保存数据库;并且2)将磁盘内容装载进内存中。在另一个具体实施中,全文查询和搜索方法进一步含有使用各种相似矩阵来代替本身映射的步骤,其中相似矩阵定义信息元和他们的同义词,并且进一步有选择地提供一个0和1之间的相似系数,其中0表示没有相似性,1表示相同。
在另一个具体实施例中用于计算Shannon信息的方法进一步包含使用Shannon信息聚成文本聚类的步骤。在一个实施例中,文本的格式从含有返回自搜索的一个数据库和一个列表的集合中挑选出。
本发明的另一个实施例提供在此公开的系统和用于计算Shannon信息的方法进一步使用Shannon信息关键词为基础的查询搜索单词少于10个,其中算法包含恒量从含有阻尼系数恒量α,其中0<=α<=1,和阻尼位置系数恒量β,其中0<=β<=1的集合中挑选出,并且其中总分值是共有信息元的一个函数,总查询信息元数目K,和在命中文件每个信息元的频率,以及α和β。在一个实施例中,显示的命中文件进一步包含多个区段,它们的分割是根据从含有一个阈值特征的一组中选出的特征,其中该区段有一个符合查询的命中文件超过了该阈值,一个分离的距离特征,其中有一个显著的单词将两区段分离,还有一个锚状特征处在或接近于该区段的开始和结尾,其中该锚是命中文件单词。
在一个可供选择的实施例中,在此公开的系统和用于计算Shannon信息的方法被用于筛选垃圾邮件。
在另一个可供选择的实施例中,在此公开的系统和用于计算Shannon信息的方法被用于审查重要的电子邮件。
随着信息量的增加,对准确信息检索的需要也增加了。目前的搜索引擎多数是以关键词和布尔逻辑为基础的。如果数据库巨大,对多数查询来说,这些基于关键词的搜索引擎会根据不同种类的评级返回大量记录。我们提出了一个新的搜索概念,称为“全文查询搜索”,或者“内容搜索”,或者“长文本搜索”。我们的搜索不仅仅局限于一些关键词的匹配,而是衡量查询和数据库中所有条目之间的相似性,并且在与查询显著相似的窗口或区段中,根据一全局相似性分值或一当地相似性分值对它们评级。在信息元的水平上进行比较,该信息元可以(在不同实施例中)构成单词、短语,或者由单词和短语表达的概念。可以从外部的单词/短语字典输入信息元,并且/或者可以由自动算法生成信息元。相似性分值(全局的和当地的)是通过对所有匹配或者相似的信息元的Shannon信息量求和而计算得到的。与现有技术相比,我们不限制查询关键词的数量,不限制数据库内容除非它是符合原文的,不限制语言或者语义学理解,并且它可以处理大容量数据库。最重要的是,我们的搜索引擎客观地计算查询和其命中文件之间的信息关联性,并且根据该信息关联性对命中文件评级。
在本申请中我们公开了自动化信息元识别的方法、当地相似性分值的计算方法、采用相似矩阵以衡量相关信息元的方法,以及从分布式数据库生成相似性分值的方法。我们定义一距离函数用以衡量信息空间里的差异。可以采用该距离函数将相关条目的集合聚类,特别是来自一查询的输出结果。举个例子,我们展示了我们如何将我们的搜索引擎应用于中文数据库搜索的例子。我们也提供了分布式计算和数据库更新的方法。
随着信息量的增加,对准确信息检索的需要也增加了。目前的搜索引擎多数是以关键词和Boolean逻辑为基础的。如果数据库巨大,对多数查询来说,这些基于关键词的搜索引擎会根据不同种类的评级返回大量记录。我们提出了一个新的搜索概念,称为“全文查询搜素”,或者“内容搜索”,或者“长文本搜索”。我们的搜索不仅仅局限于一些关键词的匹配,而是衡量查询和数据库中所有条目之间的相似性,并且在与查询显著相似的窗口或区段中,根据一全局相似性分值或一当地相似性分值对它们评级。在信息元的水平上进行比较,该信息元可以(在不同实施例中)被定义为单词、短语,或者由单词和短语表达的概念。可以从外部的单词/短语字典输入信息元,或者/并且可以由自动算法生成信息元。相似性分值(全局的和当地的)是通过对所有匹配或者相似的信息元的Shannon信息量求和而计算得到的。与现有技术相比,我们不限制查询关键词的数量,不限制数据库内容除非它是符合原文的,不限制语言或者语义学理解,并且它可以处理大容量数据库。最重要的是,我们的搜索引擎客观地计算查询和其命中文件之间的信息关联性,并且根据该信息关联性对命中文件评级。
在本专利申请中,我们将首先回顾正如同样处于申请过程中的申请所述的用于信息处理的信息元衡量理论的关键部分。然后我们提供一张该信息元衡量理论的潜在应用的列表。一些是基本的应用,如科学文献搜素或者现有技术的专利搜索、筛选垃圾邮件、通过对比候选人简历和职业描述来识别职业候选人。其它应用就更先进了。这包含例如一个间接因特网搜索引擎;适用于非结构化数据的搜索引擎,如客户聚类中的数据分布;适用于结构化数据的搜索引擎,如相关数据库;适用于排序的信息元数据的搜索引擎;以及搜索概念。最终我们将应用扩展到非文本数据内容。
附图说明
结合附图回顾对本发明具体实施例的以下描述,本发明的这些和其它方面以及特征对本领域技术人员来说是显而易见的。
图1说明命中文件是如何根据查询和命中文件中重叠的信息元进行评级的。
图2是一个简明流程图,显示本发明的一个具体实施例是如何使用的。
图3是一个简明流程图,显示本发明的另一个具体实施例是如何使用的。
图4说明本发明的一个具体实施例,显示查询输入的三种不同方法。
图5说明一个具体输出显示列出的命中文件,它们是使用图4的查询文本段识别出。
图6说明查询文本段和命中文本段之间的比较,显示共有的单词,该比较可以通过图5的输出显示中的链接进入。
图7说明一个经评估的SI分值表,比较查询文本段中的各个单词和命中文本段中的相同单词,该表格可以通过图5的输出显示中链接进入。
图8说明由百分比本身挑选的在图5中表明的具体输出显示列表。
图9说明本发明的一个可供选择的具体实施例显示三种不同的查询输入方法,其中输出显示一个由SI分值所挑选的非交互的命中文件列表。
图10说明本发明的一个可替代的具体实施例,显示一种用于输入一个URL地址来查询的方法,该URL地址随后被从词法上分析并被用作查询文本段。
图11说明使用图10的具体URL的输出。
图12说明本发明的一个可供选择的具体实施例,显示一种用于输入一个被用作查询文本段的关键词串来查询的方法。
图13说明使用图12的各个具体关键词的输出。
图14是进入我们的全文查询搜索引擎的用户登陆页面的屏幕截图。用户可以创建他自己的帐号,并且如果他忘记密码的话还能找回其密码;
图15A是在Medline数据库中关键词查询的屏幕截图。在主页(这里不可见)的顶部用户可以选择他想要搜索的数据库。在本例中,用户选择了Medline数据库。他输入一些关键词以进行搜索。在页面的底部有到US-PTO、Medline等等的链接。这些链接将用户引至外部数据库的主查询页面;
图15B是关键词查询的摘要响应页面的屏幕截图。左边的“Primary_id”列有一个链接(称为左链接,或者标示链接)。它指向标示页面(下面的图15C)。中间链接是外部数据链接(在本例中为Medline中的数据源),以及“SI_score”列,(称为右链接,或者信息元列表链接)是匹配的信息元和其信息量的列表。最后一列显示单词匹配的百分比;
图15C是左链接显示有查询和命中文件中的匹配关键词的屏幕截图。在页面的顶部(这里不可见)列有查询单词。该匹配关键词用红色标示;
图15D是显示信息元列表链接,也就是右链接的屏幕截图。它列出了所有信息元(在本例中为关键词)、它们的信息量、在查询和命中文件中的频率,以及其每次出现对Shannon信息分值的贡献有多少。由于关键词搜索中的信息阻尼,每次出现的SI分值是不同的;
图16A是在另一搜索中显示全文查询的屏幕截图。这里用户输入的是从发表的文章的摘要提取的全文。这次用户选择搜索US-PTO专利数据库;
图16B是显示针对US-PTO数据库(包含已公布的申请和已授权的专利)的全文查询搜索的摘要页面的屏幕截图。第一列包含primary_id或者专利/申请的id,并且具有一个被称为左链接、标示链接或者定位链接的链接。第二列是标题和专利/申请的附加相关数据,还有一个链接至US-PTO摘要页面的链接。第三列是Shannon信息分值,以及一个链接至信息元列表页面的链接。最后一列是百分比本身列;
图16C是左链接或者定位链接的屏幕截图,显示了针对命中文件的查询文本的定位。匹配的信息元被标示。用红色标示的文本指示了一个匹配单词;并且用蓝色标示的文本指示了一个匹配短语;
图16D是说明中间链接页面或者标题链接页面的屏幕截图。它指向数据的外部源,在本例中是在Genomics中出现的一篇文章;
图16E是说明信息元列表链接或者右链接的屏幕截图。它列出所有查询与命中文件间的匹配的信息元。每个信息元的信息量、它们在查询和命中文件中的频率以及在最终SI分值中它们对Shannon信息总量的贡献;
图17A是说明采用当地定位的中文BLOG数据库进行搜索的例子的屏幕截图。这是查询页面;
图17B是说明17A中的查询的摘要返回页面的屏幕截图。其左边包含3列:当地分值、相同信息元的百分比以及最右边一列的全局分值;
图17C是说明显示最高分值窗口的定位页面的屏幕截图。红色字符表示一个字符匹配;蓝色字符表示短语;
图17D是说明来自当地分值的右链接的屏幕截图,显示最高分值窗口中的匹配信息元;
图17E是显示相同搜索中的第二高分值窗口的屏幕截图。这里是来自左链接的该HSW的定位页面;
图17F是显示来自HSW2的匹配信息元的屏幕截图。该页面是通过点击“当地分值”处的右链接得到的;
图17G是显示来自最右边链接的信息元列表的屏幕截图,显示匹配的信息元和它们对全局分值的贡献;
图18A是说明信息函数d(A,B)的图表;
图18B是说明数据点形心的图表;
图18C是说明数据点中等级关系的简要树图;
图19说明了数据库的分布函数。
图20A是根据实施例在我们的指示器中的主要步骤的简述示意图。
图20B是根据实施例识别一个包含n个单词的信息元的子步骤的示意图。
图20C是显示根据实施例怎样生成逆索引文件(aka逆索引文件)的示意图。
图21A根据实施例说明了搜索引擎的总架构。
图21B根据实施例显示了搜索引擎的数据流程图。
图22A根据实施例说明了不同的信息元解析程序规则的伪代码。
图22B根据实施例说明了信息元选择和分类规则中的伪代码。
图22C根据实施例说明了将查询信息元中的单词分类为3个层次的伪代码。
图22D根据实施例说明了生成备选和计算命中文件分值的伪代码。
图23A是根据实施例的用户登陆页面的屏幕截图。
图23B是根据实施例的主查询页面的屏幕截图。
图23C是根据实施例的“搜索选择”链接的屏幕截图。
图23D是根据实施例的一个样本结果摘要页面的屏幕截图。
图23E是根据实施例的单个命中文件条目的标示页面的屏幕截图。
图24根据实施例说明了联合搜索的总架构。
图25A是根据实施例的用于Boolean式搜索的用户接口的屏幕截图。
图25B是根据实施例的适用于非结构化数据的Boolean式查询接口的屏幕截图。
图25C是根据实施例的适用于文本领域的结构化数据的Boolean式查询接口的屏幕截图。
图25D是根据实施例的USPTO高级查询接口的屏幕截图。
图26是根据实施例的搜索结果聚类的屏幕截图。
图27根据实施例说明了数据库索引“系统”、搜索“系统”以及用户“系统”,所有系统是通过网络连接在一起的。
图28根据实施例说明分布式计算机环境的简要示意图。
图29是根据实施例的来源于基于信息元-距离的独立聚类的输出的屏幕截图。
图30是根据实施例的聚类的图形显示及其关系的屏幕截图。
具体实施方式
现在将根据附图对本发明作详细的描述,这些附图作为本发明的示例被提供,以使本领域技术人员能够实施本发明。显然地,以下附图和例子并不意味着将本发明局限于一单一实施例中,通过互换一些或所有所述或所例举的要素,其它实施例也是可行的。而且,本发明的某些要素可以用已知的组件部分或者全部实现,这里将仅针对这些已知组件中对本发明的理解来说不可缺少的那些部分进行描述,而为了不掩盖本发明将省略对这些已知组件的其它部分的详细描述。在本说明书中,一个仅显示了一个单一组件的实施例不应该被认为是对本发明的局限;更确切地说,除非在本说明书中出现明确相反的陈述,否则本发明则将覆盖包含多个相同组件的其它实施例,反之亦然。而且,本说明书或权利要求中的任何术语均不具有非公知的或特殊的含义,除非申请人对此做了明确的阐述。再有,本发明将覆盖这里以示例方式引用的已知组件的现有和将来可能出现的等同替代物。
正如在此和在所附权利要求中使用的,单数形式的“a”、“an”,以及“the”都包括复数的参照引用,除非上下文中有明显相反的表述。因此,例如,对“一个短语”的参照引用包括多个这样的短语,并且对“一种算法”的参照引用意指对一个或更多的算法及其等价物的参照引用,以此类推。
定义
数据库和它的条目:这里一个数据库是一个以文本为基础的个体文本文件的集合。每个文本文件是一个条目。每个条目有一个唯一的基本的关键词(条目的名字)。我们期望条目长度的变化不要过大。正如这里所使用的,术语“数据库”并不意指任何结构单体,并且可以包含,例如,子数据库,而这些子数据库本身也属于“数据库”。
查询:一个含有如数据库中相同种类的信息的文本文件。一些对用户有特殊意义的东西。它也能成为数据库中的条目。
命中文件:一个命中文件是数据库中的一个文本文件条目,在该数据库中查询与命中文件在用词上的重叠被计算为重要的。重要性是与如下面公开的一个分值或众多分值相联系的。当重叠单词的集合分值超出某个特定阈值,则该文件就被认为是命中文件。计算分值的方法有很多,例如,记录重叠单词的数量;使用与重叠单词相联系的计算出的Shannon信息;计算p值,该值显示命中文件与查询的相联系有多大可能性是由偶然因素导致的。正如这里所使用的,根据实施例,一“命中文件”可以构成一个完整文件或者条目,或者它可以构成一被动态划界的区段。该检索词文件、条目以及区段在正被搜索的数据库的上下文中被定义。
命中文件分值:用于记录命中文件相对于查询的质量的一种衡量(即一种度量)。衡量该命中文件质量有很多的方法,取决于该问题如何被看待或被考虑。在最简单的场景中该分值被定义为两个文本间重叠单词的数量。这样,重叠的单词越多,分值就越高。通过引用在其他来源和/或数据库中出现的命中文件的评级是另一种方式。该方法在关键词搜索中使用最佳,该搜索方法中100%的查询相匹配是足够的,并且根据关键词的文件子评级是以每个网址的重要性为基础的。在上面提到的情况中重要性被定义为“来自外部地址的该地址的引用”。本发明的搜索引擎中,下面的命中文件分值能被本发明所使用:百分比本身,共有单词和短语的数量,p值,以及Shannon信息。其他参数也能被衡量以获得一个分值,并且这些在本技术领域是公知的。
一个数据库的单词分布:对一个文本数据库,存在一个总的唯一的单词计数:N。每个单词w有它的频率f(w),意味着其在数据库中出现的次数。在数据库中单词的总数是Tw=Sif(wi),i=1,......,N,其中Si代表所有i的总和。对所有单词w(在此是一个矢量)的频率,F(w),被表示为数据库的分布。该构思来自概率理论。该单词分布可以被用于自动移走冗余短语。
完全相同单词的计数:如果一个单词在查询和命中文件中都出现一次,很容易计算出它是两个文件共有的共同单词。本发明试图计算在查询和命中文件中出现都超过一次的单词。一个实施例将遵循如下的规则:对查询中(出现m次)和命中文件中(出现n次)的相同单词,数量计算为:min(m,n),m和n中的较小者。
百分比本身:一个用于衡量两个文件(查询和命中文件)之间相似性的分值。在一个具体实施例中,其是查询文件和命中文件之间单词相同的百分比。百分比本身被定义为:(2*共有单词的数量)/(查询的单词总数+命中文件的单词总数)。对于查询和命中文件中相同的单词,我们遵循在项目6中的规则。通常,分值越高,两个条目间的相关性越高。如果查询和命中文件完全相同,百分比本身=100%。
p-值:给定数据库的分布函数F(w),在查询和命中文件中共有单词的出现完全由偶然因素导致的可能性。该p-值使用精密的概率理论来计算,但有些困难。作为第一等级的近似,我们将使用p=pi p(wi),其中pi是对于在命中文件和查询中的共有单词遍历所有i的乘积,p(wi)是每个单词的概率,p(wi)=f(wi)/Tw。真实的p-值是与该数量线性联系的,但有一个倍数因子,该因子与查询、命中文件以及数据库的大小相联系。
一个单词的Shannon信息:在更复杂的场景中,该分值被定义为重叠单词的累积Shannon信息,在此Shannon信息被定义为-log2(f/Tw),其中f是该单词的频率,该单词在数据库中出现的数量,以及Tw是数据库中单词的总数。
短语:代表在一个固定的连续的顺序中的单词列表,并且通过一个算法而被从一个文本和/或数据库中挑选出,该算法决定其在数据库中出现的频率(单词分布)。
信息元:是一个与在查询和命中文件中的单词、短语和/或文本相联系的最基本的信息单元。在数据库中的该单词、短语和/或文本被分配一个单词分布频率值,如果该频率值高于一个预先定义的频率,则该单词、短语和/或文本成为一个信息元。该预先定义的频率能因数据库的不同而有区别,并且能够以不同内容的数据库为基础,例如,一个基因数据库的内容是不同于一个中文文学数据库的内容的,或诸如此类。为不同数据库所预先决定的频率可以是简化的,并且在一个频率表中列出。该表格能由用户自由的获得或者是支付一定的费用后获取。信息元的分布频率被用于生成Shannon信息和p值。如果查询和命中文件有一个重叠和/或类似的信息元频率,则该命中文件被分配一个命中文件分值,该值将命中文件排列进或置顶于输出列表。在一些情况中,术语“单词”与术语“信息元”是同义词;在其他情况中术语“短语”与术语“信息元”是同义词。这里所用的术语“信息元”仅指其一般含义,并且任何具体实施例均可限制其支持的信息元种类。另外,即使在一个实施例中,允许的信息元种类也可以根据不同的步骤而不同。在不同实施例中,支持的信息元可以被限制成短语,或者可被限制成一个或多个符号的连接序列,或者甚至可被限制成仅包含个别符号。在一个实施例中,信息元可以相互重叠(在命中文件中或者在查询中或者在两者中都有),然而在另一个实施例中则要求信息元相互区别。这里所用的术语“重叠”是指两个信息元中的一个部分或者全部被包含在另一个中。
一篇文章的或两篇文章之间共有单词的Shannon熵和信息:
假设X是一个在数列x={x1,...,xn}中离散的随机的变量,概率p(x)=Pr(X=x)。X,H(X)的熵被定义为:
H(X)=-Sip(xi)log2p(xi),
其中Si定义所有的i的总和。公式0log20=0在定义中被采用。该对数通常采用以2为底数。当应用于文本搜索问题,该X是我们的文章,或两篇文章之间共有的单词(每个单词都有来自字典的概率),该概率可以是在数据库中的单词频率或是估计频率。文本(或两文本中的交集)中的信息:I(X)=-Silog2(xi)。
这里所用的术语“符号”,被认为是实施例中的一个基本元素。在一个实施例中,自然语言(例如英语)中的一个单词就是一个符号。在另一个实施例中,一个符号就是一个中文字符。在另一个实施例中,一个符号和计算机语言解析程序所认为的符号是一致的。在又一个实施例中,一个符号就是一个由密文表示的单词。其它变化对用户而言是显而易见的。在这里的多数实施例中,数据库所描述的是文本且符号就是单词,并且除非上下文中做了相反的要求,否则在任何使用了术语“文本”或“单词”之处,都可以存在这样的实施例,在这些实施例中:一种不同种类的数据库内容取代了“文本”,或一种不同种类的符号取代了“单词”。
这里所述的命中文件和查询所“共有的”信息元不要求在两者之中完全相同;该检索词可以允许一定的灵活性,如同义词、相关单词、错误拼写、可替代的单词形式以及任何其它在实施例中被认为是等同替代的变化。它还包含通过这里所述的查询扩展步骤加到查询中去的信息元。
有时信息数值在这里也被叫做“选择性数值”。
这里所用的数据库可被分为一个或一个以上“条目”,该条目可被进一步分为一个或一个以上“单元”。在一个实施例中数据库是结构化的,正如在相关数据库环境中,一个条目可与一表格中的一行相应,而一个“单元”可与表格中的一行列组合相应。在数据库部分结构化的环境中,如一个文件集合,则一个条目相应于一个文件;如果文件没有被进一步再次细分,则单元与条目一样范围广泛。在数据库完全非结构化的环境中,如未划界文本,则整个数据库构成一单个条目和一单个单元。
这里所用的近似值和估算值将精确值作为一个特例包含在内。也就是说,一个产生精确结果的公式或过程被认为包含在“接近”至或“估算”得结果的公式或者过程的集合里。
这里所用的术语“系统”不意味着任何结构单体,它可以包含,比方说,子系统。
这里所用的术语“网络”不意味着任何结构单体,它可以包含,比方说,子网络、局域网、广域网和因特网。
在这里,如果,只要x<y就有g(x)>=g(y),则函数g(x)是“单调非增”或者“单调递减”函数,即,它逆转了序列。如果,只要x<y就有g(x)>g(y),则该函数g(x)就是“严格单调递减”函数。这里其他地方所用的计算Shannon信息分值的负对数函数就是单调非增函数的一个例子。
全局相似性搜索引擎的简述
我们对搜索引擎技术提出一个新的方法,我们称为“全局相似性搜索”。取代试图逐个与关键词匹配,我们从另一个角度来考察搜索问题:全局的角度。在此,与一个或两个的关键词匹配不再是必不可少。关键在于查询与它的命中文件之间整体相似性。相似性数值是以Shannon信息熵为基础的,一个用于衡量每个单词或短语的信息量的概念。
1)对单词的数量不作限制。事实上,用户被鼓励写下任何所想查到的。查询中的单词越多越好。这样,在本发明的搜索引擎中,查询可能是一些关键词,一个摘要,一个段落,一个全文文章,或者是一个网页。换句话说,搜索引擎将允许“全文查询”,其中查询并不局限于一些单词,而可以是一个文本文件的完整内容。用户被鼓励指定他们查找的内容。他们的细节越多,他们能检索到的信息越精确。一个用户不需要再承受挑选关键词的负担。
2)对数据库的内容不作限制,不局限于互联网。当搜索引擎不再依赖于连接数量,该技术也不再受数据库类型的限制,只要其以文本为基础。这样,它可以是任何的文本内容,如硬盘文件,电子邮件,科技文献,法律文献,或诸如此类。它也是独立于语言的。
3)巨大的数据库尺寸是件好事。在全局相似性搜索中,如果用户能够指定其所查找的信息,命中文件的数量通常是非常有限的。查询越特定,返回的命中文件越少。数据库巨大的尺寸事实上对本发明是件好事,因为它找到用户想要的记录的可能性越大。在以关键词为基础的搜索中,大型的数据库尺寸是一个负面因素,因为含有极少关键词的记录数量通常非常的大。
4)无语言障碍。该技术应用于任何语言(甚至是外星语言如果我们某天接收到他们)。该搜索引擎是以信息理论为基础的,而不是语义学。它不要求理解内容。该搜索引擎能毫不费力地适应世界上存在的任何语言。
5)最重要的,用户想要的就是用户所得到的,并且返回的命中文件是不存在偏差的。在此介绍一个新的计分系统,以Shannon信息理论为基础。例如,单词“the”和短语“搜索引擎”载有不同量的信息。每个单词和短语的信息量对它所在的数据库是内在的。该命中文件根据查询和命中文件之间重叠单词和短语的信息量来评级。以此方式,在数据库中与查询最相关的条目通常被期待最有可能取得最高分值。该评级是单纯地以信息科学理论为基础的,并且与连接数量,网页受欢迎度,或广告费无关。这样,新的评级是真正客观的。
我们改善用户搜索经验的观点非常有别于其他的如由Yahoo或Google提供的搜索引擎。传统的搜索引擎,包括Yahoo和Google,更加关注一个单词,或一个简短的单词或短语列表,而我们是解决更大型的含有许多单词和短语的文本问题。这样,我们呈现一个完全不同的发现和评定命中文件的方式。评定含有所有查询单词的命中文件并非首要,但在该情况下仍然可被执行,因为这在长查询中很少出现,即查询含有很多单词或众多短语。在有许多命中文件的情况下,它们都含有查询单词,我们推荐用户通过提供更多的描述来重新定义他们的查询。这使得本发明的搜索引擎更好地过滤掉非相关的命中文件。
我们主要关注相对于查询具有不同重叠的命中文件的评级方法。他们应如何得到评级?在此提供的解决方案植根于用于交流的Shannon所发展的“信息论”。Shannon的信息论思想被应用于给定的离散分布的文本数据库。每个单词或短语的信息量是由它在数据库中的频率决定的。我们使用两篇文章之间的共有单词和短语中的信息总量来衡量一个命中文件的相关性。在整个数据库中的条目都能以此方式评级,最相关的条目拥有最高的分值。
独立于语言的技术起源于计算生物学
本发明的搜索引擎是独立于语言的。它可以应用于任何语言,包括非人类语言,如基因序列数据库。它与语义学研究无关。大多数技术首先发展于为建立基因序列数据库的计算生物学中。我们引入Shannon信息概念,简单地将其应用于文本数据库搜索问题。基因数据库搜索是一项成熟的技术,已经由许多科学家经过25年的发展。它是完成人类基因排序和发现~30000个人类基因的主要技术之一。
在计算生物学中,一个典型的排序搜索问题如下:给定一个蛋白质数据库protDB,和一个查询蛋白质序列protQ,在protDB中找到与protQ相关的所有序列,并且根据它们与protQ相关度将它们进行评级。将该问题转换为一个文本的数据库背景:给定一个文本数据库textDB,和一个查询文本textQ,在textDB中找到与textQ相联系的所有条目,根据它们与textQ的相近度将它们进行评级。该计算生物学问题是经精确定义的,并且解决方案能被精确地而非模棱两可地通过使用各种算法(例如Smith-Waterman算法)而找到。我们的镜像文本数据库搜索问题也有一个精确的数学说明和解决方案。
对任何给定的文本数据库,不考虑它的语言或数据内容,本发明的搜索引擎将自动地建立一个单词和短语的字典,并且给每个单词和短语分配Shannon信息量。这样,一个查询有它的信息量;在数据库中的一个条目有它的信息量;并且数据库有它的总信息量。每个数据库条目与查询的相关度是由命中文件和查询之间的重叠单词和短语中的信息总量来衡量的。这样,如果一个查询和一个条目没有重叠的单词/短语,那分值将为0。如果数据库包含查询本身,它将得到最高分值的可能。输出成为一个命中文件列表,根据它们与查询的信息相关性来评级。提供一个查询和每个命中文件之间的定位,其中所有共有的单词和短语能由鲜明的颜色标示;并且每个重叠单词/短语的Shannon信息量能被列出。在此为评级使用的算法是定量的,精确的,完全客观的。
语言可以为任何格式并且可以是一个自然语言,例如但不局限于:汉语、法语、日语、德语、英语、爱尔兰语、俄语、西班牙语、意大利语、葡萄牙语、希腊语、波兰语、捷克语、斯洛伐克语、塞卜-克罗特语、罗马尼亚语、阿尔巴尼亚语、土耳其语、希伯来语、阿拉伯语、印度语、乌都语、泰语、togalog语、玻利尼西亚语、韩语、越南语、老挝语、kmer语、缅甸语、印度尼西亚语、瑞士语、挪威语、丹麦语、冰岛语、芬兰语、匈牙利语。该语言可以是计算机语言,例如但不局限于C/C++/C#、JAVA、SQL、PERL、和PHP。进一步地,语言可以被编码并能在数据库中被找到以及被用作一个查询。在一个编码的语言情况中,使用本发明不需要知道内容的含义。
单词可以为任何格式,包括字母,数字,二进制码,符号,文字,象形文字,以及诸如此类,包括那些存在但尚未为人所知道的单词。
定义一个唯一的衡量矩阵
典型的现有技术中命中文件和查询要求共有完全相同的单词/短语。这称为完全匹配,或“本身映射”。但在本发明的搜索引擎中无此需要。在一个实践中,我们允许用户来定义同义词的表格。这些有同义词的单词/短语查询将扩展到搜索数据库中的同义词。在另一个实践中,我们允许用户通过下载各种“相似矩阵”来执行“真正的相似”。这些相似矩阵提供具有类似意思的单词列表,并且在它们之间分配一个相似分值。例如,单词“相似”与“相似”有100%的分值,但与“相同”之间可能有50%的分值。这种“相似矩阵”的来源可以来自使用统计学或者来自各种字典。在不同领域工作的人们可能更喜欢使用一个特定的“相似矩阵”。定义“相似矩阵”在我们的研究中是一个积极的领域。
建立数据库和字典
条目被解析为其所包含的单词,并且通过一个过滤器以便:1)移走无用的普通单词如“a”,“the”,“of”,等,并且2)使用字根将具有相似意思的单词合并为一个唯一的单词,如“history”和“historical”,“evolution”和“evolutionary”等。所有含有相同字根的单词合并为一个唯一的单词。印刷上的错误,罕见单词,和/或非单词可能被排除,取决于数据库和搜索引擎的使用。
数据库是由被解析的条目组成的。一个字典是为数据库建造的,其中数据库中出现的所有单词都被收集。该字典也包含每个单词的信息频率。该单词频率随着数据库的扩展而经常更新。该数据库也经常通过新条目进行更新。如果一个新单词在字典中未发现,那么它将被输入进字典,频率等于1。数据库中每个单词的信息内容根据-log2(x)被计算出,其中x是分布频率(该单词的频率除以在字典中所有单词总的频率)。该整个单词表格及其针对一个数据库的相关频率被称为“频率分布”。
在数据库中每个条目在该空间巨大的字典中被压缩为和/或转换为一个矢量。对特定应用的条目能被进一步简化。例如,如果在一个条目中仅一个单词的“出现”或“未出现”是用户所渴望评估的,该相关的条目可以被压缩为一个‘1’和‘0’值的记录流。这样,一篇文章被压缩为一个矢量。另一个可选的方案是同时记录单词的频率,即一个单词出现的次数也被记录下。这样,如果“history”在文章中出现十次,它将在矢量的相关列中由值‘10’所代表。该列矢量可以压缩为一个经挑选的,相互关联的列表,其中仅单词的顺序号和它的频率被记录下。
计算Shannon信息分值
每个条目有它们自己的Shannon信息分值,该分值是对含有的单词所有Shannon信息(SI)的摘要。在比较两个条目时,两个条目之间的所有共有的单词首先被识别。对每个共有单词的Shannon信息以被计算出的每个单词的Shannon信息和该单词在查询和命中文件中的重复次数为基础。如果一个单词在查询中出现‘m’次,在命中中出现‘n’次,则与该单词相联系的SI是:SI_total(w)=min(n,m)*SI(w)。
另一种计算重复单词的SI(w)的方法是使用阻尼,意味着当它第二,第三,...次出现时,计算的信息量将减少到某个比例。例如,如果一个单词重复‘n’次,阻尼将以如下方法计算:SI_total(w)=Si(α**(i-1))*SI(w)
其中α是一个恒量,称为阻尼系数;Si是所有i的总和,0<i<=n,0<=α<=1。当α=0时,它变为SI(w),即100%阻尼,当α=1时它变为n*SI(w),即没有阻尼。该参数可以由用户在用户接口进行设置。阻尼在以关键词为基础的搜索中特别有用,这时含有更多的关键词的条目比含有极少关键词但重复多次的条目更受欢迎。
在关键词搜索的情况中,我们引入另一个参数,称为阻尼位置参数,0<=β<=1。β被用于平衡每个关键词的相对重要性,当关键词在一个命中文件中出现多次时。β被用于对重复单词分配一个暂时的Shannon-Info。如果我们有K单词,我们可以在SI(int(β*K))中对第一次重复的词设置SI,其中SI(i)代表对i单词的Shannon-Info。
在关键词搜索中,这两个参数(α,β)应该同时使用。例如,使α=0.75,β=0.75。在该例中,圆括号中的数目是对每个单词的模拟的SI值。如果一个搜索结果是TAFA(20)Tang(18)secreted(12)hormone(9)protein(5),那么,当TAFA第二次出现时,它的SI将是0.75*SI(hormone)=0.75*9。如果TAFA第三次出现,它将是0.75*0.75*9。现在,让我们假设TAFA总共出现3次。基于SI的单词总评级现在是TAFA(20)Tang(18)secreted(12)hormone(9)TAFA(6.75)TAFA(5.06)protein(5)。
如果Tang出现第二次,它的SI将是数目的75%,数目int(0.75*7)=5,而TAFA(6.75)。这样,它的SI是5.06。现在,命中文件中总共有8个单词,分值(和评级)是TAFA(20)Tang(18)secreted(12)hormone(9)TAFA(6.75)TAFA(5.06)Tang(5.06)protein(5)。
我们可以看到对重复单词的SI依赖于查询中所有单词的SI范围。
实施的试探法
1)从传统的搜索引擎中挑选搜索结果。
如果一个传统的搜索引擎返回大量的结果,其中大多数结果可能不是用户想要的。如果用户发现一篇文章(A*)正是他想要的,他现在可以使用我们的全文搜索方法根据与那篇文章的相似性来重新挑选出搜索结果的列表。以这种方式,每个人只需要将这些文章的每一个与A*比较一次,然后根据与A*的相关性重新整理该列表。
该应用可以是“独立”的软件和/或一个可以与任何存在的搜索引擎联系的软件。
2)使用其他搜索引擎生成一个备选文件列表
作为实施我们全文查询和搜索引擎的一种方式,我们可以使用一些来自查询的关键词(基于其相对稀少性而被选择的单词),并使用传统的以关键词为基础的搜索引擎来生成一个备选文章的列表。作为一个例子,我们可以使用前十位的最信息化的单词(如由字典和Shannon信息所定义)作为查询,并使用传统的搜索引擎来生成备选列表。然后我们可以使用上面提到的挑选方法来重新评定搜索的输出,以使与查询最相关的出现在最前面。
这样,如果将在此公开的算法与任何存在的搜索引擎相结合,我们可以实现一种使用其他搜索引擎来生成我们的结果的方法。本发明可对其他搜索引擎生成正确的查询并以一种智能的方法来重新整理它们。
3)筛选电子邮件
本搜索引擎可以被用于针对一电子邮件数据库筛选垃圾邮件。一个垃圾邮件数据库可以使用用户已经接收到的并且用户认为是垃圾的邮件来建立起来;当一封电子邮件由用户和/或用户的电子邮件提供者接收到,它被针对垃圾邮件数据库搜索。如果命中文件超出预先决定的和/或安排的Shannon信息分值或p值或百分比本身,它被分类入垃圾邮件,并且被安排一个独特的标记或放入一个单独的文件夹以供浏览或删除。
搜索引擎能被用于筛选一个电子邮件数据库以识别重要的邮件。使用含有对用户重要的内容的电子邮件创建一个数据库,并且当一个邮件进入时,其将经过重要邮件数据库的搜索。如果命中文件超出一个特定的Shannon信息分值或p值或百分比本身,该命中文件将被分类作为一个重要的邮件并且被安排一个独特的标志或放入一个单独的文件夹以供浏览或删除。
表一显示所公开发明(总体相似性搜索引擎)与目前包括yahoo和google搜索引擎在内的以关键词为基础的搜索引擎相比的优势
表1
 
查询种类 全文和关键词 关键词(承受选择单词的负担)
查询长度评级系统 单词数目无限制无偏见的,以重叠的加 受限制偏见的,例如,受欢迎度、链接数
权信息为基础 等,因此可能丧失真正的结果
结果相关性 更多相关结果 更多不相关结果
非互联网内容的数据库 在搜索中效率高 在搜索中效率低
本发明通过参考下面的举例将更易理解,所包括的这些例子仅以说明本发明的某个方面和实施例为目的,并非作为限制。
举例
例一:理论模型的实施
在该部分中本发明的搜索引擎的一个具体实施例的细节将公开。
1、介绍flatDB程序
FlatDB是一组处理平面文件数据库的C语言程序。即,他们是能处理有大量数据内容的平面文本文件的工具。文件格式可以是多种多样的,如表格形式,XML格式,FASTA格式,以及任何形式,只要有一个唯一的主关键词。典型应用包括大型序列数据库(genpept,dbEST),已汇编的人类基因组或其他基因数据库,PubMed,Medline等在内。
该工具的设置中,有一个索引程序,一个检索程序,一个插入程序,一个更新程序,一个删除程序。另外,针对非常大型的条目,有一个程序用来检索条目的一个特定区段。不像SQL,FlatDB并不支持不同文件之间的联系。例如,如果所有的文件都是大型表格文件,FlatDB不能支持外关键词对任何表格的限制。
在此是每个程序的列表和它们功能的简要描述:
1、im_index:对一个给定的文本文件,其中该文件存在一个字段分离器并且primary-id是特定化的,im_index生成一个索引文件(例如<text.db>),该索引文件记载每个条目,他们在文本中出现的地址,以及条目的尺寸。该索引文件被挑选出。
2、im_retrieve:对一个给定的数据库(有索引),和一个primary_id(或者在一个给定的文件中primary_id的列表),该程序检索来自文本数据库的所有条目。
3、im_subseq:对一个给定的条目(由一个primary_id指定)以及对该条目的位置和尺寸,im_subseq返回该条目的特定区段。
4、im_insert:它向数据库中插入一个或一列条目并且更新该索引。在它插入时,它产生一个锁文件以使其他人不能在同一时间插入内容。
5、im_delete:删除由一个文件指定的一个或多个的条目。
6、im_update:更新由一个文件指定的一个或多个的条目。它实际上运行一个由im_insert所跟随的im_delete。
使用最普遍的程序是im_index,im_retrieve。如果某人需要从一个大型条目中得到一个子序列,例如,人类染色体中基因区段,im_subseq是非常有用的。
简言之,我们已经写出一些作为平面文件数据库工具的C程序。即他们是能处理一个有许多数据内容的文本文件的工具。有一个索引程序,一个检索程序,一个插入程序,一个更新程序,一个删除程序。
2、建立并更新一个词频字典
名字:im_word_freq<text-file><word-freq>
输入:1:一文本文件的长列表。平面文本文件为FASTA格式(如下所定义)。
2:一个有词频的字典。
输出:更新输入2以产生一个含有所有使用过的单词以及每个单词的频率的字典。
语言:PERL
描述:
1:该程序首先将input_2读入存储器(一个缓存:word_freq):word_freq{word}=freq。
2:它打开文件<text-file>。对每个条目,它将文件分割成一个数组(@entry-one),每个单词是$entry-one的一部分。对每个单词,word_freq{word}+=1。
3:将输出写入<word_freq.new>。
FASTA格式是生成大型文本文件的简便方法(生物学中在列出大型序列数据文件时使用普遍)。典型地:
>primary_id1xxxxxx(称为注释)
文本文件(有许多新的行)
>primary_id2
Figure A200780023220D00561
该priamry_id应该是唯一的,但尽管如此,内容是任意的。
3、为一个平面文件FASTA格式的数据库生成一个单词索引
名字:im_word_index<text_file><word_freq>
输入:
1:一文本文件的长列表。平面文本文件为FASTA格式(如前所定义)。
2:一个有与text_file联系的词频的字典。
输出:
1、两个索引文件:一个为primary_id,一个为bin_id。
2、word_binary_id联合索引文件。
语言:PERL
描述:该程序的目的是对一个给定的单词,某人可以很快地识别哪个条目包含该单词。为了这样做,我们需要一个索引文件,对在word_freq文件中的每个单词都必不可少,我们必须列出所有含有该单词的条目。
因为primary_id通常非常长,我们试图使用一个简短的形式。这样我们给每个primary_id分配一个二进制的id(bin_id)。随后我们需要一个映射文件实现primary_id和binary_id之间的迅速联系。第一索引文件以此格式:primary-id bin_id,由primary_id挑选出。而另一种是:bin_id primary_id,由primary_id挑选出。这两个文件是为查找的目的:即给定一个binary_id可以迅速找到它的primary_id,反之亦然。
该最终索引文件是字典中单词之间的联合,以及出现单词的binary_id列表。该列表应由bin_id挑选出。格式可以是FASTA,例如:
>word1,freq.
bin_id1bin_id2bin_id3....
>word2,freq
bin_id1bin_id2bin_id3,bin_id3....
4、找到含有特定单词的所有数据库条目
名字:im_word_hits<database><word>
输入:
1:一文本文件的长列表。平面文本文件为FASTA格式,以及与其相联系的3个索引文件。
2:一个单词。
输出:含有该单词的bin_id列表(数据库中的条目)。
语言:PERL。
描述:对一个给定的单词,某人想迅速识别哪个条目含有该单词。在输出中,我们有一个含有该单词的所有条目的列表。
算法:对一个给定的单词,首先使用第三索引文件来得到含有该单词的所有文本的binary_id。(也可以使用第二索引文件:binary_id对primary_id来得到所有的primary_id)。返回binary_id列表。
该程序也应该可以在子程序中获得:im_word_hits(text_file,word)。
5、对一个给定的查询,找到与查询共有单词的所有条目
名字:
im_query_2_hits<database_file><query_file>[query_word_number][share_word_number]
输入:
1:数据库:一文本文件的长列表。平面文本文件为FASTA格式。
2:一个FASTA文件格式的查询,该查询类似于数据库中的许多条目。
3:用于搜索的挑选出的单词的总数,任选的,默认10。
4:命中文件中的包括在挑选出的查询单词中的单词数,任选的,默认1。
输出:所有与查询共有一定数量单词的备选文件的列表。
语言:PERL
描述:该程序的目的是对一个给定的查询,某人想要一个备选条目的列表,该条目至少与查询共有一个单词(来自一个高度信息单词列表)。
我们首先将查询解析为一个单词的列表。然后我们查找word_freq表来建立query_word_number(默认为10,但用户可以修改)个有最低频率(即,最高信息内容)的单词。对10个单词的每个,我们使用im_word_hits(子程序)来定位含该单词的所有binary_id。我们合并所有那些binary_id,并计算该binary_id出现多少次。我们仅保留那些有单词的share_word_number的binary_id(至少共有一个单词,但如果有太多命中文件则可能为2)。
如果命中文件数量的总数量>100,在此我们可以对每个条目根据hit_score进行挑选。使用10个单词的Shannon信息计算每个条目的hit_score。该hit_score也能通过在查询和命中文件中每个单词的频率被衡量。
query_word_number是一个用户能修改的参数。如果更大,该搜索将更准确,但它可能花更长时间。如果它太小,我们可能会丧失精确性。
6、对两个给定的文本文件(数据库条目),比较并分配一个分值。
名字:im_align_2<word_freq><entry_1><entry_2>
输入:
1:为数据库产生的单词频率文件。
2:entry_1:单个文本文件。一个FASTA格式的数据库条目。
3:entry_2:与entry_1相同。
输出:一系列命中文件的分值包括:Shannon信息,共有单词数。该格式是:
1)摘要:entry_1entry_2 Shannon_info_score Common_word_score。
2)细节化的列表:共同单词,单词的数据库频率,以及在entry_1和entry_2中的频率(3列)。
语言:C/C++。
该步骤将成为搜索速度的瓶颈。这是我们用C/C++编写的原因。在样板中,某人也可以使用PERL。
描述:对两个给定的文本文件,该程序比较它们,并分配一个分值数来描述两个文本之间的相似性。
该两个文本文件首先被解析为单词数组(@text1,和@text2)。一个联合操作被执行于两个队列间以找到共同单词。如果共同单词是空的,返回entry_1和entry_2之间无共同单词给STDEER。
如果有共同单词,每个共同单词的频率将在单词频率文件中找到。然后,对每个共有单词计算所有Shannon信息总和。我们在此生成一个SI_score(为Shannon信息)。在共有单词中单词的总数(Cw_score)也被计算出。在将来可能有更多的分值被报告(如两个文件之间的关联,包括单词频率比较,以及基于文本长度的归一化,等)。
为计算Shannon信息,参考有关该方法的原始文件(Shannon(1948)BellSyst.Tech.J.,27:379-423,623-656;并察看Feinstein(1958)信息理论基础,McGraw Hill,New NY)。
7、对一个给定的查询,评定所有的命中
名字:im_rant_hits<database_file><query_file><query_hits>
输入:
1:数据库:一文本文件的长列表。平面文本文件为FASTA格式。
2:FASTA文件格式的查询。类似于数据库中的许多条目。
3:数据库中的含有bin_id列表的文件。
选项:
1、[rank_by]默认:SI_score。可选择:CW_score。
2、[hits]报告的命中文件数。默认:300。
3、[min_SI_score]:随后决定。
4、[min_SW_score]:随后决定。
输出:经挑选的基于命中文件分值的query_hits中所有文件的列表。
语言:C/C++/PERL。
该步骤是搜索速度的瓶颈。这是使用C/C++编写的原因。在样板中,也能使用PERL。
描述:该程序的目的是对一个给定的查询和它的命中文件,某人想要根据分值系统来评定所有的那些命中文件。在此分值是一个全局的分值,显示两份文件是如何联系的。
该程序首先命令im_align_2子程序生成一个查询和每个命中文件之间的比较。它然后根据SI_score挑出所有的命中文件。为每个命中文件生成一个一行摘要。该摘要被列在输出的开头。在输出的末尾部分,为每个命中文件显示共同单词的细节化列队和这些单词的频率。
用户应该能够指定文件要报告的命中数量。默认是300。用户也能指定挑选顺序,默认是SI_score。
例二:针对Medline的一个数据库例子
在此是一个数据库文件的列表,它们已经过处理:
1)Medline.raw从NLM中下载而来的未处理的数据库,为XML格式。
2)Medline.fasta处理过的数据库
供被解析的条目遵循的FASTA格式
>primary_id作者.(年份)标题.期刊.卷:页码-页码
wordl(freq)word2(freq)...
单词根据字符被挑选。
3)Medline.pid2bid primary_id(pid)和binary_id(pid)之间的映射
Medline.bid2pid binary_id和primary_id之间的映射
primary_id被定义为文件。它是由使用的唯一的标识符。binary_id是一个分配的id,我们使用它的目的是节省空间。
Medline.pid2bid是一个表格格式文件。格式:primary_id binary_id(由primary_id挑选出)
Medline.bid2pid是一个表格格式文件。格式:binary_id primary_id(由binary_id挑选出)
4)Medline.freq Medline.fasta中对所有单词的单词频率文件,和它们的频率。表格格式文件:单词频率。
5)Medline.freq.stat关于Medline.fasta的统计(数据库大小,计算出的总单词数,Medline发布版本,发布日期,未处理数据库的大小。也有关于该数据库的额外信息)。
6)Medline.rev Medline.freq.file中的每个单词的反转表(单词对binary_id)
7)im_query_2_hits<db><query.fasta>
在此数据库和查询都以FASTA格式。数据库是:/数据/Medline.fasta。查询是来自Medline.fasta的任何条目,或来自网站的任何东西。在后一种情况中,解析程序应该将用户提供的任何格式的文件转换为FASTA格式的文件以符合在项目2中指定的标准。
来自该程序的输出应该是一个primary_id和raw_scores的文件列表。如果目前的输出是一个binary_id列表,它也能够通过运行im_retrieveMedline.bid2pid<bid_list>pid_list转换为primary_id。
在生成备选文件时,在此是上面所讨论内容的重新叙述:
1)计算一个ES值(估计Shannon分值)根据数据库的频率字典中的最低频率,查询前10个单词(10个单词的列表)
2)计算所有文件的ES值。一个假定存在的命中文件被定义为:
(a)在10个单词的列表中命中2个单词。
(b)命中那个具有查询单词中最高Shannon值的单词。以这种方法,我们不会错过任何能唯一地在数据库中定义一个命中文件的命中文件。
通过ES_score来评定所有a)和b)的命中文件,并且限制总数最高为数据库尺寸的0.1%(例如,对一个大小为14,000,000的数据库则为14,000)。(如果a和b的联合少于数据库尺寸的0.1%,评级不必执行,简单地通过该列表。这将节省时间)。
3)除了最多只有10个单词的情况,使用在下面的项目8中所公开的公式来计算该Estimated_score。
8)im_rank_hits<Medline.fasta><query.fasta><pid_list>
在开始将查询和每个命中文件进行1-1比较之前,该程序所做的第一步是运行im_retrieve Medline.fasta pid_并在存储器中存储所有备选命中。
摘要:上面提到的每个数据库文件(Medline.*)应该使用im_index指示。请不要忘记在运行im_index时指定每个文件的格式。
如果需要由临时文件保存检索到的内容,将它们放入/tmp/目录。请使用$$.*的方式来命名你的临时文件,其中$$是你的process_id。晚些时候移除这些生成的temp文件。同时,不要将永久文件放在/tmp中。
计算分值的公式:
p值:查询和命中文件之间的共同单词列表完全是由一随机事件导致的可能性。
Tw为来自数据库的word_freq表的单词的总数(例如,SUM(word*word_freq))(该数量应该被计算并被写入文件的头部Medline.freq.stat.。某人应该读取该文件以得到该数量。对在查询中的每个字典单词(w[i]),在数据库中频率是fd[i]。该单词的概率是:p[i]=fd[i]/Tw
在查询中w[i]的频率为fq[i],而在命中文件中频率是fh[i],fc[i]=min(fq[i],fh[i])。fc[i]是查询和命中文件中频率的较小数。m是查询中共同单词的总数,i=1,...,m,计算p值:
p=(Sifc[i]!(p_ip[i]**fc[i])/(p_ifc[i]!)
其中Si是所有i(i=1,...,m)的总和,并且p_i代表所有i(i=1,...,m)相乘,!是阶乘(例如,4!=4*3*2*1)
p应该是一个非常小的数字。确保采用浮点型来进行计算。SI_score(Shannon信息分值)是-log2(p值)。
3.word_%(#_shared_words/total_words)。如果一个单词出现多次,它将被计算多次。例如:查询(100个单词),命中(120个单词),共有单词为50个,则word_%=50*2/(100+120)。
例三:生成一个短语词典的方法
1、短语搜索的理论方面短
短语搜索是使用一个单词串(取代单个单词)来进行搜索。例如:某人可能查找有关青少年堕胎的信息。这些单词的每一个有一个不同的意思,当单独存在时,会检索出很多不相关的文件,但当你将它们逐个结合起来他们的意思会非常准确地改变为“青少年堕胎”的概念。从这个角度,短语比单个单词的结合含有更多的信息。
为了执行短语搜索,我们需要首先生成一个短语词典,和一个针对任何给定数据库的分布函数,就像针对单个单词那样。在此公开针对任何给定文本数据库生成一个短语分布的编程方法。完全从理论的观点来看,对于任何2个单词,3个单词,...,K个单词,通过搜查整个数据库获得每个备选短语的出现频率,意味着它们是潜在的短语。一个截频器被用于仅挑选出那些频率超过某一阈值的备选。一个2个单词的短语的阈值可能比一个3个单词的短语的阈值高,等等。这样,一旦给定阈值,针对2个单词,...,K个单词的短语的短语分布就自动产生了。
假设我们已经有针对2个单词短语F(w2),3个单词短语F(w3)......,的分布频率,其中w2意味所有的2个单词短语,w3是所有3个单词短语。我们能够为每个短语wk(一个k个单词的短语)分配Shannon信息:SI(wk)=-log2f(wk)Twk
其中f(wk)是短语的频率,Twk是在分布F(wk)中的短语总数。
可供选择地,不考虑短语的长度,针对所有的短语有一个单一的分布,我们称之为分布F(wa)。该方法与第一种相比较不受青睐,因为我们通常认为一个长的短语比一个短的短语含有更多的信息,即使他们在数据库中出现相同的次数。
当给定一个查询,就像我们产生一个所有单词的列表那样,我们产生一个所有潜在短语(最多K个单词)的列表。我们随后能在短语词典中查看它们中是否有真正的短语。我们在数据库中挑出这些短语用于进一步的搜索。
现在我们假设也存在一个短语的反转词典。即对每个短语,数据库中含有该短语所有的条目在反转词典中列出。这样,对在查询中给定的短语,使用该反转词典我们能找出哪个条目含有该短语。就像我们处理单词那样,我们为含有至少一个的查询短语的每个条目计算累计分值。
在概括命中文件的最后阶段,我们能使用可供选择的方法。第一个方法是使用两列,一个报告单词分值,另一个报告短语分值。默认地将报告所有根据重叠单词的累计Shannon信息评级的命中文件,但在下个列中报告短语的累计Shannon信息。用户也能通过点击列标题选择使用短语SI分值来筛选命中文件。
在另一个方法中,我们将短语的SI_score和重叠单词的SI值结合。在此有个非常重要的问题:我们应该如何比较单词的SI_score和短语的SI_score。甚至在短语中,如我们上面所提到的,我们如何比较一个2个单词短语的SI_score和一个3个单词短语的SI_score?在实践中,我们能简单地通过使用一系列的因子将各种SI_scores合并在一起,即:
SI_total=SI_word+a2*SI_2-word-phrase+..+ak*SI_K-word-phrase
其中ak,k=2,..,k是>=1的参数,并且是单调增加的。
如果针对短语长度的调整已经在一个单一短语分布函数F(wa)的生成中被考虑,那么,我们有一个简化的公式:
SI_total=SI_word+a*SI_phrase
其中a是一个参数:a>=1。反映单词分值和短语分值之间的权数。
该计算Shannon信息的方法可或者应用于一个完整的文本(即,设定一个分布F后,一个文本共有多少信息,或者应用于查询和命中文件之间的重叠区段(单词和短语)。
2、Medline数据库和自动的短语生成方法
程序1:phrase_dict_generator
1)定义2个缓存:
candihash:一个可以作为一个短语的组成部分的单个单词的缓存。
phrasehash:一个记载所有发现的短语和它们的频率的缓存。
定义3个参数:
WORD_FREQ_MIN=300
WORD_FREQ_MAX=1000000
PHRASE_FREQ_MIN=100
2)从单词频率表中,取出所有频率>=word_freq_min,且<=word_freq_max的单词。将它们读入candihash。
3)取出Medline.stem文件(如果该文件已经在原始文件中保留了单词顺序,否则你不得不重新生成一个Medline.stem文件以使在原始文件中单词顺序被保留)。
psuedo code:
while(<Medline.stem>){
foreach entry{
read in 2 words a time,shift 1 word a time
check if both words are in candihash,if yes:
phrasehash{word1-word2}++;}}
4)循环步骤2直到1)medline.stem的末尾或2)系统接近memory-limit。
如果2)写入phrasehash,清除phrasehash,当(<medline.stem>)时继续,直到medline.stem结束。
5)如果来自步骤4的众多输出,merge-sort theoutputs>medline.phrase.freq.0。如果以条件1)结束,筛选phrasehash>medline.phrase.freq.0。
6)在medline.phrase.freq.0中频率>phrase_freq_min的任何东西都是一个短语。将那些条目筛选进:medline.phrase.freq。
程序2.phrase_db_generator
1)将medline.phrase.freq读入一个缓存:phrasehash_n
2)while(<medline.stem>){
  foreach entry{
    read in 2 words a time,shift 1 word a time
    join the 2 word,and check if it is defined in the phrasehash_n
  ifyes{
    write medline.phrase for this entry}}}
program3.phrase_revdb_generator
该程序生成medline.phrase.rev。它被生成为与单词的反转字典相同。对每个短语,该文件含有一个列出含有该短语的所有数据库条目的所有的二进制id的条目。
例4:本地安装的命令行搜索引擎
开发出一个搜索引擎的独立版本。该版本并没有网站接口。它由上面提到的许多程序组成并汇编在一起。有一个单一的Makefile。当“制作安装”被键入,该系统将目录中所有的程序汇编起来,并生成三个使用的主要程序。这三个程序是:
1)索引一个数据库
im_index_all:所有生成大量索引的程序,包括单词/短语频率表,以及向前和反转索引。例如:$im_index_all/path/to/some_db_file_base.fasta
2)启动该搜索服务器:
Im_GSSE_serve:该程序是服务器程序。它将所有的索引都装载进存储器并保持在背景中的运行。它处理来自客户的服务请求:im_GSSE_client。例如:$im_GSSE_serve/path/to/some_db_file_base.fasta
3)运行搜索客户机程序
一旦服务器处于运行中,某人可以运行一个搜索客户机程序来执行真正的搜索。该客户机程序能在相同的机器上被本地化地运行,或从一个客户机上远程地运行。例如:$im_GSSE_client_qf/path/to/some_query.fasta
例5:对文本数据库的压缩方法
在此简述的压缩方法是以收缩数据库的大小,节约硬盘和系统存储器的使用,并增强电脑的运行速度为目的。它可以单独用于压缩目的,或它可以与当前存在的如zip/gzip等压缩技术相结合。
基本的思想是定位高频率的单词/短语,并用更简短的符号(我们的情况中是整数,下文中称为代码)来代替这些单词/短语。该压缩的数据库是由单词/短语列表,它们的代码,以及其中的单词/短语已系统地被代码所取代的数据库本身。一个独立的程序读入压缩的数据文件,并将它重新保存进原始文本文件。
在此为压缩方法如何工作的简述:
在生成所有单词/短语频率的处理过程中,分配一个唯一代码给每个单词/短语。单词/短语和它的代码之间的映射关系被保存在一个映射文件中,格式为:“单词/短语,频率,代码”。该表格根据仅有“单词/短语,频率”的表格被生成,并且该表格根据长度(单词/短语)*频率的颠倒顺序被整理。该代码被依次分配给该表格的行1至底部。在我们情况中该代码是一个从1开始的整数。压缩之前,所有在数据库中存在的整数都需要通过在它的前面使用一个非文本字符来保护。
在不脱离本发明的范围和精神的情况下,所属领域的技术人员乐于看到所描述的具体实施例的各种改编和修改。其他在技术领域公知的合适的技术和方法能被所属领域的技术人员根据在此描述的对本发明的描述应用于多种特别的形态。因此,有必要理解本发明可以应用于其他情况而非局限于在此所专门描述的场合。上面的描述是为了说明,并非为了限制。许多其他的实施方式对于那些浏览了该描述后的所属领域的技术人员是显而易见的。因此,本发明的范围应该参考所附的权利要求,以及被授予权利的已公开发明的整个范围来决定。
本技术克服的局限
我们提出了一种新的针对搜索引擎技术的方法,我们把我们的技术称作“全局相似性搜索”。我们从另一个视角——全局视角来看待搜索问题,而不是试图去一一匹配关键词。这里一个或两个关键词的匹配就不再必要了。重要的是查询和其命中文件之间的总体相似性。该相似性数值是以Shannon信息熵为基础的,是一个衡量每个信息元信息量的概念。一个信息元可以是一个单词或短语,并且是在索引步骤中通过搜索引擎自动产生的。在产生信息元时有某些频率限制:1)不包括常用单词;2)短语必须达到一个基于其所包含的单词数的最小出现次数;3)一个信息元不能作为另一信息元的一部分。
我们的搜索引擎有一定的特点:
●不限制单词个数。实际上,我们鼓励用户写下任何他想要的。查询中单词越多越好。因此,在我们的搜索引擎中,查询可以是一些关键词、摘要、段落、一篇完整文章或者一个网页。换言之,我们的搜索引擎允许“全文查询”,其中查询不限于一些单词,而可以是文本文件的完整内容。我们鼓励用户指定他们想要搜索的内容。他们指定得越详细,他们将检索到的信息越准确。用户不再承受选择关键词的负担。
●不限制数据库内容,不限制因特网。正如我们的搜索引擎不依赖于链接数量,我们的技术不被数据库类型所限,唯一的限制就是它是基于文本的。因此,该数据库可以是任何文本内容,如硬盘文件、邮件、科学文献、法律文献等等。
●巨大的数据库容量是好事。在全局相似性搜索中,如果你知道具体想要什么的话,命中文件的数量通常非常有限。查询越具体所得的命中文件越少。数据库的巨大容量实际上对我们来说是一件好事,因为我们更可能找到用户想要的记录。在基于关键词的搜索中,大容量数据库是一个致命因素,因为包含很少关键词的记录的数量通常很巨大。
●无语言障碍。该技术应用任何语言(甚至是外星语言,如果某天我们收到它们)。该搜索引擎是以信息理论为基础的,不是语义学。它不要求对内容的任何理解。几乎不需要努力我们就能将我们的搜索引擎用于世界上存在的任何语言。
●最重要的是,你所得到的就是你想要的。没有任何偏差。我们以Shannon信息理论为基础引入一种新的评分系统。举例来说,单词“the”和短语“search engine”带有不同的信息量。每个信息元的信息量对其所在的数据库来说是固有的。我们通过查询和命中文件中的重叠信息元的信息量对命中文件评级。这样,我们保证数据库中与查询最为相关的条目会得到最高分。该评级纯粹以信息理论科学为基础。与链接数量、网页受欢迎程度或者广告费无关。因此,我们的评级是真正客观的。
我们改善用户搜索经历的角度与其它搜索引擎如Yahoo或者Google所提供的搜索引擎很不相同。传统搜索引擎,包括Yahoo和Google,更关心一个单词或者一段短单词串或者短语,而我们解决包含许多单词和短语的大文本问题。因此,我们需要完全不同的寻找和评定命中文件的方式。如何评定包含所有查询单词的命中文件不是我们的首要问题(但是我们仍然会处理它),因为这个问题很少出现在长查询中。在许多命中文件都包含查询单词的情况下,我们建议用户通过提供更多描述以精炼其搜索。这使得我们的引擎更好地过滤不相关的命中文件。
我们主要关心的是对相对于查询具有不同重叠的命中文件的评级方法。我们应该如何评定它们?我们的解决方法是以“信息理论”为根本并由Shannon为了通讯发展起来的。我们将Shannon的信息概念应用于具有给定的离散分布的文本数据库。每个信息元的信息量由其在数据库里的频率确定。我们采用两篇文章里的共有信息元的总信息量来衡量命中文件的相关性。可以这样来评定整个数据库条目,最相关条目有着最高分。
与矢量空间模型的关系
信息检索的矢量空间模型仅是近年来所研究的检索技术的一个子类。矢量空间模型依赖于文件意义来源于文件的构成检索词这个前提。它们以检索词矢量d(t1,t2,...,tn)代表文件,其中t1是表示检索词i在文件d里的一次或者多次出现的非负值。因此,文件集合中的每个独特单词相应空间里的一个维度。类似地,查询也用矢量代表,其中检索词是表示查询中出现的次数(或者,仅仅用1表示检索词的出现)的一个非负值。文件矢量和查询矢量都在检索词-文件空间里提供了点的位置。通过对查询和空间其它点间距离的计算,被假定认为与查询有相似语义的点就被检索到了。
矢量空间模型比倒指数更灵活,因为每个检索词可以单独被单独加权,以使得那个名词在文件中或者在作为整体的文件集合中变得更重要或者更不重要。此外,通过应用不同的相似性衡量以将查询与检索词和文件比较,文件集合的性质就被强调或者被降低其重要性。举例来说,点积(或者内积)相似性衡量寻找查询和文件在空间里的欧几里德距离。余弦相似性衡量,从另一方面来说,通过计算查询和文件之间的角度而不是距离来降低矢量长度的重要性。在某些情况中,矢量的方向比检索词-文件空间里点间的距离对点的语义相似性的指示更可靠。
矢量空间模型,通过将检索词、文件以及查询放置在检索词-文件空间并且计算查询与名词或者文件之间的相似性,以根据所采用的相似性衡量来评定查询结果。不像不提供评级或者很粗糙的评级方案(举例来说,将一文件评定在另一个文件之前,只因为它包含搜索名词的更多次出现)的词汇匹配技术,矢量空间模型通过以空间里查询与检索词或者文件之间的欧几里德距离或者角度数值为基础的评级,能够自动将用户指导至概念上更相似且比其它文件更有用的文件。此外,通过在相同空间里代表检索词和文件,矢量空间模型通常提供实现相关性反馈的完美方法。相关性反馈通过允许文件和检索词形成查询,并使用那些文件中的检索词以补充查询,增加了查询的长度和精度,以帮助用户更准确具体指定他或她从搜索中想要的。
在所有搜索方法中,我们的搜索方法是与矢量空间模型最紧密相关的。但是我们在许多方面是出众的。相似性就是两种方法都采用“全文查询”方法。它采用完整“单词”和“检索词”以比较查询和命中文件。但是在传统矢量空间模型中,检索词和单词被平等看待。没有将统计概念引入相关性衡量或者对手头数据库的描述中。也没有与每个单词或者短语有关联的信息量的概念。进一步地,从外部定义单词和短语。因为所用单词没有统计数值,在检索词识别中也就没有自动化方法。不得不从外部提供检索词列表。该矢量空间模型不能满意地解决全文搜索问题,因为它不包含数据库分布函数的想法以及信息元概念和它们的自动识别。它没有认可搜索问题要求的“信息化相关性”和Shannon提出的“信息化理论”之间的联系。结果,矢量空间模型未能成功地商业应用。
起源于计算生物学的独立于语言的技术
我们的搜索引擎是独立于语言的。它可以应用于任何语言,包括非人类语言,如基因序列数据库。它与语义学研究无关。大多数技术首先发展于为针对基因序列数据库的计算生物学中。我们引入Shannon信息概念,简单地将其应用于文本数据库搜索问题。基因数据库搜索是一项成熟的技术,已经由许多科学家经过25年的发展。它是完成人类基因组排序和发现~30000个人类基因的主要技术之一。
在计算生物学中,一个典型的序列搜索问题如下:给定一个蛋白质数据库protDB,和一个查询蛋白质序列protQ,在protDB中找到与protQ相关的所有序列,并且根据它们与protQ相关度对它们进行评级。将该问题转换为一个文本数据库的背景:给定一个文本数据库textDB,和一个查询文本textQ,在textDB中找到与textQ相联系的所有条目,根据它们与textQ的相近度对它们进行评级。该计算生物学问题是经精确地数学定义的,并且可通过各种算法(例如Smith-Waterman算法)而毫无疑义地精确地找到解决方案。我们的镜像文本数据库搜索问题也有一个精确的数学解释和解决方案。
对任何给定的文本数据库,不考虑它的语言或数据内容,我们的搜索引擎将自动地建立一个单词和短语的字典,并且给每个单词和短语分配Shannon信息量。这样,一个查询有它的信息量;数据库中的一个条目有它的信息量;并且数据库有它的总信息量。每个数据库条目与查询的相关度是由命中文件和查询之间的重叠单词和短语中的信息总量来衡量的。这样,如果一个查询和一个条目没有重叠的信息元,那分值将为0。如果数据库包含查询本身,它将可能得到最高分值。输出成为一个命中文件列表,根据它们与查询的信息相关性来评级。我们提供查询和每个命中文件之间的定位,其中所有共有的单词和短语都由独特的颜色标示;并且每个重叠单词/短语的Shannon信息量都被列出。我们为评级使用的算法是定量的、精确的并且完全客观的。
信息元的识别和确定
以下对上述内容中使用的一些术语做个介绍。这些术语应该以尽可能广的意义被解释,以下描述是为了说明而非限制。
信息元:信息元是组成文本条目的基本信息单元。它可以是一个单词、一条短语,或者是由达到一定限制要求(举例来说,外部识别的最小出现频率)的不相互结合的单词/短语组成的表达方式。一个句子/段落可以被分解成多个信息元。如果存在关于文本的多种分解,则具有较高信息量的信息元的识别优先于具有较低信息量的信息元。一旦给定了数据库,我们首要的目标就是识别其中的所有信息元。
Citom:备选信息元。它可以是一个单词、一条短语,或者是由不相互结合的单词/短语组成的可识别的表达方式。可以将其作为一个信息元接受或者根据所用规则和参数加以拒绝。在我们搜索引擎的这个版本中,信息元被限制为单词或者邻近单词的集合。还没有由不相互结合的单词/短语形成的表达方式。
解释以下缩写:
1w:一个单词
3w:三个单词
f(citom_j):citom_j的频率,j=1,2
f_min=100;选择一个citom的最小频率
Tr=100;高于预期频率的最小阈值FOLD
Pc=25;两个citom一起的最小百分比。
自动信息元识别
在本方法中,我们尝试用程序来自动识别信息元。它由两个循环(I&II)组成。出于说明目的,我们将最大信息元长度限制在6个单词(它可以更长或者更短)。循环I向上走(i=2,3,4,5,6)。循环II向下走(i=6,5,4,3,2)。
1.向上循环
1)对于i=2,这里的citom仅是单词。识别所有频率大于f_min的2w-citom。
a)计算其预期频率(E_f=O_f(citoml)*O_f(citom2)*N2,以及其观测频率(O_f)。如果O_f>=Tr*E_f,就留下它。(N2:2-citom项目的总计数)
b)否则,如果O_f>=Pc%*min(f(citom_1),f(citom_2)),就留下它。(2个citom一起出现的所有可能性的Pc%),就留下它。
c)否则,拒绝。
假设剩余集合:{2w_citoms}。这里我们得到了什么?我们得到两个潜在短语的不同集合(1)这两个单词一起出现的频率比预期高;(2)在多于25%的情况中,这两个单词一起出现。
2)对于i=3,对每个在{2w_citoms}中的citom,识别所有频率>f_min的三个单词的citom(两个单词的citom再加上一个单词)。
a)计算其预期频率(E_f=O_f(2w_citom)*O_f(3rd_word)*N3),以及其
观测频率(O_f)。如果O_f>=Tr*E_f,就留下它。(N3:在该新集合中2-citom项目的总计数)
b)否则,如果O_f>=Pc%*min(f(citom_1),f(citom_2)),就留下它。(2个citom一起出现的所有可能性的Pc%),就留下它。(citom_2是第三个单词)。
c)否则,拒绝。
我们有个集合:{3w_citoms}。请注意{3w_citoms}是{2w_citoms}的一个子集。
3)对于i=4,5,6,重复相似步骤。结果是:{4w_citoms},{5w_citoms},{6w_citoms}。
请注意,通常我们有{2w_citoms}包含{3w_citoms},{3w_citoms}包含{4w_citoms},....
2.向下循环
对于i=6,自动接受{6w_citoms}作为信息元。就是{6w_itoms}。因此:{6w_citoms}={6w_itoms}。在现实世界中,如果有一个7个单词的信息元,它可能陌生地出现在我们的信息元选择中,因为我们仅获取前6个单词作为一个信息元,而不考虑第7个单词。对于8个单词的信息元,第7和第8个单词不会被考虑。
对于i=5,对每个在{5w_citoms}-{6w_citoms}中的citom,citom_j:
   如果f{citom_j}>f_min,them,citom_j就是{5w_itoms}的一员。
对于i=4,对每个在{4w_citoms}-{5w_citoms}-{6w_citoms}中的citom,citom_j:
   如果f{citom_j}>f_min,them,citom_j就是{4w_itoms}的一员。
对于i=3,2,做相同的事。
因此,对于i=2,,6,我们就产生了一张完整的所有信息元的列表。任何未被考虑的并且不是{Common_words}的一员的单词属于{1w_itoms}。对于1w-itom没有最小频率要求。
上传外部信息元字典
我们可以采用外部关键词字典。1)任何来自外部字典的短语,如果出现在我们的相关数据库中,不论频率多低,且也不考虑其包含的单词数,都会立即成为一个信息元;或者2)我们可以加一个最小频率要求。在这种情况下,最小频率可以与自动信息元选择中的最小频率相同或者不同。
该步骤可以在自动信息元识别步骤之前或者之后进行。在我们目前的实施中,该步骤是在自动信息元识别步骤之前进行的。该外部信息元可以成为被自动识别的信息元的一部分。用符号代替这些信息元,并且与我们在文本中将要处理的其它字符/单词一样对待。结果,一些外部输入信息元可能没有出现在最终信息元列表中。一些则被留下。
利用高分值窗口和高分值区段的当地定位
本地定位的需求
原因:如果查询是一篇短文,并且有两个命中文件,一个长(长命中文件),另一个短(短命中文件)。查询和长命中文件之间的相关性可能低,但我们目前的评级可能将长命中文件评定得高,因为长文章包含查询中的信息元的可能性更高。我们就要通过当地定位弥补针对该长文章的偏差。
方法:我们会在命中页面多加一列,称为“当地分值”,原先的“分值”列应被重命名为“全局分值”。生成“全局分值”的搜索算法与先前一样。我们多加一个模组,称为Local_score,以在最终显示页面中对命中文章重新评级。
这里我们设置一些参数:
1.Query_size_min,默认,300个单词。如果查询少于300个单词(就如基于关键词搜索的情况),我们会采用300个单词。
2.Window_size=Query_size*1.5。(举例来说,如果查询大小是10个单词,那么Window_size=450)。
如果命中文件大小小于Window_size,Local_Score=Global_Score。Local_Alignment就与“Global_Alignment”一致了。
如果命中文件比Window_size长,那么,“当地分值”和“当地定位”会改变。在这种情况下,我们为Window_size选择在所有可能窗口中包含最高分值的窗口大小。Left_link总是默认显示“当地定位”,但在页面的右上角有一个按钮,所以“全局定位”可被选择,并且在这种情况下,页面刷新并且显示全局调整。
现在右边有两个链接,一个链接到“全局分值”,另一个链接到“当地分值”。该“全局分值”链接与之前相同,但“当地分值”链接仅显示在当地定位中的那些信息元。
默认为根据当地分值排列所有命中文件的次序。当用户选择通过点击“全局分值”的列标题以重新排序时,它应该根据全局分值重新排序。
寻找最高分值窗口
我们采用Window_size=450以寻找最高分值窗口。其它情况是显而易见的。
1)以100个单词为步长扫描,并将其左边和右边的邻近词加入进来以定位450个单词的窗口。
如果一篇文章少于450个单词,那么,就没有定位的必要了。如果长于450个单词,我们将窗口每次改变100个单词,并且计算该窗口的Shannon信息。如果最后的窗口少于450个单词,将其打开至左边直至它的长度为450个单词。寻找最高分值窗口,并且选择其左边的一个窗口和其右边的一个窗口。如果最高分值窗口是最左边或者最后边的窗口的话,你就只有两个窗口。合并这3个(或者2个)窗口。这个大小在451-650个单词之间的窗口是我们的最佳备选。如果最高分值窗口有多个,总是采用最左边的窗口。
2)进一步缩小为仅有450个单词的窗口
与步骤1相似,现在以10个单词为步长扫描该区域。寻找一个最高分值窗口。如果其有左边和右边的窗口则将它们合并。现在你有一个最大宽度为470个单词的窗口了。
3)现在,进行相同扫描,以5个单词为步长。然后以2个单词为步长。然后以1个单词为步长。你做完了!
如果你有多于一个的相同分值的窗口,别忘记采用最左边规则。
定位最高分值窗口
以上部分提供了识别最佳命中文件区段的窗口的算法。我们应该将该逻辑扩展至识别第二佳命中文件区段,第三佳命中文件区段。每次,我们首先从命中文章中移除识别的命中文件区段。在移除最高分值区段后,我们在所有碎片中执行相同算法。这里是该算法的概要:
1)设置用以选择高分值窗口的默认阈值为100。除了最佳命中文件窗口,我们不显示任何低于该阈值的额外定位。
2)对于长于450个单词或者1.5*query_length的给定命中文件,我们想要识别所有大于100的额外高分值区段。
3)我们识别在以上部分中给定的最佳命中文件区段。
4)移除最佳命中文件区段,对每个留下的区段,运行下面相同的算法。
5)采用大小为450的窗口,在那个区段中识别最佳命中文件窗口。如果该最佳命中小于阈值,退出。否则,将那个最佳命中推入被识别的HSW(高分值窗口)栈中。行至步骤4)。
6)通过去掉起始和结束处的低命中句子来缩小显示窗口。在我们得到阈值在该阈值之上的450个单词的窗口后,我们进一步去掉窗口的一起始区段和一结束区段以缩小窗口的大小。对于左边来说,我们从头开始搜索,直到我们命中查询中的信息量排在前20位之内的一个信息元中的最前端。该句子的起始就是我们窗口的新起始。
对于右边,逻辑是相同的。我们从右边搜索直到前20位的信息元列表的第一个信息元。我们将该句子作为HSW的最后一个句子。如果HSW里没有前20位的信息元,我们放弃整个窗口。
7)通过分值对HSW栈反排序,在查询边上显示每个HSW。
一个可选的方法:识别高分值区段
一个备选条目由被非信息元内容分离信息元串组成,该非信息元内容包含单词、标点符号以及文本分隔符,例如‘段落分隔符’和‘部分分隔符’。我们定义对于非信息元内容的处罚数组y->{x},其中x是单词、标点符号或者分隔符,并且y->{x}是处罚的值。处罚数组存在以下约束:
1)y->{x}<=0,对于所有x。
2)y->{apostrophe}=y->{hyphen}=0。
3)y->{word}>=y->{comma}>=>=y->{colon}=y->{semicolon}>=y->{period}=y->{question mark}=y->{exclamation point}>=y->{quotation mark}。
4)y->{quotation mark}>=y->{parentheses}>=y->{paragraph}>=y->{section}。
可以为这里未列举的分隔符或者标点符号定义额外处罚。作为一个例子,这里是参数值的试验性设置:
y->{apostrophe}=y->{hyphen}=0。
y->{word}=-1。
y->{comma}=-1.5。
y->{colon}=y->{semicolon}=-2。
y->{period}=y->{question mark}=y->{exclamation point}=-3。
y->{parentheses}=-4。
y->{paragraph}=-5。
y->{section}=-8。
这里是详细的识别高分值区段(HSS)的算法步骤。在我们对区段的长度不设上限的前提下,HSS概念与高分值窗口概念是不同的。
1)信息元和非信息元内容的原始串现在可以被转换成正的(对于信息元)和非正的(非信息元内容)数字串。
2)连续正值段或者连续负值段应该被合并,并针对该特定的段给定一个结合的数字。因此,在合并之后,串中的连续数字总是在正值和负值间改变。
3)识别HSS。让我们定义“间隔起始的最大允许间隔处罚”,gimax。(试验性地,我们可以设置gimax=30)。
a.从最大的正数开始。我们在两个方向上扩展。
b.如果任何时候,负分值SI(k)<-gimax,我们应该在那个方向上终止HSW。
c.如果SI(k+1)>-SI(k),继续扩展。(累积的SI分值就会增加)否则,也终止。
d.在两个方向都终止后,报告终止位置,
e.如果累积的SI分值大于100,并且HSS的总数小于3,就留下它。继续步骤a。否则,终止。
这部分所讨论的参数需要被精确地调整,所以在上述步骤中我们有有意义的计算。此外,这些参数可以通过用户/程序员根据其偏好设置。
在查询文本中对HSS的识别就简单多了。现在我们仅关心那些包含在HSS中的信息元。我们从查询的两个端点开始,直到我们找到命中的HSS中的第一个信息元才停止。那就是我们的起始(结束)位置,这取决于你从哪边看起。
在用户接口上显示HSW和HSS
当地定位有两种类型,一是基于HSW的,另一种是基于HSS的。为了方便,我们仅采用HSW。同样的论点也可以应用于HSS。对每个HSW,我们应该将查询文本定位至命中文件中该HSW的中心。查询文本将被显示与HSW的数量相同的次数。在每个HSW中,我们仅标示在该HSW中的命中信息元。在两端修剪查询文本以移除非定位元素。剩余查询文本的位置将被显示。只有在命中文件的HSW中的查询文本中的信息元将被标示。
对于右链接,我们也通过每个HSW显示信息元列表。所以,点击当地分值时,一个窗口弹出,以HSW的顺序列出每个信息元和它们的分值。对于每个HSW,我们有一行作为标题,它显示了该HSW的摘要信息,如总分值。
我们在每个HSW之间空一行。举例来说,以下显示了三个HSW。
(在弹出窗口的左边,居中的)
...
查询
100...bla bbla aa bll aaa aa lllla bbb blalablalbalblb
   blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
   blabla bla blablabal baaa aaa lllla bbb...313
...(在这里留足够的竖直空间以使定位产生有意义的视觉效果)。
查询
85...blabla bla blablabal baaa aaa lllla bbb blalablalba
     blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
     blabla bla blablabal baaa aaa lllla bbb bbbaaavvva aaa
     aaa blablablal bbaa...353
     ...(在这里留足够的竖直空间以使定位产生有意义的视觉效果)。
查询
456...blabla bla blablabal baaa aaa lllla bbb blalablal
   blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
   blabla bla blablabal baaa aaa lllla bbb...833
(在弹出窗口右边)
>ESP88186854My example of showing a hit with 3 HSWs[DB:US-PTO]
Length=313words.Global_score=345.0,Percent Identities=10/102(9%)
High scoring window1.SI_Score=135.0,Percent Identities=22/102(21%)
309...blabla bla blablabal baaa aaa lllla bbb blalablalbal
  blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
  blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
  blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
  blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
  blabla bla blablabal baaa aaa lllla bbb...611
(这里空两行。)
High scoring window 2.SI_Score=105.7,Percent Identities=15/102(14%)
10...blabla bla blablabal baaa aaa lllla bbb blalablalbal
  blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
  blabla bla blablabal baaa aaa lllla bbb blalablalbalblb
  blabla bla blablabal baaa aaa lllla bbb...283
(这里空两行。)
High scoring window 2.SI_Score=85.2,Percent Identities=10/102(10%)
812...blabla bla blablabal baaa aaa lllla bbb blalablalbal
  blabla bla blablabal baaa aaa lllla bbb...988
搜索方法的变化
这里公开的方法是以Shannon信息为基础的。相同或者相似的方法还有其它表达,但是表现形式不同。这里我们给出一些例子。
使用统计方法以衡量D-值、e-值、百分比本身和相似性百分比
因为Shannon信息是以统计概念为基础且与分布函数相关的,所以查询和命中文件的相似性也可以用统计量衡量。这里关键的概念是p-值、e-值和百分比本身。
每次定位的重要性可以p-值或者e-值来计算。e-值意味着预期值。如果我们假设在一个数据库中所有信息元具有一给定分布,对于给定的查询(和其信息元列表)来说,e-值是在数据库搜索中随机出现的查询和命中文件之间的分值等于或高于SI_score的不同定位的预期数量。e-值越低,分值就越重要。p-值是出现具有与正在讨论的分值相等或比之更高的分值的定位的概率。通过比较具有与对数据库的查询相同的长度和组成的随机条目,以将观测的定位SI_score与HSP分值的预期分布相关联来计算得到p-值。重要性最高的p-值是那些接近0的。p-值乘以数据库中条目的总数给出e-值。p-值和e-值以不同形式表示定位的重要性。
在基因序列定位中,有一个表达S-score和p-值(或者e-值)之间关系的数学公式。该公式来源于对数据库和其条目的本质描述做出的统计假设。SI_score和p-值之间存在相似的数学关系。这是一个需要进一步理论研究的主题。
百分比本身衡量查询和命中HSP中有多少信息元是匹配的。对于一个给定的被识别的HSP,它被定义为(匹配信息元)/(总信息元)*100%。相似性百分比是(匹配信息元的SI-score总和)/(信息元的总SI-score)。再有,可以采用这两个数字衡量针对一特定HSP的查询和命中文件之间的相似性。
采用物理方法和相互信息概念
另一个重要概念就是相互信息。一个随机变量揭示了另一随机变量的多少信息?当我们查看命中HSP时,它是一个与查询(另一个随机变量)相关的随机变量。我们想要知道的是,一旦给与我们观测结果(命中HSP),我们能说出多少关于查询的信息。这个量就是相互信息:
I(X;Y)=∑x∑yp(x,y)logp(x,y)/(p(x)*p(y))
其中X、Y是分布空间里的两个随机变量,p(x)、p(y)是它们的分布,而且p(x,y)是X、Y的联合分布。注意到当X和Y相互独立(在查询和命中文件之间没有重叠信息元的时候)时,p(x,y)=p(x)p(y)(独立的定义),所以I(X;Y)=0。这就意味着:如果它们都是独立随机变量,那么Y不能告诉我们关于X的情况。
对一些或者所有信息元采用外部定义的概率/频率
可以在数据库内计算信息元的概率、频率或者Shannon信息。它也可以被从外部确定。举例来说,可以通过对很大的数据集合进行随机采样来估算概率数据。如果用户明确地想要扩大/缩小某一信息元的效果的话,他也可以改变信息元的SI_score。不同职业背景的人可能更喜欢采用适合其具体研究领域的分布函数。在搜索中他可以上传该信息元分值矩阵。
对矢量空间模型采用单位分值矩阵或者余弦函数
如果用户更喜欢平等地衡量所有信息元,或者认为所有信息元应该有相等的信息量,那么他就要采用单位分值矩阵。在这种情况下,他实际上把我们的全文搜索方法变成了类似于矢量空间模型的东西,其中任何特定单词都没有权数(唯一不同的就是在我们的应用中,单词要被信息元取代)。
包含在一个多维矢量中的信息可以被概括在两个一维数值中,即相对于一固定方向的长度和角度。矢量的长度是矢量尾部至头部的距离。两个矢量之间的角度是在它们所确定的平面内该两个矢量之间的角度数值(以度数或者弧度为单位)。我们可以采用一个数字,即文件矢量和查询矢量之间的角度,来得到文件到查询之间的物理“距离”。那个方向与查询矢量的方向最接近的文件矢量(即,之间的角度最小)是最好的选择,也就得到了与查询最相关的文件。
我们可以计算非零矢量x和y之间角度的余弦,通过下式:
cosineα=xTy/(|‖x‖‖y‖)
在传统矢量空间模型中,矢量x和y仅是记录单词和检索词的出现的数字。如果我们将其变成信息元的信息量(计算重复的出现),那么我们得到在信息空间中两篇文章之间的相似性数值。该数值与我们的SI_score相关。
使用其它搜索引擎作为媒体
在一些场合中,有人想要采用其它搜索引擎作为媒体。举例来说,如果Google或者Yahoo有巨大的因特网数据库,但我们没有。或者由于空间限制我们不想在本地安装它。在这种情况下,可以采用以下方法来搜索:
1.上传一个信息元评分矩阵(这可以来自外部来源或者随机采样,见4.3章节)。
2.当给定了作为查询的全文时,基于外部网站的偏好选择有限数量的高信息内容的信息元。举例来说,如果Google偏好~5个关键词,则我们从查询中选择10-20个高信息内容的信息元。
3.让我们将~20个信息元分成4个组,用5个信息元在Google站上查询。在本地存储器中取回结果。
4.将所有取回的命中文件组合在一个小数据库中。现在,在查询和每个命中文件之间运行我们的1-1定位程序。计算每个取回的命中文件的SI_score。
5.根据SI_score的顺序报告最终结果。
使用相似性因子矩阵的分值计算
扩展信息元的精确匹配以生成相似性矩阵
代表性地,我们要求命中文件和查询共有相同的精确信息元。这叫做精确匹配,或者在序列定位问题中被称为“本身映射”。但是这不是必须的。在一些允许用户使用同义词的简单应用中,我们允许用户定义一张信息元同义词列表。这些有同义词的查询信息元也将被扩展至对数据库中的同义词进行搜索。目前我们用户接口支持该特征。该用户指定的同义词列表的上传不改变涉及的信息元的Shannon信息量。这是一个初级应用。
[0097]在更高级的应用中,我们允许用户通过装载不同的“相似性因子矩阵”进行“真正相似性”搜索。这些相似性因子矩阵提供具有相似意义的信息元列表,并且在它们之间分配相似性因子。举例来说,信息元“基因芯片”和“DNA微阵”有100%的相似性因子,但是和“微阵”可能只有50%的相似性因子,和“DNA样本”有30%的相似性因子;作为另一个例子,“UCLA”和“加州大学,洛杉矶”有100%的相似性因子,和“加州大学伯克利”有50%的相似性因子。这些“相似性矩阵”的来源可以是来自使用统计学或者不同字典。它是在算法之外的。它可以很主观而不是客观的。不同用户因为其兴趣和焦点的不同,可能偏好采用不同的相似性因子矩阵。
我们要求两个信息元之间的相似性因子对称,即,如果“UCLA”和“加州大学,洛杉矶”有100%的相似性因子,那么“加州大学,洛杉矶”必须和UCLA有100%的相似性因子。如果我们列出数据库中所有信息元(有N个不同信息元和一共M个信息元)的所有相似性因子,我们就形成一个N*N的对称矩阵,该矩阵中所有元素0<=aij<=1,并且对角元素是1。因为与一个信息元相似的信息元数量通常十分有限,所以相似性因子矩阵也就成了稀疏矩阵(大多数元素为零)。
计算每个信息元的Shannon信息
一旦给定某一数据库的分布函数和相似性矩阵,有一种独特的计算每个信息元的Shannon信息的方法:
SI(itomi)=-log2[(∑jaij*F(itomj))/M]
其中j=0,...N,并且M是数据库中总的信息元计数(M=∑i=0,NF(itomi)
举例来说,如果UCLA的频率是100,并且“加州大学,洛杉矶”的频率是200,并且数据库中所有其它信息元和这两个信息元的相似性因子为0,那么,
SI(UCLA)=SI(“加州大学,洛杉矶”)=-log2(100+200)/M。
对系统引入相似性因子矩阵减少了涉及的信息元的信息量,也减少了每个条目中以及整个数据库的总信息量。由于该因子矩阵的引入而产生的信息量的减少是可以被精确计算的。
计算两条目之间的Shannon信息分值
对给定信息元分布的给定数据库,以及数据库内信息元的外部给定的相似性因子矩阵,我们如何衡量两条目之间的SI_score。这里是概要:
1.读取查询,并且识别其中的所有信息元。
2.查阅相似性因子矩阵,识别与查询中这些信息元有非零因子的额外
信息元。这是一张扩展的信息元列表。
3.在命中文件中识别扩展信息元列表的频率。
4.计算该两条目之间的SI_score,通过:
SI(A1nA2)=∑ijaijmin(itom_iinA)SI(itomij)
搜索相关数据
文本数据库中可能涉及相关数据。在不同的应用中,相关数据的内容是不同的。举例来说,在专利数据库中,相关数据涉及到受让人和发明人;它还包括不同的例如优先权数据、申请数据、公布数据、授权数据等数据。在科学文献数据库中,相关数据包含:期刊名、作者、机构、准作者、准作者的地址和邮件、递交时间、修订和发表。
可以采用能够获得的搜索技术(单词/短语匹配和Boolean逻辑)来搜索相关数据。举例来说,可以查询一个具体时期内由一特定期刊发表的文章。或者可以搜索包含特定单词但不包含另一个特定单词的相关数据集合。通过匹配关键词、单词以及应用Boolean逻辑的搜索在本领域内是公知的。这里就不描述了。可在全文查询的检索框旁边提供这些搜索能力。它们能够对报告的命中文件作进一步限制。当然,也可以不使用全文查询的检索框。在这种情况下,搜索就变成基于Boolean逻辑或者关键词匹配的传统搜索了。
中文语言下的应用
我们搜索引擎的中文应用已经完成了。我们实现了两个文本数据库,一个是中国专利摘要数据库,而另一个是在线BLOG数据库。我们没有碰上任何特殊问题。我们处理了一些与语言相关的特殊启示:1)我们根据其使用频率筛选了400个常用中文字符(这个数字是可以调节的)。2)被识别的短语的数量远远超过单个字符的数量。这与英语不同。原因在于中文仅有~3,000个常用字符。多数“单词”或者“意思”由一个以上字符的一个特定组合表达。附图显示采用我们的搜索引擎进行的中文搜索的一些查询和输出。
信息空间和聚类的度量和距离函数
介绍
聚类是在数据挖掘中最广泛使用的方法之一。它被应用于许多领域中,如统计数据分析、模式识别、图像处理等。聚类将点集合分割成称为群的组,这样相似的点就被划入相同组中。点之间的相似性用满足三角不等式的距离函数定义;该距离函数以及点集合描述了一个距离空间。在距离空间中,在数据点上仅有的可能操作就是它们之间距离的计算。
可以将聚类方法分成两种基本类型:分层的聚类和分区的聚类。在每种类型中都存在大量子类型和用以寻找聚类的不同算法。分层聚类连续地进行合并小群至大群或者分割大群的操作。聚类方法在决定哪两个小群被合并或者哪个大群被分割时在规则上是不同的。算法的最终结果就是被称作树形图的群树,它显示了群是怎么相关联的。通过在一所需高度上截断树形图,便得到一些不相交的数据项目。分区的聚类,从另一方面来说,尝试直接将数据集合分解至不相交的群的集合中。通过给群分配以概率密度函数中的峰值或全局结构,聚类算法试图最小化的标准函数可以强调数据的当地结构。代表性地,全局标准涉及最小化每个群中的样本中的一些非相似性数值,同时最大化不同群中的非相似性。
这里我们首先通过用“信息度量”来扩展传统矢量空间模型,以给出“信息度量空间”的定义。然后我们显示该度量是怎样扩展至距离函数的。作为一个例子,我们采用定义的距离和度量,来演示一个最流行的聚类算法,K-means算法,的实施。这部分的目的不是为了穷举所有我们可以实现的潜在聚类算法,而是通过一个例子,以显示一旦引入我们的“信息度量”和“信息距离”概念,便可以应用各种不同的聚类算法。我们也演示了树形图是怎样生成的,其中每个枝干上列出了用于分离子集合的信息元。
该聚类方法在概念上与我们的“全文”搜索引擎相关。人们可以运行聚类算法以将整个数据库放到巨大的树形图或者许多较小的树形图中。搜索即为横穿树形图至小的子类和叶子(单个数据库条目)的过程。或者人们可以执行“飞行聚类”,其意味着我们针对搜索输出运行小范围聚类(该输出可来自任何搜索算法,而不仅仅是我们的搜索算法)。进一步地,人们可以针对用户兴趣在任何数据集合上运行聚类,举例来说,来自一个搜索算法的一个被选择的输出子集合。
Shannon信息的距离函数
我们的方法在矢量空间模型上扩展。信息元概念即为矢量空间中检索词的延伸。我们进一步地引入每个信息元的信息量的概念,它是一个与信息元频率相关联的正数。
假设给定了一个文本数据库D,由N个条目组成。对每个在D中的条目x,我们定义x的模(度量),称为信息量SI(x):
SI(x)=∑ixi
其中xi是在x中信息元i的所有信息量。
对于任何两个来自D的条目,我们定义距离函数d(x,y)(其中x,y代表条目,且d(.,.)代表函数)。
d(x,y)=∑ixi+∑jyj
其中xi是在x中且不在y中的信息元i的所有信息量,并且yj表示在y中且不在x中的信息元j的所有信息量。
如果一个信息元在x中出现m次在y中出现n次,而且m>n,则它应该用(m-n)*xi计算;如果m<n,它应该用(n-m)*yj来计算(这里xi=yj);如果m=n,那么它对d(x,y)的贡献为0。
在D上这样定义的距离函数有资格称为距离函数,它满足以下性质:
1)对任何D中的给定x,d(x,x)=0
2)对任何D中的x,y,d(x,y)>=0
3)对任何D中的x,y,d(x,y)=d(y,x)
4)对任何D中的给定x,y,z,d(x,z)<=d(x,y)+d(y,z)
这些性质的证明是显而易见的,因为每个信息元的信息量总是正的。因此,拥有d(.,.)的D现在是一个距离空间。
拥有信息距离的D空间中的K-means聚类算法
K-means(见J.B.MacQueen(1967):“一些用于多元观测值的分类和分析的方法,第五届伯克利数学统计和概率的讨论会记录”,伯克利,加州大学出版社,1:281-297)是最简单的聚类算法之一。该步骤遵循一个简单而且容易的方式通过一定数量的具有固定优先级的群(假设k个群)对一个给定数据集合进行分类。主要想法是识别k个最佳形心,每个群(得到)一个。为了方便,我们称空间D里的一个数据条目为一个“点”,并且两个数据条目间的距离就是两点间的距离。
什么是形心?它是由该空间的距离函数确定的。在我们的情况中,对于D中的两点,形心就是包含两个给定点的所有重叠信息元的点。我们可以称这样的过程为两点间的“联合”操作。很容易延伸该想法以得到多个点的形心。举例来说,三个点的形心,是通过“联合”前两个点的形心和第三个点得到的形心。一般来说,n个点的形心由所有数据点的共有信息元组成。
聚类算法目的在于最小化目标函数(所有信息元和它们的相应形心之间的非重叠信息元的累积信息量)
E = &Sigma; i = 1 k &Sigma; j = 1 ni d ( x ij , z i )
其中xij是第i个群里的第j个点,z1是第i个群的形心,且ni是该群的点数。记法d(xij,zi)代表xij和zi之间的距离。
数学上该算法由以下步骤组成:
1.从被聚类的点集合里随机选择空间中的k个点。这些点代表形心的初始组。
2.根据距离函数将每个点分配给具有最近的形心的组。
3.分配完所有点,重新计算k个形心的位置。
4.重复步骤2和步骤3直到形心不再移动。这使得所有的点都被分离进组中,由此可以对需要最小化的度量进行计算。
虽然可以证明过程终将会终止,但该k-means算法并不能有效地找到对应于全局目标函数极小值的最佳结构。该算法对初始时随机选择的群的中心也非常敏感。可以多次运行k-means算法以减少该影响。
具体到我们对距离的定义,如果数据集合非常不相交(由不相关材料组成),且如果k太小的话,减少到k个群的目标可能不能达到。如果这种情况发生了,必须增加k。事实上,k的精确数值应基于数据集合的本质从外部确定。
分层聚类和树形图
另一个进行聚类分析的方法是创建一个树形结构,即,一个被调查数据的树形图。通过采用我们上面所述的同样的距离数值,可以建立一个(或多个)显示数据点(数据库条目)是以何种顺序相互关联的树。在分层聚类中,针对包含所有点的单一群直至包含单一点的n个群,进行一系列的分区操作。
分层聚类可以被细分成聚集方法,该方法将n个点通过一系列融合放进组中,以及分割方法,该方法连续地将n个点分离进更精确的组中。聚集技术更常采用。可以用一张2维的图表也就是树形图代表分层聚类,该图说明了在分析的每个连续阶段所进行的融合或者分割。对于任何给定的数据集合,如果所有点至少有一个共有信息元,那么该群可以被缩减成具有一个根的一个单一分层树形图。否则将得到多个树形结构。
聚集方法
聚集分层聚类的过程产生数据点的一系列分割,Pn,Pn-1,......,P1。第一个Pn由n个单个点“群”组成,最后一个P1由包含所有n个点的单个组组成。在每个特定的阶段,该方法将最为接近的(最为相似的)两个群联合在一起。(在最初阶段,当然,这等于两个最接近的点联合在一起,因为在初始阶段每个群只有一个点。)
因为定义群之间的距离(或者相似性)的方式不同,产生了方法之间的不同。最常采用的分层聚类方法包括单个联接聚类、完全联接聚类、平均联接聚类、平均组联接以及Ward式分层聚类方法。这些方法的不同在于定义两群间的距离的方法不同。一旦定义了距离函数,这里所述的聚类算法以及许多额外方法可以通过采用计算包得到。这里就不详细叙述了,因为任何经过适当统计/聚类算法训练的人都能实现这些方法。
这里我们给出与我们的“信息距离”具体关联的新聚类算法的两个例子。一个叫做“最小群内距离”方法,另一个叫做“最大群内信息”方法。这两个方法是理论上独立的方法。实际上,依赖于数据集合,它们可以产生相同、相似或者不同的树形图拓扑。
最小群内距离联接
对于这种方法,在每个合并步骤中力求最小化群内距离。具有最小群内距离的集合被联接(合并)。定义两个组的形心间的距离为群内距离。换句话说,两个群r和s是这样合并的,在合并前,群r和群s间的信息距离是最小值。d(r,s)是群r和群s间的距离,用下式计算
d(r,s)=∑SI(i)+∑SI(j)
其中点i是r的形心中但不在s的形心中的一个信息元,且j是在s形心中但不在r形心中的信息元。对于在两个形心中都出现但具有不同出现次数的信息元,我们采用常用方法计算两点间距离。在分层聚类的每个阶段中,有最小d(r,s)的群r和群s被合并。
最大群内信息联接
对于该方法,在每个合并步骤中力求最大化群内信息重叠。具有最大群内信息重叠的组被联接(合并)。定义共同属于两个形心的信息元的累计信息为群内信息重叠。换句话说,两个群r和s是这样合并的,在合并前,两个群r和s的信息重叠是最大值。群r和群s间的信息重叠SI(r,s)用下式计算:
SI(R,S)=∑SI(i)
其中点i是r和s的形心中都有的信息元。在分层聚类的每个阶段,其SI(r,s)最大的群r和s被合并。
数据库合并理论以及数据库更新和分布式计算的应用
合并数据库的理论
如果给我们两个不同的数据库,并且我们想将它们合并至一个单个数据库,这个被合并的数据库具有什么特点?信息元是什么呢?其分布函数是什么?怎样将每个单个数据库的搜索分值转换成组合数据库的分值?在这个部分中,我们首先给出这些问题的理论答案。然后我们会说明如何将理论应用在现实生活应用中。
定理1.设D1D2为信息元频率分布为F1(f1(i),i=1,...,n1),F2(f2(j),j=1,...,n2)的两个不同的数据库,累积信息元的总数为N1和N2,并且不同信息元的总数为n1和n2。那么,合并的数据库D就有一共N1+N2个信息元,不同信息元的总数不少于max(n1,n2),并且信息元分布函数F:
f(i)=f1(i)+f2(i)如果i属于D1和D2
=f1(i)如果i仅属于D1
=f2(i)如果i仅属于D2
证明:该定理的证明是很显而易见的。F是分布函数,它必须满足:(1)0<=f(i)/N<=1。(i=0,...,n)并且(2)∑i=1.,nf(i)/N=1。
这是因为:
1)0<=f(i)/N=(f1(i)+f2(i))/(N1+N2)<=(N1+N2)/(N1+N2)=1,对所有i=0,...,n。
i=1,nf(i)/N=(∑i=1,nf1(i)+∑i=1nf2(i))/N
                                              2)
=(∑i=1,njf1(i)+∑j=1,n2f2(j))/(N1+N2)=(N1+N2)/(N1+N2)=1
这样的合并对每个信息元的信息量有什么影响?如果一个信息元是D1和D2共有的,该Shannon信息函数为:SI1(i)=-log2f1(i)/N1,SI2(i)=-log2f2(i)/N2。在合并空间D中该信息元的新信息量为SI(i)=-log2(f1(i)+f2(i))/(N1+N2)。从定理1我们知道这是一个正数。
如果一个信息元不是D1和D2共有的,其Shannon信息函数为:对于i在D1中不在D2中,SI1(i)=-log2f1(i)/N1。在合并空间D中的该信息元的新的信息量为:SI(i)=-log2f1(i)/(N1+N2)。再次地,我们知道这是一个正数。在D2中不在D1中的信息元的情况是类似的。这些信息元的Shannon信息量的含义是什么?对于一些特殊的情况,我们有以下定理:
定理2.1)如果数据库大小增加了但信息元频率没有改变,那么该信息元的信息量增加。2)如果信息元频率的增加正比于累积信息元总量的增加,那么该信息元的信息量不改变。
证明:对于任何在D1中不在D2中的信息元:SI(i)=-log2f1(i)/(N1+N2)>SI1(i)=-log2f1(i)/N1
2)因为频率是按比例增加的,我们有f1(i)/N1=f2(i)/N2,即,我们有:f2(i)=(N2/N1)f1(i)。因此:
SI(i)=-log2(f1(i)+f2(i))/(N1+N2)=-log2(f1(i)+(N2/N1)f1(i))/(N1+N2)=-log2f1(i)(N2/N1)/((N1+N2)N1)=-log2f1(i)/N1=SI1(i)
对于其他不被定理2覆盖的情况,信息元的信息量可以增加或者减少。以上简单理论在我们的搜索引擎中具有十分有用的应用。
合并数据库的应用
如果我们不得不合并许多数据库以形成一个组合数据库,定理1告诉我们可以怎样进行这样的合并。具体地,通过合并每个单个数据库的分布函数以生成新的分布函数。合并数据库的信息元会是所有来自每个作为组成部分的数据库的所有信息元的联接。在合并数据库中的该新信息元的频率通过对被合并的数据库中的每个信息元的频率求和来得到。
数据库更新的应用
如果我们用额外条目更新单个数据库,例如,按照每周一次或每月一次的进度更新,则分布函数F0也必须被更新。如果我们不想往分布中增加任何新信息元,我们可以简单地检查F0中的信息元列表以生成一个分布函数Fa(Fa将不含有任何新信息元)。根据定理1,Fn通过检查Fa中所有具有非零频率的信息元并且将其频率与其在F0中的相应频率相加而得到。
这是上述新分布的一个短处。即,先前在F0中被识别的信息元列表可能不会影响在Fn中的完整信息元列表,我们应该重新运行自动信息元识别程序。在实际当中,通过生成采用阈值的信息元备选群来解决这个短处,该阈值为例如信息元识别的要求阈值的1/2。然后在更新中,应该检查这些备选信息元中是否有任何一个在合并事件之后成为了当前的新信息元。如果有,应该将它们加入分布函数Fn。当然,这只是一个近似的解决方法。如果加入了例如比例超过25%的F0原始数据大小的实质数据,或者那些新数据和老数据相比在信息元频率上很不一样,那么用户应该对合并数据重新运行信息元识别程序。
分布式计算环境
当数据库大小很大,或者每次搜索的响应时间不得不非常短时,那么对分布式计算的需求是显而易见的。下面是我们搜索引擎的分布式计算的两方面:1)分布式信息元识别。2)分布式查询搜索。在该子部分中,我们首先给出一些分布式计算的环境背景、术语以及假定。
我们会称基本单元(具有或者不具有CPU、当地存储器、当地磁盘空间)为一个节点。我们假设有三种不同类别的节点,即,“主节点”、“从属节点”和“备份节点”。主节点是一个分配和管理工作的管理节点,它也提供接口给用户。从属节点进行一部分主节点给予的计算任务。备份节点则为可以按要求成为主节点或者从属节点的节点。
分布式计算环境应该以容错方式设计。主节点向每个“从属节点”分配工作,并且从每个从属节点收集结果。主节点还合并来自于从属节点的结果以生成手头问题的完整结果。主节点应该设计为容错的。举例来说,如果主节点失效,来自备份节点群的另一节点应该成为主节点。从属节点也应该设计为容错的。如果一个从属节点失效,备份节点应该在短时间内成为该从属节点的克隆。具有容错的最好办法之一就是对主节点和每个从属节点都设有两重冗余。在计算过程中,两重节点会执行相同的任务。主节点仅需要从其中一个克隆的从属节点(更快的那个)挑选响应。当然这种两重冗余很占用资源。一种更廉价的选择是仅设置一些备份节点,每个备份节点能够成为任何从属节点的克隆。在该设计中,如果一个从属节点失效,备份节点成为具备完全功能的从属节点需要一些时间。
在需要额外稳健的环境中,这些方法可以一起实施。即,每个节点会有一个具有相同计算环境的完全克隆的副本,并且在副本中会运行相同的计算工作。同时有一个备份节点群,其每个节点可以成为主节点或者任何从属节点的克隆。当然,任何时候只要有节点失效,系统管理员就应该被通知,并快速修复问题。
分布式信息元识别中的应用
假设数据库D分为D1,...,Dn,问题是:我们能否运行信息元识别程序的分布式版本以得到其分布函数F,以及所有信息元的识别及其频率?答案是肯定的!
让我们假设自动信息元识别的频率阈值为Tr,我们将采用Tr/n作为每个被分割的数据库的新阈值(Tr/n意味着每个频率阈值,我们用共同因子n来分割它)。(F,Tr)意味着采用阈值Tr产生的分布。在我们得到每个Di的信息元分布Tr/n后,我们采用阈值Tr/n将其合并以得到分布F,(F,Tr/n)。现在,为了得到(F,Tr),用户仅需去掉这些达不到新阈值Tr的信息元。
在子章节9.4中给定的环境中实施分布式信息元识别是显而易见的。即,主节点会将数据库D分成n个小子集,D1,...,Dn。n个从属节点中的每个节点会在该子集Di中用较小的阈值Tr/n识别信息元。当计算完成后结果将被返回至主节点。现在主节点组合来自每个从属节点的结果以形成具有阈值Tr的数据库D的完整分布函数。
分布式查询搜索中的应用
假设给予我们(D,F,Tr),其中D是数据库,F为其信息元分布函数,以及Tr为用以生成该分布的阈值。我们会将数据库D分成n个子集:D1,...,Dn。我们会将D的信息元分布函数分配至n个从属节点。因此,搜索程序在下述环境中运行:(D,F,Tr),即,仅搜索D的一个子集但使用与组合的数据库D相同的分布函数。
对于一个给定的查询,在得到来自特定Di的所有命中文件列表后,高于用户定义的阈值(或者默认阈值)的命中文件列表被送至主节点。主节点拣选各个命中文件(仅为了将结果重新排序),并将来自每个从属节点的命中文件列表合并为一个单一的命中文件列表。这里不需要分值上的任何调节,因为我们采用分布函数F来计算分值。我们得到的分值已经是针对整个数据库D的命中文件分值了。
该分布式计算设计从许多方面加速了搜索。首先,在每个从属节点中,计算量仅被局限在很小的数据库D1中。第二,因为现在的数据库小了得多,将完整数据储存进存储器是可行的,所以磁盘存取可以大部分或者完全省略。这会显著加快搜索,根据我们目前对搜索速度的调查,高达80%的搜索时间都耗费在了磁盘存取上。当然,这里不仅仅是Di的内容,完整的分布函数F也必须被下载进存储器。
信息理论的信息元数值的介绍
在同样处于申请过程中的专利申请中,我们在给定一分布的假设下提出了一种准确衡量文件的信息量的理论。该理论的基本假设为:
1.信息的基本单元为信息元。对于文本信息,信息元为内部识别或者外部定义的单词和短语。数据库中的一个条目可以看作是没有特定顺序的信息元集合。
2.对于给定的信息空间,信息元的信息量由分布函数确定。即Shannon信息。信息元的分布函数可以由手头的数据库内部生成或估计而得,也可以由外部提供而得。
3.信息元间的相似性由外部定义。除了分布函数,还可以对数据给定一相似性矩阵。外部定义的相似性矩阵会改变信息元的信息量,并且减少手头数据库的信息总量。
4.相似性矩阵A=(a(i,j))是一个对称矩阵,其对角元素为1。所有其他元素0<=a(i,j)<=1。
5.信息量是可相加的。因此,我们可以得到数据库中条目信息元的信息量,以及数据库中的总信息量。
6.如果我们采用频率分布作为给定数据库的信息数值的近似,可以容易地生成合并数据库的频率分布。该理论在分布式计算上有深远意义。
可以应用该概念比较不同条目以找到它们的相似性和不同。具体地,我们定义信息元距离。
1.如果两个信息元不相似,它们之间的距离是两个信息元IA(信息量)的总和。
2.两个相似信息元间的距离这样衡量:d(t1,t2)=IA(t1)+IA(t2)-2*a(t1,t2),其中a(t1,t2)是t1和t2之间的相似性因子。
3.两条目间的距离可以这样定义
a.对非相似信息元,两条目之间非重叠信息元的IA的总和。
b.对相似信息元,两条目之间非重叠信息元的IA的总和减去相似性部分。
为了衡量两条目或者数据区段间的相似性,我们可以采用以上的距离概念或者我们可以定义:
1.两条目或者两信息区段间的相似性可以用所有重叠信息元的信息量总和来定义。
2.或者,我们可以用所有重叠信息元的信息量的总和减去非重叠信息元的所有信息量来定义两条目间的相似性。
3.或者,在定义相似性时,我们可以对非重叠信息元采用一些简单的衡量,比如非重叠信息元的总数或者非重叠信息元的信息量乘以参数beta(0<=beta<=1)。
直接应用
1.科学文献搜索。可以被任何研究者使用。
科学文献数据库,包含摘要或者全文文章,可以采用我们的搜索引擎进行搜索。该数据库必须是汇编的/可得的。这些数据库的来源有很多,包括期刊、会议文献、论文和辅助数据库如MedLine和Thomson的SCI。
2.专利搜索:我的发明新颖么?任何相关专利?现有技术?
用户可以输入他/他的客户的专利的说明书。说明书可以是很详细的。用户可以使用该说明书来搜索已有专利的摘要或者全文数据库,或者已公布的申请。在该搜索中可以找到相关已有专利和申请。
3.相似案件的法律搜索:数据库中所有起诉的案件中最相似的案件是什么?
假设一个律师在准备一个民事/刑事案件的辩护,他想要知道相似案件是如何起诉的。他可以搜索民事/刑事案件数据库。这些案件可以包含不同的部分,如案件的摘要描述、辩护律师的辩护、支持材料、案件判决等等。开始,他可以撰写手头案件的摘要描述,并搜索所有记录案件的摘要描述数据库。之后,他可以通过以他提出的辩护论据为查询搜索辩护律师论据集合,以进一步准备其辩护。
4.电子邮件数据库。日志数据库。新闻数据库。
按惯例,电子邮件是一个很大的集合。在许多情况下人们需要搜索电子邮件的特定集合(可以是完整集合,一个部分中的子集合,或者由特定的人发送/接收)。一旦生成集合,可以应用我们的搜索引擎搜索该集合的内容。对于日志数据库和新闻数据库,没有很大的不同。内容搜索是相同的,这就是我们搜索引擎的直接应用。相关数据的搜索可能不同,因为每个数据集合有一个特定的相关数据集合。
5.企业网数据库:企业网网页、网页文件、内部记录、文件、特定集合。
许多机构和公司有不同数据库的巨大集合。这些数据库可能是生产明细表、内部通讯、财务文件等等。搜索这些企业网集合的需求很高,特别当数据没有很好地被组织时。如果是一个特定的企业网数据库,内容常常是非常同质的,(举例来说,企业网HTML页面),人们可以容易地建立一个特定格式的可搜索的文本数据库。
6.期刊、报纸、杂志以及出版社:该提交文件是新的么?有其他在先的相关公布么?识别潜在审阅者?
各个出版社,如期刊、报纸、杂志、商标以及图书,它们主要关心的一点是提交的文件是否是新的或者是其他文件的复制。一旦生成了在先提交文件的数据库,对该数据库的全文搜索应该能揭示任何潜在的复制。
此外,在对提交的文章选择审阅者时,采用文本中文章的摘要或者关键段落对文章数据库进行搜索将给出备选审阅者的列表。
7.台式电脑搜索:我们可以提供对你台式电脑中多种文件格式的所有内容的搜索(MS-Word,幻灯片,Excel,PDF,JPEG,HTML,XML等等。)
为了在马赛克式的文件格式下进行搜索,需要一些文件格式约定。举例来说,PDF文件、DOC文件、EXCEl文件,在搜索进行前它们都不得不首先转换成平面文本格式,并被汇编入一文本数据库中。这些文件的文件地址的链接应该被保存在数据库中,所以在进行搜索后,命中文件的链接会指向原始文件,而不是转换后的平面文本文件。然而定位文件(在我们目前的接口中通过左链接显示)会采用平面文本。
8.司法部门、FBI、CIA:犯罪调查,反恐
假设有一个罪犯和嫌疑人的数据库,包含国际恐怖分子的嫌疑人。当新案件发生时,可以根据涉及的罪犯或者犯罪主题的描述,搜索罪犯/嫌疑人的数据库或者犯罪主题数据库。
9.对国会和政府机构的立法机关和规章等等的搜索。
有许多涉及不同事件的政府文件、规章以及国会立法。对于用户来说,寻找涉及一个特定主题的特定文件是很难的。甚至对于培训过的人来说,这个任务也可能非常吃力,因为材料集合的量很巨大。然而,一旦我们有这些文件的完整集合,采用长文本作为查询对其搜索就会容易。我们不需要这些数据的内部结构,我们也不需要对用户进行大量培训。
10.因特网
搜索因特网也是我们发明的一项一般应用。这里不局限用户仅通过一些单词进行搜索。他可以询问复杂的问题,输入他想要搜索的内容的详细描述。在后端,一旦我们有很好的因特网内容集合或者他所关心的特定部分的因特网内容,那么搜索任务是很容易的。
目前,我们没有因特网内容搜索的相关数据。不过我们可以有对因特网内容的不同分区。举例来说,在我们“因特网内容搜索引擎”的第一应用中,我们可以有包含所有因特网内容的默认数据库,同时给予用户将其搜索缩小至针对一特定分区的选择权利,可以是“产品列表”、“公司列表”和“教育机构”,仅仅给出一些例子。
对垃圾邮件的电子邮件筛选
如今电子邮件系统的一个问题是有太多垃圾邮件(不同种类的广告和宣传)。许多电子邮件服务提供对这些垃圾邮件的筛选。这些筛选方法种类不同,但多数是以匹配关键词和字符串为基础的。这些方法不足以应对许多不同种类的垃圾邮件。它们不够准确。结果,我们遭遇了两重问题:1)不充分的筛选:许多垃圾邮件逃避了现有筛选程序并最终进入用户的常规电子邮件集合;2)过度筛选:许多重要电子邮件、正常的/个人电子邮件被筛选到垃圾邮件分类中了。
在我们的方法中,我们首先会建立一个垃圾邮件数据库。该数据库包含已知的垃圾邮件。任何进入的邮件首先在该数据库中搜索。以命中文件分值为基础对其分类:(1)垃圾邮件,(2)正常邮件,(3)不确定。这些分类是以阈值来定义的。这些对于垃圾邮件数据库来说命中文件分值比一个高阈值还要高的邮件被自动放入分类(1);这些命中文件分值比一个低阈值低或者根本没有命中的邮件被放入正常邮件分类。那些命中文件分值处于高低阈值之间的邮件,放入分类(3),并可能需要人工干预。处理分类(3)的一种方法是让它们进入收件人的正常邮件收件箱,并且同时让人进一步识别它。对于任何被识别的新垃圾邮件,它们会被增加进已知垃圾邮件的数据库。
用户可以向电子邮件管理员报告收到的新的垃圾邮件。用户应该将嫌疑/识别的垃圾邮件提交至电子邮件管理员。该电子邮件管理员可以进一步检查所提交的电子邮件身份。一旦垃圾邮件的身份确定,管理员可以将这些垃圾邮件增加进垃圾邮件数据库以备将来筛选目的。这是一个更新垃圾邮件数据库的方法。
这种筛选垃圾邮件的方法应该增加了目前搜索算法缺少的精确度。它不仅可以识别与已知的垃圾邮件相同的邮件,还可以识别修改过的。垃圾邮件的制造者需要花费很大的力气来充分修改其信息,以逃避我们的垃圾邮件筛选程序。
筛选病毒的程序
许多病毒以其他媒体格式植入电子邮件,并且感染计算机系统以及使文件系统恶化。如今有许多病毒检查程序和病毒筛选程序(举例来说,McAfee)。这些筛选方法种类不同,但多数是以匹配关键词和字符串为基础的。这些筛选方法不足以应对许多不同种类的病毒。它们不够准确。结果,我们遭遇到两重问题:1)不充分的筛选:许多病毒或者被病毒感染的文件从筛选程序中逃逸;2)过度筛选:误将许多正常文件被确认为感染文件。
在我们的方法中,我们首先建立一个适当的病毒数据库。该数据库包含已知的病毒。任何进入的电子邮件或者任何在筛选过程中存在于文件系统中的文件首先在该数据库中搜索。以分值为基础对其分类:(1)病毒或感染病毒,(2)正常文件,(3)不确定。该分类是以阈值为基础的。这些在病毒数据库中超过高阈值的命中文件被自动放入分类(1)这些比低阈值低或者没命中的被放入正常文件分类。在高低阈值之间的可能需要人工干预。处理分类(3)的一种方法是锁定对这些文件的存取,并且同时让专家进一步识别其是否被感染。对任何被识别的新病毒(那些在目前病毒数据库中无精确匹配的病毒),将它们放入病毒数据库,这样将来这些病毒或它们的变形体将不能通过筛选。
用户可以向安全管理员报告他们看见或察觉到的新病毒。这些嫌疑文件应该被专家进一步检查,其采用的方法包含我们的病毒识别方法,但不局限于我们的方法。一旦病毒身份确定,将其增加进已有的病毒数据库以备将来筛选的目的。这是更新病毒数据库的一种方法。
这种筛选病毒的方法增加了目前搜索算法缺少的精确度。它不仅可以识别与已知病毒相同的病毒,还可以识别旧病毒的修改版本。病毒开发者需要花费很大的力气来充分修饰其病毒以从我们的病毒筛选程序中逃逸。
在求职、就业中心以及人力资源部门中的应用
所有的就业中心、求职网站以及人力资源部门都可以采用我们的搜索引擎。让我们用基于网页的就业中心作为例子。基于网页的“XXX就业中心”可以许可并将我们的搜索引擎安装在其服务器上。该就业中心应该有2个独立的数据库,一个包含所有简历(CV_DB),另一个包含所有职业空缺(Job_DB)。对于登陆网站的候选人,他可以使用其全部CV或者他的部分CV作为查询对Job_DB搜索以寻找最匹配的职业。对于一个猎头或者雇佣经理,他可以使用其职业描述作为查询搜索CV_DB以寻找最匹配的候选人。基于非网页的数据库以及人力资源部门对该版本的应用的修改是显而易见的,这里不给出细节了。
版权侵害和抄袭的识别
许多出版社、新闻组织、期刊以及杂志都关心所提交作品的原创性。怎样检查所提交的文件以确定它不是旧的呢?怎样识别潜在的抄袭呢?这不仅是成果品质的问题,还意味着法律责任。这里可以容易地应用我们的搜索引擎。
第一步就是建立可能会被他人侵害的相关数据的数据库。该集合越大,就能越好地识别潜在的版权侵害或者抄袭。下一步很典型。仅需要在该数据库中对部分提交或者完整提交的材料进行搜索,就能识别侵害者。
用于识别版权侵害或者抄袭的更灵敏的算法是章节6中阐明的算法。原因是在复制的材料中不仅信息元被复制,而且很可能这些信息元的顺序也被完全保留或者稍作修改。这样就更容易通过计算信息元出现顺序的算法挑出命中文件。
一个间接因特网搜索引擎
我们可以建立一个低成本的以间接全文为查询的信息相关性搜索引擎。我们称其为“间接因特网搜索引擎”或者IISE。其基本思想为我们不用成为所有网页内容的当地主机并且生成分布函数。取而代之的是,我们将采用现有的基于关键词的因特网服务器作为中间媒体。
当地样本数据库和分布函数的准备
计算相关性分值的关键是分布函数。通常我们通过自动程序生成该分布函数。然而,如果我们没有完整的数据库可用,我们怎样生成“近似”的分布函数呢?在统计中这类问题被回答了多次。为了简便,我们假设我们已经知道数据库中的所有信息元(举例来说,该信息元列表可以从网页数据覆盖的单词短语字典被直接输入。)即,如果我们选择一随机样本,并且如果该样本足够大,我们可以生成相当好的分布函数的近似。当然,样本大小越大,该近似值越好。对于那些我们可能在单个样本里漏掉的稀少信息元,我们可以分配给其我们已经抽样的所有信息元中最高的分值。
实际上,我们将收集的(大约1百万页面)样本因特网数据库作为起点。我们将在该数据集合上运行我们的信息元识别程序以生成分布函数。我们将得到的所有字典单词和短语添加到该集合中。再有,对任何样本数据集合中的零频率信息元,我们将为其分配一个高信息量。我们将样本数据库叫做D_s,且其频率分布函数为F_s,或者缩写为(D_s,F_s)。
分步说明搜索引擎怎样工作
这里是搜索过程的概要:
1.用户输入查询(关键词或者全文)。如果用户需要,我们将允许用户采用特定标记以识别包含多个单词的短语。举例来说,用户可以将特定短语放入引号或者括号内以表明这是一个短语。
2.IISE根据设置在当地服务器上的现有信息元分布来解析查询。它会在分布函数里识别所有存在的信息元。对于未识别单词来说,信息元识别的默认方式是将其作为一个单个信息元。对于被置于特定的短语标记内的未识别单词,该标记内的整体内容将被作为一个单个信息元被识别。
3.对于任何不在分布函数里的信息元,我们分配一个默认SI分值。该分值应该是相对高的分值,因为我们的当地分布函数是常用单词和短语的很好的表示。无法识别的任何东西都很少。这些新识别的信息元和它们的SI-score将会被合并到进一步计算中。
4.我们选择有限数量的信息元(采用与完整的当地分布函数存在处相同的规则)。即,如果查询短于200个单词的话我们将采用最多20个信息元。如果查询多于200个单词,我们将新数量增加至查询单词计数的10%。举例来说,如果查询是350个单词,我们将选择35个信息元。选择信息元的默认方式是根据它们的SI-score。高SI-score的信息元是首选。然而,我们将限制不在当地分布内的信息元的数量少于50%。
5.将信息元分成4个组。这里采用4是任意选择的。根据系统表现,可以将其修改(2到10之间的任意数)。该选择是随机的,即那些具有高信息量的应该与那些低信息量的混合。如果最后一个组小于4,通过向该列表里增加最低信息量的单词,或者通过搜索未使用信息元群里的信息元(首先选择那些具有高信息量的),以使得该组达到4。
6.对于每个信息元组,将查询送至“工艺现状”关键词因特网搜索引擎。举例来说,现在对于英文语言查询,我们应该采用“Yahoo”、“Google”、“MSN”以及“Excite”。采用多少搜索引擎是任意的。为了说明目的,我们假设其为3。
7.收集来自每个搜索引擎的回复,对每个组形成一个当地暂时的数据库。我们应该从搜索结果中检索所有网页,将每个网站限制在1,000个网页(链接)内。(这里1,000只是一个参考,可以根据计算速度、服务器容量和来自外部搜索引擎的结果网站来改变)。
8.我们将该被检索的数据库命名为DB_q,以表示这是通过查询得到的数据库。现在,我们运行我们内部信息元识别程序以识别包含在该数据库中的新信息元。因为这不是随机数据库,我们不得不调节这样被识别的每个信息元的信息量,这样它就能与我们现有的分布函数比较了。任何在原始查询中但不在识别列表中的信息元,也应该被加入。我们将该分布称为:F_q。请注意,F_q包含不在我们当地分布函数(D,F)中的信息元。通过合并这两个分布我们得到(D_m,F_m)。这就是我们将要采用的更新的分布函数。
9.对每个返回的备选,与查询进行成对比较以生成SI-score。
10.以SI-score为基础对所有命中文件评级,通过我们的标准接口向用户报告带有分值的命中文件列表。当然命中文件的报告也通过用户可调的对话参数来控制。默认的参数设置应该由我们提供。
结构化数据的搜索引擎
采用信息元信息量来衡量信息相关性的一般理论可以应用到结构化的或是非结构化的数据。在一些方面,对结构化数据应用该理论更有益处。这是因为结构化的数据更“信息元化”,即信息更可能处于信息元水平,并且这些信息元的顺序的相关性比在非结构化数据中的次要。结构化数据可以是不同形式的,举例来说,XML、相关数据库以及以用户为中心的数据库。为了描述简便,我们仅关注在相关数据库中定义的结构化数据。这里开发的理论被应用到其他结构化形式里以衡量信息相关性时所做的调节是显而易见的。
一个相关数据库是数据集合,其中的数据根据数据间的关系被组织和存取。数据项目间的关系通过表格手段来表达。假设我们有一个由L表格组成的相关数据库,那些表格通常通过关系彼此相关,如外文关键词、一对多映射、多对一映射、多对多映射和其他通过被存储的过程定义的约束和复杂的关系。一些表格仅在其内包含关系。在每张表格中,通常有个主id字段,其后跟随有一个或多个包含由主id确定的信息的其他字段。对相关数据库的归一化有不同级别。这些归一化的形式的目的在于减少数据冗余和密度,以使数据更容易处理。
一列中作为信息元的不同项目
对一数据库内的给定字段,我们可以定义一个分布,正如我们以前做过的一样,唯一不同的就是将内容限制为该字段的内容(通常称为表格中的一列)。举例来说,具有N行的primary_id字段会有一种分布。其含有N个信息元,每个primary_id都是一个信息元,其分布函数为F=(1/N,...,1/N)。该分布对给定的N个信息元有最大信息量。对其他字段,例如,具有10个项目的列表的一列。那么这10个项目中的每一个都是一个不同的信息元,并且通过行中项目的出现来定义分布函数。如果一个字段是外文关键词,那么该字段的信息元就是外文关键词本身。
一般来说,如果表格内的字段有相对简单的条目,如数字、一个或几个单词条目,那么最自然的选择是将所有独特项目当作信息元。那么与该列相关联的分布函数就是这些项目的出现频率。
为了说明目的,假设我们有一期刊摘要的表格。
primary_id
标题
作者列表
期刊名
发表日期
页码
摘要
这里,primary_id的信息元是primary_id列表。分布为F=(1/N,...,1/N),其中N是文章的总数。期刊名是另一个字段,其中每个特别的条目就是信息元。其分布为F=(n1/N,...,nk/N),其中n1,...,nk是表格中期刊i(i=1,...,k)的文章数,k是期刊的总数。
页码字段的信息元是出现的特定页码数字。为了生成一个完整的特定信息元列表,我们不得不将页码分成单个个体。举例来说,pp5-9,应该翻译成5,6,7,8,9。所有在该字段内的特别页码数的组合形成该字段的信息元列表。
对于发表日期,所有出现在数据库中的月、年、日的特别列表就是信息元列表。可以将它们看成组合,或者它们可以进一步被拆成独立字段,即年、月、日。所以,如果我们有Ny个特定年、Nm个特定月以及Nd个特定日,那么特定信息元的总数为:N=Ny+Nm+Nd。根据我们的理论,如果我们将发表日期分成三个子字段,来自这些字段的累积信息量与将它们放在单个年月日信息混合的发表日期字段内相比会小。
可分解为信息元的项目
对于更复杂的字段,如文章标题或者作者列表,将定义不同的信息元。当然,我们仍然可以将每个条目定义成为一个特定信息元,但是这没有很大帮助。举例来说,如果用户想要通过作者之一的名字或者标题的关键词来检索文章,又如果我们的信息元是特定标题的完整列表和特定的作者列表,我们将不能在信息元层面解决问题。
取而代之的是,我们这里考虑定义内容中更基本的部分为信息元。以作者字段为例。每个特定作者或者每个特定的姓或名可以是一个信息元。在标题字段,每个单词或者短语可以是信息元。我们可以仅仅在单个字段的内容上运行信息元识别程序以识别信息元并且生成它们的分布函数。
长文本字段的分布函数
摘要字段通常是长文本。它包含与非结构化数据相似的信息。我们可以将字段文本转存为大的单个平面文件,然后如同我们之前对给定的文本文件所做的那样,得到该字段的信息元分布函数。信息元可以是单词、短语或者文本中任何其它更长的重复形式。
表格内数据的信息相关性搜索
在信息相关性查询中,我们不寻找用户所问的每个字段的精确匹配。作为替代,对每个潜在命中文件,我们计算查询的整个命中文件的累积信息相关性分值。与查询的多个字段相匹配的总分值仅是每个字段内匹配信息元的信息量总和。我们根据该分值评定所有命中文件,并且向用户报告该评级列表。
采用与先前相同的例子,假设用户输入查询:
primary_id:(空)
Title:DNA microarray data analysis
List of authors:John Doe,Joseph Smith
Journal_name:J.of Computational Genomics
Publication_date:1999
Pages:(空)
Abstract:noise associated with expression data.
上述查询的SQL会是:
select primary_id,title,list_of_authors,journal_name,publication_date,page_list,
abstract from article_table where
title like‘%DNA microarray data analysis%’
and(author_list like’%John Doe%’)and(author_list like=’%Joseph Smith%’)
and joumal_name=’J.of Computational Genomics’
and publication_date like’%1999%’
and abstract like’%noise associated with expression data%’
目前的关键词搜索引擎会尝试精确匹配每个单词/字符串。举例来说,在标题中的单词“DNAmicroarray data analysis”必须全部在文章的标题中出现。每个作者必须在作者列表里出现。这会使定义查询很难。由于与人类记忆相关的不确定性,输入字段的任何特定信息都可能是错的。用户寻找的是上述查询的邻域。如果漏掉一些项目则是没有关系的。
在我们的搜索引擎中,对每个primary_id,我们会计算每个匹配信息元的信息量分值。然后我们概括该primary_id的所有信息量。最终,我们根据累积信息量对所有分值在零以上的内容评级。字段内具有更多样的信息的匹配可能会比信息少的字段对总分值有更多贡献。因为我们只计入正值匹配,不匹配的根本不影响。这样用户就被鼓励输入尽可能多的他所知道的和他所询问的主题有关的信息,而不会因为他所提交的额外信息导致漏掉任何命中文件。
当然,这将会是CPU的扩张操作,因为我们不得不对每个条目(每个特定primary_id)进行计算。在实施中,我们并不是必须这样做。当信息元被索引时(逆索引),例如,我们可以生成包含至少一个信息元或者至少两个信息元的备选primary_id的列表。举例来说,近似的另一方式是为特定的重要字段(具有巨大信息量的字段,举例来说,标题字段、摘要字段或者作者字段)定义筛选阈值。仅有那些在所选字段中高于阈值至少一分的备选会被进一步计算真实分值。
与主表格相关联的额外表格(分布和逆索引)
在一个典型的相关数据库表格中,每个重要列都包含索引以方便搜索。所以会有一张与主表格相关联的关于那些索引字段的索引表格。这里我们也会做一些添加。对于每列X(或者至少是重要列),我们有两张关联表格,一张叫做X.dist,另一张叫做X.rev。在X.dist表格中,它列出了该字段的信息元分布。X.rev是信息元的逆索引。这两张表格的结构与基于信息元分布表格和逆索引表格的平面文件的情况本质上是相同的。
涉及多张表格的单个查询
在多数场合,数据库包含许多表格。用户的查询可能涉及许多表格的内容。举例来说,在以上关于期刊文章的例子中,有可能我们有以下表格:
文章表格       期刊表格       作者表格         文章作者
---------      ----------     ------------     ------------
Articale_id(primary)Journal_id(primary)Author_id(primary)Article_id Author_id
Journal_id(foreign)Joural_name       First_name
Publication_date   Journal address   Last_name
Title
Page_list
Abstract
当对数据库进行关于相同查询的搜索时,它会形成复杂查询,其中涉及多张表格。在本例中,SQL语言为:
select ar.primary_id,ar.title,au.first_name,au.last_name,j.name,
ar.publication_date,
ar.page_list,ar.abstract from article_table as ar,journal_table as j,author_table as
au,
article_author as aa
where ar.article_id=aa.article_id and ar.journal_id=j.jouranl_id and
au.author_id=aa.author_id
and ar.title like’%DNA microarray data analysis%’
and(au.first_name=’John and
au.last_name=’Doe’)and(au.first_name=’Joseph’and au.last_name=’Smith’)
and j.name=’J.of Computational Genomics’
and ar.publication_date like‘%1999%’
and ar.abstract like‘%noise associated with expression data%’
当然,这是一个非常限定的查询,并且可能只会生成很少的返回。在我们的方法中,我们会生成一个备选群,在信息相关性基础上对该备选群评级,该信息相关性是根据重叠信息元的累积信息量定义的。
实施搜索算法的一种方式是虚拟表格的格式化。我们首先联合所有包含有最终报告(输出)所需的所有字段的被涉及的表格,以形成一虚拟表格。然后我们在每个字段(信息元分布表格和逆索引表格)上运行我们的索引方案。有了信息元分布表格和逆索引表格,这里定义的复杂查询问题就简化成我们在单个表格的情况中所解决的相同问题了。当然这样做的代价是很高的:对每次复杂查询,我们不得不形成该虚拟表格并且进行索引步骤。该连接类型可以是左外连接。然而,如果对连接的二级表格(即,不包含primary_ID的表格)中的一些字段实施“强制的”限制,那么在一些实施例中可以对那些具有强制字段的表格应用“内连接”,这样就能节省一些计算时间。
进行复杂查询的信息相关性搜索还有其它方法。一种是在数据库中对每个重要表格字段形成分布函数和逆索引。当查询发生时,在这些重要字段上采用一些最小阈值要求以生成备选群。那么对备选的精确分值计算可以通过与每个字段相关联的分布表格来进行。
非结构化数据的搜索引擎
非结构化数据的环境
在公司、机构或者甚至家庭中有许多非结构化数据计算机系统。通常非结构化数据设置在台式电脑硬盘中或者包含不同数据目录的特定文件服务器上,包括用户家庭目录以及特定文件夹。文件格式可以很多样。
为了简便,我们假设一家有N台台式电脑的典型公司。这些电脑通过局域网链接。在局域网中每台个体电脑硬盘上的文件是可存取的。我们进一步假设台式电脑包含不同文件格式。那些符合我们兴趣的是有重要文本内容的。举例来说,以Microsof tword、power pointer、Excel spread sheet、PDF、GIF、TIG、postscript、HTML、XML为格式。
现在我们假设有一个也连接到局域网的服务器。该服务器针对非结构化数据存取运行一个程序,叫做SEFUD(非结构化数据搜索引擎)。该服务器有连接所有电脑(称为客户机)和连接包含用户文件(对客户文件的存取不一定要完整,因为一些在用户电脑上的文件被认为是私人的,服务器不可存取。这些文件是不可搜索的)的特定目录的权利。当运行SEFUD时,对于任何查询(关键词、全文),它会在局域网的每台电脑上搜索以生成组合命中文件。为达到该目的有不同方式。
客户机上的信息元索引
我们在每个客户机上有一个叫做“文件转换器”的程序。该文件转换器将每个不同格式的文件转换成单个文本文件。一些文件格式可能被跳过,例如二进制可执行文件和压缩文件。如果文件特别巨大的话该文件转换器也可截短文件。文件的最大大小为用户可定义的参数。原始文件中任何比最大文件大小长的部分在转换后会被截去。
转换后的文本文件可以是标准XML文件,或者是FASTA文件,正如我们这里采用的例子一样。定义我们的FASTA格式为:
>primary_file_id meta_date:name_value_pairs
Text...
该相关数据应该至少包含文件的以下信息:计算机名、文件绝对路径、存取模式、作者、修改的最后日期以及文件格式。文本字段会包含来自原始文件(可能被截短)的转换文本。
来自整个电脑的链接FASTA文件会形成一个巨大的文件。在这个阶段,我们在数据集合上运行我们的信息元索引算法。它会产生与FASTA文件关联的两个文件:信息元分布列表文件和逆索引信息元查找文件。如果给信息元分配ID,那我们就多了一个文件:信息元ID和其真实文本内容间的映射。
该信息元索引程序可以在没人使用电脑的晚上运行。它会用很长时间生成第一信息元索引列表;但是将来的信息元索引列表会以增量方式生成。因此花在日常基础上的这些增量更新不会占用过多计算机资源。
分布式文件的搜索引擎
有两种不同方法进行该搜索。一种是在当地服务器上进行,另一种是让每台个体电脑运行各自的搜索,接着在服务器上组合搜索结果。方法1.重服务器轻客户机
在该方法中,服务器进行大部分的计算。来自客户的资源要求很小。我们首先将信息元分布文件合并至一单个的信息元分布文件。因为每个单个分布式文件包含其自身的信息元列表及其频率,以及文件的信息元大小,所以生成合并的分布函数是很简单的(见先前的专利申请)。组合的逆索引文件的生成也是很直接的。因为逆索引是信息元出现的分类文件,用户仅需在逆索引中列表的每个文件的primary_file_id前面加上computer_id。
当然,用户可以简单地链接所有的原始FASTA文件,并从那里生成信息元分布文件。该方法的好处是自动产生的信息元可能会更准确更广泛。但该方法更耗时间,并且失去了分布式计算的意义。
这里是典型搜索中服务器计算的概要:
1.在查询提出前,服务器必须从每个客户机收集所有的信息元分布文件和信息元逆索引文件。然后它生成适合于所有来自客户机的数据的信息元分布文件和逆索引文件。
2.当查询被提交给服务器时,它首先被基于信息元分布文件分解为信息元。
3.当查询信息元已知,用户可以通过逆索引文件生成命中文件的备选群。
4.然后服务器会检索来自每个客户机的当地FASTA文件的备选命中文件的文本文件。
5.针对查询对每个备选运行1-1比较程序。生成每个备选命中文件的SI-score。
6.根据它们的SI-score评定命中文件。
7.具有根据分值排序的最佳命中文件和其相关数据的用户接口会被显示给用户。这里有多个可用链接。举例来说,与primary_file_id相关联的左链接可引入与查询间的定位;命中文件,以及具有文件的相关数据的中间链接也包含一指向原始文件的链接;并且来自SI-score的链接会像通常一样列出所有命中信息元和它们的信息量。
方法2.重客户机轻服务器
在该方法中,对服务器的计算要求是很有限的,并且查询搜索的计算多数由客户机进行。首先我们并不将信息元分布文件合并为一单个的信息元分布文件。取而代之的是,将相同查询分配至每个客户机,并且客户机将在其当地的平面文件数据库中进行搜索。接着它会向服务器报告所有命中文件。该服务器在收到来自每个单个客户机的命中文件报告后,会进行另一轮SI-score计算。在该计算步骤后,它会生成最终报告并将结果报告给用户。
这里和方法1最关键的不同在于,服务器从客户机处收到的分值是仅适合设置在那台单个客户机上的当地数据的当地分值。我们怎样将其转换成可应用于所有客户机的集合数据的全局分值呢?这里我们需要多一条的信息:每个单个客户机处的信息元数量的总量。服务器会收集每个客户机报告的所有信息元,并且以来自所有客户机的每个信息元的信息量和每个客户机的总信息元数量为基础,服务器会调节每个信息元的分值。在那之后,来自每个客户机的每个信息元分值会以适合于所有客户机的累积数据的新的信息元信息为基础被调节。仅在这个阶段,来自不同客户机的命中文件在SI-score上的比较才有意义,并且以调节后的分值为基础的命中文件的重新评级适用于来自所有客户机的组合数据集合。
这里是该分布式搜索方法的服务器计算概要:
1.向服务器提出查询时,不对信息元进行解析而是直接将其送至每个客户机。
2.每个客户机采用相同的查询对其所有的特定数据集合进行搜索。
3.每个客户机针对最佳命中文件传回命中文件。
4.服务器从命中文件列表生成特定信息元的集合。它从客户机的分布表格中检索这些信息元的信息频率。它计算出现在报告的命中文件中的每个特定信息元的新信息量。
5.服务器通过为每个特定信息元调节信息元信息量,来重新调节来自每个客户机的命中文件分值。
6.以它们的SI-score为基础评定命中文件。
7.具有根据分值排序的最佳命中文件和其相关数据的用户接口会被显示给用户。这里有多个可用链接。举例来说,与primary_file_id相关联的左链接可引入与查询间的定位;命中文件,以及具有文件的相关数据的中间链接也包含一指向原始文件的链接;并且来自SI分值的链接会像通常一样列出所有命中信息元和它们的信息量。
连续文本数据的搜索引擎
有序的字符串搜索的介绍
这是本质上新的东西。到现在为止,我们假设信息元的顺序根本不要紧。我们仅关心它们是否被提出。在一些场合,用户可能不满意这种匹配。用户可能想要识别具有精确或者相似顺序的信息元的命中文件。这是更为限制性的搜索。
在特定场合不仅涉及的信息元对搜索重要,它们出现的精确顺序也重要。举例来说,为了防止抄袭,编辑不仅对与该文件内容相关的历史文章有兴趣,还对该文章是否有任何区段与现有文件有很大的相似性感兴趣:文章的一定长度的区段中单词的精确顺序。在另一些场合,假设一家电脑公司担心其软件程序的版权侵害。用竞争者/仿造者的编码复制特定模组是否可能?我们都有从不同歌曲中听到相似音乐音调的经历。是随机的相似性还是该音乐的作曲人从另一首老歌里剽窃了一些好的旋律?
在所有这种场合,问题是明显的。我们可以设计一个能够识别不同数据之间相似性的程序么?我们可以将统计重要性与我们识别的相似性关联么?第一个问题可以通过动态编程算法解决。第二个问题已经在涉及遗传数据的序列搜索算法中被解决。
该搜索算法与蛋白质序列分析很相似,不同的就是序列分析中的氨基酸现在我们用信息元代替。在蛋白质搜索中给每个匹配分配一个特定正分值,在我们的搜索中给每个信息元匹配分配一个正分值(其Shannon信息)。我们也可以定义空隙起始和空隙扩展处罚。在所有这些工作之后,我们可以运行动态程序以识别数据库中的HSP,其中不仅内容在信息元级别进行匹配,其顺序也被保存。
一旦信息元之间的相似性矩阵被给定(见第五部分),并且每个信息元的Shannon信息量被给定,用以寻找HSP的动态编程算法是已知动态编程程序的直接应用。许多培训过的程序员知道怎样实现这样的算法。这里不详细介绍了。
我们针对抄袭的贡献在于对信息元和其信息量的引入。直觉地说,对编码中的缺陷或者打错的单词的匹配是对抄袭作品的很好的指示。这是我们理论的直觉式应用:打字错误或者程序缺陷在软件集合中是少有的,因此它们有很高的信息内容。一篇文章中3个共同单词的匹配可能不能指明抄袭,但一篇文章中同一顺序的3个稀少单词或者3个拼错单词的匹配就能有力地指明抄袭。这里我们可以看出将信息元频率合并至统计重要性的计算中的重要了。
动态编程,Levenshtein距离和序列定位
动态编程是美国数学家Richard Bellman(1957)的想法。它描述了为存在多个解决方案的问题寻找最好的解决方案的方法,当然,是否是“最好的”是通过客观函数定义的。动态编程的本质是最优性原理。该原理基本上是直觉的:
最优的解决方法有这样的性质:不论起始状态和起始解决方案是什么,剩余的解决方案必须能够从第一解决方法产生的结果状态中构建出一个最优解决方案。
或者用平实的语言说:
如果你不最优地处理你碰巧得到的,你永远无法最优地处理你应该做的。
在1966年,Levenshtein正式化了编辑距离的概念。Levenshtein距离(LD)是两字符串间的相似性数值,其涉及源字符串(s)和目标字符串(t)。该距离是将s转换成t所要求的删除、插入或者替换的数量。Levenshtein距离越大,字符串就越不同。Levenshtein距离算法在拼写检查、演讲识别、DNA和蛋白质序列相似性分析以及抄袭探测中应用。
Needleman-Wunsch(1970)是第一个应用编辑距离和动态编程以定位生物序列的。广泛使用的Smith-Waterman(1981)算法很相似,但是解决的问题稍有不同(当地序列定位而非全局序列定位)。
数据库搜索设置中的统计报告
我们将Levenshtein距离修改成两字符串间的距离数值,其涉及源字符串(s)和目标字符串(t)。该距离是非匹配信息元的信息量,加上将s转换成t所要求的删除、插入或者替换的处罚。举例来说,假设每个上例是信息元。那么,
如果s是“ABCD”且t是“AXCD”,那么D(s,t)=IA(B)+IA(X),因为一个替换(将“B”换成“X”)就足以将s换成t。
问题是我们怎样以最小处罚定位两字符串?除了不匹配外还有其它处罚。这些是删除(IA(del)以及插入IA(ins))的处罚。假设IA(del)=IA(ins)=IA(indel)。当然匹配的处罚为0。
例子:s1=”ABCD”,s2=”AXBC”。
ABCD A_BCD
    ->|   |||    ->D(s1,s2)=2*IA(indel)+IA(X)+IA(D).
AXBC AXBC_
我们观察到在最优匹配中,如果观察最后一个匹配位置,仅有3种可能性:匹配或者不匹配;对上面字符串的一个插入;对下面字符串的一个插入。
一般来说,我们有以下最优化问题。假定X=(x1,x2,...,xm)以及Y=(y1,y2,...,yn)为信息元序列。令Mm,n表示在(m,n)位置定位X和Y的最优化标准,那么Mm,n是距离矩阵。它可以根据下式计算:
Mm,n=min(Mm-1,n-1+d(xm,yn),Mm,n-1+IA(indel),Mm-1,n+IA(indel)),
其中d(xm,yn)={-IA(xm)-IA(yn)如果xm不等于yn;IA(xm)如果xm=yn}。
我们的边界条件为:M0,0=0且所有其它外部值(即,具有负角标的矩阵元素)为无穷大。矩阵M可以逐行计算(从顶部到底部)或者逐列计算(从左到右)。计算Mm,n明显要求计算O(m*n)。如果我们仅对最优值感兴趣,我们在计算时仅需要保留一列(或者一行)。
最优定位是从位置Mm,n的回溯中找回的。非单值性不重要,它们仅意味在最优成本下可以有不止一种的可能定位。
在概要统计中,我们在查询和每个命中条目间有一个数值。查询和命中文件间最优的M(q,h)代表在该信息元距离空间中该两序列的定位有多好。拥有最高分值的命中文件应该是最佳命中文件。它通过将匹配信息元的总信息相加,并减去针对插入/删除和不匹配的处罚来计算。
接着,相似信息元的概念也可以被引入有序信息元定位问题。当两相似信息元被定位时,它会产生一个正分值而非负分值。因为该理论与具有相似性矩阵的序列定位情况很相似,这里我们不提供细节了。
通过例子搜索
通过例子搜索是一个简单概念。它意味着如果我有一个特定类型的条目,我想要找出我们数据集合中所有与其相似的其它条目。通过例子搜索有许多应用。举例来说,对于一篇给定的发表的文章,我们可以搜索科学文献以看看是否有其它与此相似的文章。如果有,相似性程度如何?当然,我们也可以寻找医疗记录的相似档案、犯罪记录的相似档案等等。
通过例子搜索是我们搜索引擎的一个直接应用。用户仅需输入特定案例,并且在包含所有其它案例的数据库中搜索。该通过例子搜索的应用实际上是由提供的下层数据库定义的。有时,我们所知的例子和下层数据库之间也许有一些不匹配。举例来说,我们可以有一个CV的例子,而数据库可以是可得到的职位的集合。在另一个例子中,例子可以是一个男人的择偶喜好,而下层数据库可以是由候选女士给定的喜好/兴趣数据库的集合。
超出文本数据库的应用
信息元数值理论不局限在文本信息中。它可以在许多其它领域应用。这里的关键在于识别数据格式的信息元集合,并且定义信息元的分布函数。一旦做了这些,我们至今为止所开发的所有其它理论便可自然地应用,包含聚类、搜索以及数据库搜索。潜在地,可以应用该理论来搜索图片数据(图片、X射线、指纹等等)、音乐数据甚至分析外星信息,如果某天我们真的收到他们的信息的话。这些应用的每个领域,都需要独立的搜索计划。
搜索加密信息
因为我们的搜索引擎是独立于语言的,它也可以用来搜索加密信息。这里最难的部分是识别信息元,因为我们没有清楚定义的字段分隔符(如空格和标点)。如果我们可以外部识别字段分隔符(采用一些与该搜索引擎不相关的算法),那么剩下的就很惯例了。我们开始收集所有特定“单词”(那些用字段分隔符分开的)的统计数据,以及基于它们的出现频率的复合“信息元”。
一旦识别了信息元,只要查询和数据库是以相同方式加密的,搜索就和搜索其它数据库一样了。
音乐内容的搜索
记录的音乐可以转换成一维的字符串格式。如果实现了这一点,那么我们可以建立一个音乐数据库,与建立文本数据库相似。可以在独立的段落中写下不同风琴的音调,这样一段仅包含一个特定风琴的音符。这就保证了信息以一维格式被记录。因为在音乐中顺序是本质,我们仅使用以上部分里阐明的算法。
在最简单的实施中,我们假设每个音符是一个信息元,并且没有涉及一个以上音符的复合信息元。我们可以进一步采用识别矩阵以比较信息元。相似或者相同的音符可采用动态编程算法识别。
在更高级的实施中,可以像文本数据库那样预处理数据库,其中不仅每个单个音符被当作信息元,一些有足够出现频率的常用有序音符模式也可以被识别成复合信息元。我们也可以采用与每个信息元相联的Shannon信息来衡量总体相似性。在音乐搜索中特别关心的一点是音乐中音调的改变,即,两段音乐可能很相似,但因为它们的音调不同,第一眼并看不出它们的相似。可以用多种方式解决这一问题。一种简单的方式是对于每次查询,生成一些备选,其中备选是仅有音调不同的相同的音乐片段。当进行搜索时,在数据库集合中不仅搜索原始片段,也搜索所有备选。
附录
0.与矢量空间模型比较的不同
这里是一些我们用来解决与经典矢量空间模型(VSM)相关联的问题的技术。
1.从半结构化数据到非结构化数据。在被称为文件的结构中有一个关键概念。在索引中,基于它们在文件的出现对检索词施加权数。在搜索中,它表明了整个文件是否相关。没有比文件更小的单位了。因此,VSM本质上并非为非结构化数据而设计,而是为被适当控制的同质数据集合设计的。举例来说,如果你的文集是非结构化的,一个文件可能是无内容的简单标题,而另一个文件可以是1,000多页的书。VSM更可能识别书作为查询的相关文件而不是简单标题文件。
a.矢量空间模型采用一个称为TF-IDF加权的概念,因此允许每个检索词在计算相似性分值时有不同的加权。TF是指检索词频率,而IDF是逆文件频率。该加权方案向一个被称为文件的实体施加了权数。因此,为了有效地使用加权,文件集合必须是同质的。为了超出这个限制,我们采用叫做全局分布函数的概念。这就是Shannon信息部分。它仅依赖于文集中检索词的总体概率分布。它根本不涉及文件。因此,我们的加权方案是完全无关结构的。
b.在搜索中,我们采用相关区段的概念。因此可以根据查询以及区段和查询间的相关性将文件分成多个区段。区段的边界是动态的。它们根据查询在运行时确定。识别相关区段的计算也不依赖于文件的概念。我们采用两个概念来解决该问题,一种叫作编页码,而另一种叫做空隙处罚。在索引中,对非常长的文件,我们一次只对一页进行操作,并允许页与页间有重叠。在搜索中,如果相邻页都被认为与查询相关,则可以将它们合并。通过应用对非匹配信息元的空隙处罚,我们定义区段的边界为文件中与查询相关的部分。
2.增加信息相关性来代替单词匹配。VSM是一个单词匹配算法。它将文件作为“单词包”来看待,其中单个单词之间没有关系。单词匹配有明显的问题:1)它不能获得由多个单词定义的概念;2)它不能识别在概念上相关的文件,如果它们之间没有匹配单词的话。
a.我们采用信息元的概念。信息元是构成文件的信息原子。信息元可以是一个单个单词,它也可以是更复杂的概念。实际上,我们对信息元有多长并不限制。粗略地来看,文件可以被看成是“信息元包”。超出简单单词的范畴,我们可以在信息元域里更精确地衡量信息相关性,而不仅仅在单词域里。用这种方式,我们可以很大程度地改善精确性。
b.实际上,我们不仅仅将文件看成“信息元包”,并且匹配信息元的顺序在某种程度上也有影响:它们不得不在查询域中聚类。因此,通过采用信息元概念,我们避免了“坏单词”的问题,因为我们允许单词顺序在复杂信息元中起作用。同时,我们避免了太过严格的问题:信息元在查询域中或匹配的区段中可以被打乱而不影响命中文件分值。在这种情况下,信息元概念是适用于搜索的绝佳尺寸:它仅允许单词顺序在它发生影响的情况下起作用。
c.VSM不能识别间接相关文件,其中有匹配的概念但无匹配的单词。我们采用相似性矩阵的概念来克服该障碍。对我们来说,信息元就是信息单元,它们之间有关联。举例来说,UCLA作为一个信息元与另一信息元:加州大学,洛杉矶相似(实际上是等同)。文集的相似矩阵是在索引步骤中被自动计算的;并且如果认为有外部信息对文集有用的话,可以由用户提供。通过提供信息元间的关系,我们真正进入了概念搜索域。
3.解决计算速度的问题。虽然VSM有许多的缺点,但它仍然是十分精良的搜索方法。但是自从发明以来其在市场中的使用是很有限的。这是因为其要求的密集的计算量。在实施VSM的有限的情况中,搜索是在离线情况下进行的,而不是动态进行。因为服务提供商没法提前知道用户想要的精确查询,该离线能力的使用是有限的,例如,在对给定文件的“相关文件”链接中。我们可以克服这样的障碍是因为:
a.计算科学的进步使先前认为不可能的许多计算任务变成可能。现在是时候重新回顾那些在计算上成本较高的算法,并且看看它们是否能被引入用户社区。
b.遗传学数据比最大的人类文本内容的集合还要大。为了有效地搜索遗传学数据,生物信息学科学家已经为计算速度设计了许多有效实际的方法。我们系统地应用这些技术来改善速度。结果是一种可以动态处理很复杂的查询的强有力的搜索方法。
c.有效采用多层过滤机构。给定大量文件,我们怎样快速找到数据集合中最相关的部分?我们设计了在多个步骤中筛出大量非相关文件的精密过滤机构。我们仅将珍贵的计算时间用于这些可能产生高信息相关性分值的区段。
d.采用广泛分布的存储器内的计算。我们的搜索方法被设计为完全平行的。巨大的数据集合被分成小的部分,并且被存储在当地的分布式服务器上。计算机存储芯片现在已经足够便宜,这样我们可以将较小部分的整个索引下载进系统存储器。同时,我们在全局范围内计算相关性数值,这样所有来自不同服务器的高分值区段可以被排序以产生总的命中文件列表。
I.文件转换器
1.1 介绍
得到许可的文件转换器(Stellent包)将不同文件格式(doc、PDF等等)转换成XML格式。我们有一个包括文件目录或者URL的包,生成文件列表,并且接着对列表中的每个文件,它调用Stellent包将文件转换成XML文件。如果输入文件已经是XML了,就不调用Stellent包。我们的索引引擎仅在FASTA格式的平面文本数据库上工作。在文件转换的步骤之后,我们需要将XML格式的平面文本文件转换成FASTA格式的平面文本数据库的工具。
该从XML到FASTA的步骤,是我们搜索引擎核心的第一步。它在得到许可的文件转换器和我们的分度器间工作。
1.2 转换标准
XML格式的平面文本数据库应该包含同质的数据条目。每个条目应该用<ENTRY></ENTRY>标记(其中ENTRY是被用户指定的任何命名标签);且用<PID></PID>标记主ID(其中PID是被用户指定的任何命名标签)。每个条目应该仅有一个<PID></PID>字段。数据库中的主ID应该是相互区别的。
这里是转换的规则:
1)XML和FASTA数据库由伺质条目组成。
2)每个条目由3个字段组成或者可以被转换成3个字段:一个单个主ID字段、由命名和成对值指定的且由许多相关数据组成的相关数据字段,以及一个单个内容字段。
3)每个条目有且仅有一个主ID字段。如果一个条目里有多个主ID字段。仅采用第一个。忽略其它的。
4)仅有<ENTRY>下的第一级子标签会被用于容纳相关数据和内容字段。
5)所有其它嵌套的标签会被忽略。(准确地说,<tag>被忽略。</tag>用“.”代替)
6)加了标签的相关数据和内容字段的多个值,除了主ID字段以外,会被连锁为一个单个字段。如果没有结束句点‘.’,一个“.”会被自动插入每个值之间。
为了说明以上规则,我们下面给出一个XML条目的例子。“//”表示插入的解释。
<ENTRY>                      //开始输入
  <PID>Proposal_XXX</PID>    //仅有一个,主ID
  <ADDRESS>                  //级-1子标签相关数据
       <STR>XXX</STR>        //级-2子标签忽略
       <CITY>YYY</CITY>
       <STATE>ZZZ</STATE>
        <ZIP>99999<ZIP>
</ADDRESS>
<AUTHOR>Tom Tang</AUTHOR>    //相关数据字段
<AUTHOR>Chad Chen</AUTHOR>   //相关数据的另一个值
<TITLE>XML to FASTA conversion document</TITLE>//另一个相关数据
<ABSTRACT>                   //内容 该文件讨论了如何在平面文
本文件数据库中将XML格式条目转换成FASTA格式条目。
</ABSTRACT>
<CONTENT>                     //另一内容 为什么我需要在上面撰
写文件?因为这很重要。......
</CONTENT>
</ENTRY>
在转换过程中,我们会通知转换工具<PID>表示主ID字段;<ADDRESS>、<AUTHOR>和<TITLE>是相关数据字段;以及<ABSTRACT>和<CONTENT>是内容字段。
在转换后,它会是:>Proposal_XXX\tab[ADDRESS:XXX.YYY.ZZZ.99999][AUTHOR:Tom Tang.Chad Chen][TITLE:XML to FASTA conversion document]\newline该文件讨论了如何在平面文本文件数据库中将XML格式条目转换成FASTA格式条目。为什么我需要在上面撰写文件?因为这很重要。......
这里,忽略所有<CITY><STR><STATE><ZIP>标签。合并两个作者字段至一个。<ABSTRACT>和<CONTENT>字段被合并到FASTA中的单个内容字段。
1.3 命令行接口:iv XML2FASTA
我们假设“文件转换接口”已经完成。它生成了一个单个平面文本XML格式数据库XML_db,并且其通过iv_txt_dbi被成功索引。(如果iv_txt_dbi不能索引你的XML格式文件,我建议你在运行转换程序前首先修复该问题。)
iv_XML2FASTA会运行XML_db并且产生单个FASTA格式文本文件,叫做XML_db.fasta。必要的字段为:entry=<ENTRY>以及id=<PID>字段。可选字段为相关数据字段以及内容字段。如果没有指定相关数据字段,就不会生成相关数据。条目中除了主ID之外的所有内容会被转换成“内容”字段。然而,如果你用XML标签指定相关数据字段或者内容字段,那么仅有指定标签下的信息会被相应转换。这里是命令行接口:
iv_xml2fasta XML_db<entry=***><id=***>[meta=***][content=***]
       Entry:        XML entry tag
       ID:           XML primary ID tag
       meta:         meta date fields in FASTA
       content:      content fields in FASTA
其中
Figure A200780023220D0126124552QIETU
表示必要字段,且[]表示可选字段。
为了实现上述精确转换,我们应该运行:
iv_xml2fasta XML_db entry=<ENTRY>id=<PID>meta=<ADDRESS>
      meta=<AUTHOR>   meta=<TITLE>content=<ABSTRACT>
      content=<CONTENT>
另一方面,如果我们运行:
iv_xml2fasta XML_db entry=<ENTRY>id=<PID>meta=<TITLE>
      content=<ABSTRACT>content=<CONTENT>
那么,在相关数据中将忽略<AUTHOR>和<ABSTRACT>;且<CONTENT>在内容中被忽略。输出为:
>Proposal_XXX\tab[TITLE:XML to FASTA conversion document]\newline
该文件讨论了如何在平面文本文件数据库中将XML格式条目转换成FASTA格式条目。
如果我们运行:
iv_xml2fasta XML_db entry=<ENTRY>id=<PID>
那么,我们得到:
>Proposal_XXX    \newline
XXX.YYY.ZZZ.99999.TomTang.Chad Chen.XML to FASTA Conversion.该文件讨论了如何在平面文本文件数据库中将XML格式条目转换成FASTA格式条目。为什么我需要在上面撰写文件?因为这很重要。......
现在根本没有相关数据了,且在多个字段中的所有信息都被转换进内容字段了。
如果一些条目中的特定相关数据字段没有标签,也是可以的。该标签名仍然保留。举例来说,如果我们运行:
iv_xml2fasta XML_db entry=<ENTRY>id=<PID>meta=<ADDRESS>
     meta=<AUTHOR>meta=<TITLE>meta=<DATE>content=<AB STRACT>
     content=<CONTENT>
那么,我们得到:
>Proposal_XXX\tab[ADDRESS:XXX.YYY.ZZZ.99999][AUTHOR:Tom
Tang.Chad Chen][TITLE:XML to FASTA conversion document]
[DATE:]\newline
该文件讨论了如何在平面文本文件数据库中将XML格式条目转换成FASTA格式条目。为什么我需要在上面撰写文件?因为这很重要。......
相关数据的[Date:]字段是空的。
该工具要求XML数据是很同质的:所有条目必须有相同标签以表示起始和结束,相同标签以表示主ID字段。对相关数据字段和内容字段的要求要宽松一点。漏掉一些相关数据字段或者内容字段是可以的。但是最好的是所有条目中的相关数据字段和内容字段都是同质的。
1.4 管理接口
在管理员接口中,当点击“XML to FASTA”按钮时,一张表格被显示给管理员:
-------------------------------------------------------------------------
XML Tags       |       Action         |        FASTA Fields
--------------------------------------------------------------------------
PID         |   To Primary ID->   |
            |---------------------|----------------------------------
ADDRESS     |                     |
AUTHOR      |    To Meta Data->   |
TITLE       |---------------------|
ABSTRACT    |     To Content      |--------------------------
CONTENT     |                     |
--------------------------------------------------------------------------
                    [convert]           [stop][resume]
         [Progress bar here,showing % completed]
从由XML数据库中提取的~100个随机样本条目中提取XML标签字段。该列出的标签是从“共同级别”中提取的:这些样本中所有第一级子标签的联合。仅仅那些在样本中相互区别的字段可以被选作主ID。该选择过程必须是有序的:首先是主ID,接着是相关数据字段以及最终的内容字段。
用户首先关注左列中的一个字段。当一个“行为”被选择时,左列中被关注的相应字段被加到相应分类(主ID、相关数据以及内容)的右列中。
那些左列中未选择的字段会被忽略。那些标签下的内容不会在FASTA文件中出现。
当点击[转换]按钮时,转换开始。应该在你完成所有选择后点击[转换]按钮。当点击[停止]按钮时,你可以停止转换,或者之后[重新开始],或者再一次开始[转换](这会覆盖先前的过程)。底部的“进程条”显示文件完成的百分比。
该程序应该相对较快。该过程中不进行多线程运行。如果需要的话,多线程也可很容易地进行。
1.5 量更新
这里我们关注增量更新。该方法用于在保持旧文件(一单个FASTA文件,叫做DB.fasta.ver)不被接触的前提下,生成两个新的附属文件,DB.incr.fasta.ver和DB.inc.del.ids,它们包含将被索引的文件/目录的被改变的信息。第三个文件,DB.version被用以追踪更新版本。
步骤:
1)从DB.fasta.ver生成单个的临时列表文件,DB.fasta.ids。该文件包含所有primary_Id以及它们的印时戳。
2)最后浏览相同目录,得到所有文件列表和它们的印时戳。
(注意,用户可以在此步骤中添加新目录并且移除一些目录)。
3)将这些文件列表与旧的比较,生成3个新列表:
(1)被删除文件。(包含那些来自被删除目录的)
(2)更新的文件
(3)被添加的新文件。(包含那些来自新添加的目录的)。
4)对于(2)&(3),运行转换程序,一次一个文件,生成一单个FASTA文件。我们将其叫做:DB.incr.fasta.ver。
5)输出文件:
1:DB.incr.fasta.ver:所有被添加的文件和被更新的文件的列表文件。
2:DB.incr.del.ids.ver:(1)&(2)的组合,我们叫它DB.incr.del.ids.ver。
6)生成一DB.version文件。在该文件中,记录版本信息:
Version_number         Type          Date
---------------------------------------------------------------------
1.0                    完整的        mm-dd-yyyy
1.1                    增量的        mm-dd-yyyy
1.2                    增量的        mm-dd-yyyy
2.0                    完整的        mm-dd-yyyy
---------------------------------------------------------------------
一个额外步骤,如果先前运行了增量更新程序且增量数据已经添加至索引文件了,那么运行(这是第一步,甚至在步骤1之前)):
0)采用开发的平面文本DB工具首先将3个文件(DB.fasta.ver,DB.incr.fasta以及DB.incr.del.ids)合并至单个文件,并且重新命名该文件为DB.fasta.ver+1。
同时,将以下内容插入DB.version:
ver+1.0    完整的    mm-dd-yyyy,
其中“ver+1”是序列号。它来自于DB.version文件中的较早信息。
这里给出我们是怎么做的:(1)移除从DB.fasta中删除的条目;(2)将DB.incr.del.ids.ver中的新条目插入至DB.fasta.ver中;(3)删除所有增量文件。
版本文件的使用允许了转换器与增量更新、分度器与增量更新的分离。转换器可以在不运行索引程序的情况下运行多个更新(因此在DB.version文件中生成多个增量条目)。
如果一个针对特定增量版本的索引程序完成了,那么DB.fasta更新成综合DB是强制的。应该运行步骤0)。
II.索引
2.1 介绍
索引步骤是搜索引擎的一个必须部分。它从文件转换步骤取得输入,该输入是包含许多文本条目的FASTA格式的平面文本文件。它生成不同索引文件以在搜索步骤中为搜索引擎所用。因为搜索引擎处理的信息量可以是巨大的,索引算法必须是很高效的。
要求:
●文件的ID映射
●信息元(单词和短语)的识别
●那些信息元的逆索引文件
●用于将来更新目的的媒体统计数据
●高性能
2.2 索引步骤图表
图20A。我们的分度器中主要步骤的概要。它包含以下步骤:通过Porter溯源器进行溯源、单词计数、生成正索引文件、短语(复合信息元)识别步骤以及生成反转索引(逆索引)文件。
2.3 工程设计
新分类1:IV溯源:通过Porter溯源器对FASTA文件进行溯源
对FASTA文件中的每个条目:
1)分配一个bid(binary ID),将pid(primary_ID)替换成bid;
2)识别每个单词,采用Porter溯源器对其分析词干;
3)移除所有标点,在正确的位置写下语句符号;
4)将结果写入溯源文件。
该新分类采用工具flex2.5来识别单词、句子和其它内容。
假设我们的FASTA文本数据库的名字为DB.fasta,溯源器生成以下文件:
1.DB.stem文件
它记录所有这样的条目,其中所有单词被分析词干且被转换成小的语法格。它用bid替换所有pid。它移除了所有的句子分隔符且用其它符号替换。每个条目占两行:一行仅包含bid,且另一行包含相关数据和内容。
2.DB.pid2bid文件
它是pid到bid的映射
3.DB.off文件
它是每个条目开始的偏移,以及直至条目结束的字节长度。
新分类2:IV单词:生成单词频率以及分配单词ID
该IV单词分类采用DB.stem文件作为输入文件,统计所有单词的频率,根据频率对其降序排列,给每个单词分配一个单词id,这样常用单词会得到一个很低的单词id。它生成以下文件:
4.DB.itm
这是溯源文件的单词统计。它包含溯源后DB中所有单词的频率。它根据单词频率对单词排序并且为每个单词分配一个特别ID,具有最高频率的单词的ID(1)最小。每行记录一个单词、其频率以及其id。第一行有意左边空缺。
5.DB.itm.sta
它记录第一个单词偏移、所有单词计数和所有单词频率总和。
6.DB.maxSent
对每个条目,该文件记录其最长句子的单词计数。这将会在短语识别步骤里用到。
7.DB.sents
它记录句子长度的频率分布。举例来说,文件中的一行“101000”意味着有1000个句子有10个单词;“201024”意味着有1024个句子有20个单词。
新分类3:IVFwd:生成正索引文件
这是将溯源文件转换成二进制正索引文件的步骤。该正索引文件直接来自DB.stm文件以及DB.itm文件。在转换步骤中,DB.stm文件中的每个单词被其在DB.itm文件中被给定的单词ID所替换。该二进制正索引文件仅是一媒体输出。在搜索步骤中它不被要求,但是仍旧采用它来加快短语识别步骤。
它会生成两个文件:
8.DB.fwd
DB.stm中的每个单词用单词ID来替换,句子分隔符用0来替换。在该文件中每个条目都没有分隔符。将条目开始位置记录在DB.fwd.off文件中。
9.DB.fwd.off
对每个条目的bid,这里记录了它在DB.fwd文件中的偏移和字节长度。
新分类4:得到短语:通过统计工具识别短语
该分类处理复合信息元(例如,短语)自动识别。采用不同的联合发现方法,有许多方法可以实现短语识别。这里我们仅进行一种方案。我们将一备选信息元叫做“citom”,这是一个由一个以上的单词组成的简单连续字符串。如果citom达到了我们的选择标准那它就成了一个信息元。
从DB.fwd文件,我们计算每个citom的频率,接着检查其是否达到选择标准。这里是选择标准:
1.其频率不少于5。
2.它在一个以上的条目中出现。
3.它通过了chi-square测试(见后面章节的详细解释)。
4.短语中的起始和结束单词不可是常用单词(由一小字典定义)。
信息元识别步骤是一个“for”循环。它从两个单词的citom开始。它生成两个单词的信息元列表。从两个单词的信息元列表,我们组成三个单词的citom,并且对每个citom采用以上规则进行检测。然后我们继续四个单词信息元的识别,五个单词,...,直到没有信息元被识别。信息元识别循环在这里结束。
对于一个固定的n个单词的信息元识别步骤,可以分成3个子步骤:图20B:识别n个单词的信息元的子步骤。1)生成备选信息元。给定一个n-1个单词的信息元,任何包含该信息元的n个单词的字符串就是一个citom。可以在给定信息元的左边或者右边添加新单词。2)用规则(1-3)过滤citom。去掉所有不符合规则的citom。3)输出通过2)的citom。检查规则(4)。所有通过规则(4)的citom是新的n个单词的信息元,并且将其写入DB.itm文件。如果没有找到citom或者新信息元,那“for”循环就结束。
该步骤会改变以下文件:
1.DB.itm
新识别的复合信息元被附加到该文件的尾部。
2.DB.itm.sta
在该文件中为每个识别的信息元插入一行。该行包含信息元偏移及其频率计数的信息。用关于该文件的大小、总信息元计数以及总的累积信息元计数的信息更新整个文件的概要行。
该步骤会生成以下文件:
1.DB.citmn,其中n是数字(1,2,3,...)
每个在更新过程中未达到信息元要求的citom可以成为一个信息元。我们在DB.citmn文件中记录那些citom。文件包含这样的citom:1)频率为3或3以上;2)在一个以上的条目中出现;3)在chi-square测试中失败,或者在其起始或结束有常用单词。
2.DB.phrn,其中n是数字(1,2,3,...)
各个长度短语会写入该文件。(???)在逆索引文件中,可以用这些文件下载短语。
3.Cwds文件
转换常用单词字典至二进制单词id文件,并通过id排序;
改进了:
●采用maxSent结构储存每个条目的最大发送长度,如果当前短语长度比条目最长句子长度还要长,就跳过它;如果在条目内没有找到任何citom,将值改为0,这样即使该条目有了当前长度的citom,下一次也会跳过该条目。
●通过citom的第一个单词将大的citom映射分成一些小映射。然后可以加快搜索并且提供采用多线程(通过单词id分解数据)的方法。
新分类5:RevIdx:产生反转索引文件(逆索引文件)
该分类负责反转索引文件(也就是通常所知的逆索引文件)的创建。对于每个单词,它记录了单词在哪个条目的什么位置出现。对于常用单词,我们仅记录那些在信息元(短语)中出现的。举例来说,“of”是一个常用单词。通常它不会被记录。然而,如果“United States of America”是一个信息元,那么该特定的“of”会被记录在RevIdx文件里。对于一个条目,位置计数从1开始。每个句子分隔符占一个位置。
图20C。图表显示怎样生成反转索引文件(aka逆索引文件)。左边的图表显示怎样处理全部队列;右边的图表给出了更多关于怎样处理单个条目的细节。
新分类5:StemDict:溯源字典
通过一个文件提供常用单词列表。这些单词也需要被溯源。StemDict可以溯源该列表。该分类接受文本文件作为输入,并保留所有单词和行的顺序。其输出是溯源过的单词。它也采用flex工具。
2.4 短语识别和chi-square规则
在该子章节中,我们给出更多采用联合规则进行信息元识别的理论细节。在信息元识别中,我们想要发现连续单词中的异常结合。我们采用迭代方案识别新信息元。
步骤1:这里我们仅有溯源过的英文单词。在步骤2中,我们会识别任何高于某预设标准的两个单词的组合(连续的)。
步骤n:假设我们有一个已知信息元(包含单词和多单词的短语)的集合,以及一个被分解成构成其组成部分的信息元的数据库。我们的任务是在DB中找到同样高于某预设标准的两个信息元的短语。
这里是我们采用的标准:我们会将任何两个以A+B形式结合的信息元称为一个citom(备选信息元)。我们所做的测试包含:
1)最小频率要求:A+B的频率在阈值之上。
Fobs(A+B)>Min_obs_freq
2)比率测试:给定A和B的频率,我们可以计算(A+B)的预期频率。该比率测试是用于测试观测频率除以预期频率的结果是否在阈值之上:Fobs(A+B)/Fexp(A+B)>Ratio_threshold。
3)百分比测试:A+B的百分比是所有A的出现或所有B的出现的重要部分:max(Fobs(A+B)/F(A),Fobs(A+B)/F(B))>Percentage_threshold
4)chi-square测试:假设A和B是两个独立变量。那么,以下表格应该符合chi-square的1级分布。
 
分类 A Not_A 总数
B F(A+B) F(Not_A+B) F(B)
Not_B F(A+Not_B) F(Not_A+Not_B) F(Not_B)
总数 F(A) F(Not_A)
给定A和B的频率,A+B的预期频率是什么?它通过下式计算:Fexp(A+B)=F(A)/F(A_len_citom)*F(B)/F(B_len_Citom)*F(A+B_len_Citom),其中F(X_len_citom)是单词长度为X的citom的总数。
在chi-square测试中,我们想要:
[Fobs(A+B)-Fexp(A+B)]**2/Fexp(A+B)+
[Fobs(Not_A+B)-Fexp(Not_A+B)]**2/Fexp(Not_A+B)+
[Fobs(A+Not_B)-Fexp(A+Not_B)]**2/Fexp(A+Not_B)+
[Fobs(Not_A+Not_B)-Fexp(Not_A+Not_B)]**2/Fexp(Not_A+Not_B)
   >Chi_square_value_degree_1(Significance_Level)
其中,重要性级别是由用户采用Chi-square测试的分布表格选择的。
理论上,以上规则的任何组合可以用以识别新颖的信息元。实际上,1)通常被应用于每个备选以首先筛选出低频率事件(这里任何统计衡量都显得无力)。在满足1)后,我们应用2)或者4)。如果2)或者4)有一个满足,我们认为该citom是一个新识别的信息元。3)在以前被采用。4)似乎是比3)更好的衡量,所以我们用4)替换3)。
2.5 常用单词的处理
定义
常用单词,也是所知的停止单词,是出现频率非常高的单词。举例来说,’the’,’of’,’and’,’a’,’an’是一些常用单词。
在索引步骤中,我们保留常用单词字典。可以编辑该字典。该字典也需要被溯源。
使用
1)在信息元识别步骤中,被溯源的常用单词字典被装载和使用。在读取文件后,给它们分配一个特别的word_ID,并且这些ID被输出进反转索引文件。
2)也是在信息元识别步骤中,如果一条被识别的短语以常用单词作为起始或结束,就不将其视作新信息元,且也不将其写入新识别的信息元集合。
3)在反转索引文件中不写入常用单词,除非它在条目中的信息元中出现。换句话说,在反转索引文件中,有常用单词的出现。然而,该列表是一个部分列表:它仅包含那些在由DB.itm文件定义的信息元中的常用单词的出现。
III.搜索
3.1 介绍
组成搜索部分的有:网络接口(用于查询条目和结果传递);搜索引擎客户机(接收查询并传递至服务器);搜索引擎服务器(查询解析以及实际计算和结果评级)。我们从本质上改进搜索算法的搜索精度和速度。主要改变/附加包括:
1)记录单词指数来代替信息元指数。信息元在搜索时段被动态分解(动态信息元解析程序)。
2)采用稀疏数组数据结构进行索引存储和存取。
定义
单词:没有空格或其它分隔符(如tab,换行符等等)的相邻字母字符串。
信息元:单词、短语或者有限长度的相邻字符串。它由索引算法生成(见第II章)。
SI分值:Shannon信息分值。对每个信息元,将SI分值定义为log2(N/f),其中f是信息元的频率,且N是数据队列中总的信息元计数。
3.2 工程设计
搜索引擎有四个主要部分:网络接口、搜索引擎客户机、搜索引擎服务器以及索引数据库文件和接口。其设置显示在图21A中。网络接口接收用户搜索要求,并将结果传递给用户。搜索引擎客户机发送请求至搜索引擎服务器。搜索引擎服务器将查询解析为其分量,生成命中文件备选并根据其SI分值对它们评级。数据库部分(索引文件以及平面文本数据库接口)与网络接口直接互相作用,用以传递被强调的个体命中文件。
图21A:搜索平台架构。注意:P调用=过程调用
图21A。整个搜索引擎的架构。网络接口接收用户搜索要求,并将结果传递给用户。搜索引擎客户机发送请求至搜索引擎服务器。搜索引擎服务器解析查询并生成命中文件备选,并且根据SI分值对它们评级。数据库部分与网络接口直接互相作用,用以传递被强调的个体命中文件。
图21B从数据流动的视角显示搜索引擎。用户通过网络接口提交其查询。服务器收到该请求。它将查询发送至用于识别查询中信息元的信息元解析程序。然后根据预定义的阈值对这些信息元排序和分组。这些被选的信息元被分解至作为其组成部分的单词。采用一3级的单词选择步骤来选择搜索中最终采用的单词,因为反转索引文件仅记录单词和它们在队列中的位置。
搜索过程取得输入单词,检索来自反转索引文件的指数。它生成基于这些指数的备选条目列表。重新构造备选条目是以它们所包含的命中单词和其位置为基础的。现在查询和每个备选进行动态比较以识别匹配信息元,并且生成每个命中条目的累积分值。最终,根据命中文件的分值排序命中文件并将其传送至用户。
图21B。搜索引擎的数据流程图。用户的查询首先经过信息元解析程序。接着这些信息元根据预定义的阈值被排序和分组。采用一3级的单词选择步骤来选择搜索中最终采用的单词。搜索过程取得输入单词,生成基于这些单词的备选列表,对每个命中文件动态重建信息元,并且对每个命中文件计算分值。根据其分值给这些命中文件排序并将其传递给用户。
3.3 网络客户机接口
网络客户机接口是服务器上用于处理来自网络客户机的客户机请求的程序。它接受请求,处理它并且传递请求至服务器引擎。
这里是它怎样工作的概要:客户机程序位于web_dir/bin/下。当提交查询时,网页会调用该客户机程序。然后该程序输出一些参数和内容数据至一被特别命名的管道。搜索引擎服务器持续性地检查该管道,看是否有新搜索请求。经过该管道的参数和内容数据包含一联合sessionid_queryid关键词以及一command_type数据。搜索引擎服务器会在它从客户机那里读取command_type数据后开始运行查询。
3.4 搜索服务器初始化
搜索引擎需要以下文件:
1)DB.itm:包含所有信息元分布的表格文件,以“信息元频率itom_id”的格式。
2)DB.rev:逆索引(反转索引)文件。它是FASTA格式的:>itom_id
Bid(position_l,position_2)bid(position_3,position_4)
其中bid是队列中数据条目的二进制id;position_n是条目中这些信息元的位置。
搜索引擎将逆索引文件解析成四个稀疏数组。我们称其row、col、val和pos数组。
1)row数组存储col数组索引。
2)col数组存储所有二进制id。
3)val数组存储位置指数。
4)pos数组存储出现在原始数据库中的信息元的位置数据。
有了val数组和row数组,我们可以通过信息元id检索所有的二进制id和所有位置数据的指数。为了提高索引文件的下载速度,我们将逆索引分成这4个数组,并且在索引步骤中将其作为一单个文件一个个地输出至硬盘上。
当搜索引擎开始运行时,它会:
1)将DB.row、DB.col、DB.val和DB.pos文件读取至存储器中,而非读取逆索引文件。
2)打开DB.itm文件,读取“itom->itom_id”、“itom_id->frequency”至存储器。
3)通过“itom_id->frequency”数据建立信息元分值表格。
3.5 信息元解析程序
图22A。不同信息元的解析程序规则。
当用户提交查询时,首先通过信息元解析程序处理查询。信息元解析程序执行以下功能:
1)采用Porter溯源算法(和溯源队列相同的方式)溯源查询单词。
2)通过非重叠、冗余、有序规则将被溯源的查询字符串解析成信息元。
3)将信息元列表排序。
4)将这些信息元分解成单词并且将这些单词分配至3个级别,每个级别包含一些单词。
这里是这些解析程序规则的解释:
1)有序:我们从左到右(根据语言顺序)。每次我们改变一个单词。我们寻找从该单词开始的最长的可能信息元。
2)重叠:我们允许来自解析程序的信息元间的部分重叠。举例来说,假设我们有字符串:w1-w2-w3-w4,其中w1+w2,w2+w3+w4是DB.itm中的信息元,那么输出会是“w1+w2”,“w2+w3+w4”。这里“w2”就是重叠单词。
3)非冗余:如果输入字符串是“AB”,其中“A”和“B”由单词组成。如果A+B是信息元,那么解析程序对“AB”的输出应该就是A+B,而不是被完整包含的任何组成部分(例如“A”或者“B”)。采用上述“w1-w2-w3-w4”的例子,我们会输出“w1+w2”,“w2+w3+w4”,但我们不会输出“w2+w3”,尽管“w2+w3”也是DB.itm中的信息元。这是因为“w2+w3”被完整包含在一个更长的信息元“w2+w3+w4”中。
信息元选择阈值和排序规则
图22B。信息元选择和排序规则。
在选择备选信息元以进一步搜索时,我们采用阈值规则。如果信息元低于该阈值,就去掉它。去掉的信息元是很常用的单词/短语。它们通常带有很少的信息。我们提供用于过滤掉很常用的单词的默认阈值。该阈值是用户可以调节的参数。
对于剩下的信息元,我们根据评级将它们排序。这里说明它们怎样被排序:
1)对每个信息元,计算(si-score(信息元)+si-score(该信息元中最高分值的单词))/2
2)按分值从高到低排序。
3个级别的单词选择
图22C。将查询信息元中的单词分成3个级别。
对于将全文作为查询的搜索引擎,计算速度是很关键的。我们设计算法时,我们的目标在于1)不要漏掉任何最高分值的命中文件;2)不要对任何命中文件或者区段误评分;3)无论何时只要1)和2)无法妥协,则采用过滤器/加速方法。给查询信息元集合中的单词分配3个不同的级别是实现这些目标的重要步骤。
因为反转索引文件是一单词列表而非信息元列表,我们需要从信息元集合中选择单词。我们将单词分成3个级别:第一级别、第二级别和第三级别。我们以不同方法处理包含着这些级别中单词的条目。
1)对于第一级别中的单词,所有条目均会在分值计算的最后列表中被考虑。
2)对于包含有第二级别单词但不包含有第一级别单词的条目,我们计算近似分值,并且从列表中选择前50,000个bid(条目)。
3)对于第三级别的单词,我们不会检索任何包含它们但不包含第一级别和第二级别单词的条目。换句话说,第三级别的单词不生成任何命中文件候补。我们仅在最终分值计算中的第一级别和第二级别bid的集合中的bid里考虑它们。
图22C显示如何将查询信息元分类成3个级别单词的伪代码。简单地说,这些是分类逻辑:
1)我们保留并更新第一级别的bid数量计数(bid_count)。该计数通过在DB.itm表格中查找单词频率来交互地产生。我们也计算bid_count_threshold。bid_count_threshold=min(100K,数据库条目大小/100)。
2)对于每个被排序的信息元,如果信息元的SI分值比信息元阈值低,所有该信息元里的单词都被忽略。
3)对于最大(20,60%*total_itom_count)信息元,对信息元里最高SI分值的单词,a)如果bid_count<bid_count_threshold,它是第一级别单词;b)bid_count>bid_count_threshold,它是第二级别单词。
4)对于信息元中的其它单词,a)如果si(word)>word_si_threshold,它是第二级别单词。b)如果si(word)<word_si_threshold,它是第三级别单词。
5)如果还有剩余信息元(40%低分值信息元),对于该信息元中的每个单词,a)如果si(word)>word_si_threshold,它是第二级别单词。b)如果si(word)<word_si_threshold,它是第三级别单词。
3.6 搜索过程
3.6.1 概述
有两种类型的搜索:全局搜索和区段搜索(aka当地搜索)。在全局搜索中,我们想要识别与查询有匹配信息元的所有条目,并且在不考虑条目的大小以及匹配信息元在条目中的何处出现的前提下,根据累积分值对其评级。在区段搜索中,我们考虑条目中的匹配信息元和这些匹配出现的位置。包含匹配信息元聚类的区段被单独输出。对于条目大小非同质的数据库,由于向长条目的偏移,全局搜索可能会生成较差的命中文件列表,而区段搜索会纠正该偏移。
在搜索中,我们首先需要产生一张用于命中文件分值的最终计算和命中文件评级的条目备选列表。根据该备选列表,我们接着基于与查询共有的信息元以及在区段搜索的备选中这些信息元是如何分布的,计算每个备选的分值。对于全局搜索,生成一个总分值。对于区段搜索,生成备选中区段和其分值的列表。
该备选列表是从第一级别和第二级别单词中生成的。所有包含第一级别单词的条目是命中文件备选,而包含第二级别单词的条目首先被筛选,并且仅有该集合中的前50,000个bid被考虑为备选。第三级别单词对最终备选的生成没有贡献。
图22D:产生备选和计算命中文件分值。
3.6.2 搜索逻辑
这里是搜索逻辑的概要:
对第一级别单词:
1)检索第一级别中每个单词的bid。
2)保留所有被检索的bid。这些bid被自动插入命中文件备选集合。
对于第二级别单词:
1)检索第二级别中每个单词的bid。
2)除了那些由第一级别单词检索过的bid,我们以第二级别单词为基础计算剩余bid的SI分值。
3)根据该累积SI分值将bid排序。
4)保存该池中多达50,000个bid。将该bid的集合加入命中文件备选集合。
对于第三级别单词:
1)对命中文件备选集合没有新的bid贡献。
2)检索第三级别中每个单词的所有bid。剪切这些列表以仅仅保留那些在命中文件备选集合中出现的bid/位置的子集。
对于那些进入最终命中文件备选集合的条目,我们以在所有级别(级别1,2和3)中的单词的至今为止被检索到的位置信息为基础重建每个条目。我们在重建的条目的基础之上进行全局搜索和区段搜索。在全局搜索中,以查询信息元和条目中信息元之间的累积匹配为基础生成整个条目的总分值。对区段搜索,对区段中的每个非匹配单词应用空隙处罚。确定区段的上下边界以最大化总区段分值。对区段有一个最小阈值要求。如果备选区段的分值在该阈值之上,就保留它。否则,忽略它。
在总分值或者区段的区段分值的计算中,我们采用称之为“动态信息元匹配”的程序。“动态信息元匹配”的起点是来自查询的查询信息元集合,接着是章节3.5中的“有序、重叠以及非冗余”的规则。对每个备选命中文件,我们采用被检索的所有信息元单词和它们的位置,以重建来自反转索引文件的文本。位置的空隙是由非匹配单词组成。现在,我们在重建的条目上运行相同的解析程序(具有“有序、重叠以及非冗余”的规则)以识别其所有匹配信息元。从这里:
1)利用所有被识别的信息元,可以计算条目的总分值。
2)利用被识别的信息元、它们在条目中的位置和那些信息元之间空隙的大小可以计算区段和区段分值。自然地,相邻信息元或者重叠信息元的空隙大小为零。
3.6.3 对命中文件中信息元的重复出现的分值阻尼
搜索中的一个挑战是如何处理查询和命中文件中的重复。如果一个信息元在查询中出现一次,但在命中文件中出现k次,我们应该如何计算其对总分值的贡献?两种极端为:1)仅加一次SI(itom),且忽略第二次或第三次,...的出现。或者2)我们可以用重复次数k乘以SI(itom)。很明显的是这两种极端都不好。适合的答案是采用阻尼因子α来限制多次重复的效果。
一般来说,如果一个信息元在查询中出现n次,并且在命中文件中出现k次,我们应该如何计算该信息元的总贡献?这里我们给出两种处理该普遍情况的方案。这两种方法的不同在于当查询信息元在查询中重复n次时阻尼以多快的速度出现。如果n= 1,那么两种方法是一致的。
1)快阻尼
SI_total(itom)=k*si(itom),对于k<=n;
n*si(itom)+Sumi=1,,(k-n)αi+1*si(itom),对于k>n。
2)慢阻尼
SI_total(itom)=k*si(itom),对于k<=n;
=n*si(itom)(1+Sumi=1,,[(k-n/n)]αi),对于k>n且k%n==0;
=n*si(itom)(1+Sumi=1,,[(k-n)/n]αi+((k-n)%n)/n*α[(k-n)/n]+1),对于
k>n且k%n!=0。
这里si(itom)是信息元的Shannon信息分值。SI_total是该信息元在全局搜索或者区段搜素中对累积分值的总贡献。α是阻尼因子(0<=α<1)。%是模算符(一个数除以另一个数的余数);且[(k-n)/n]意味着(k-n)/n的整数部分。
在限制情况中,当k趋向无穷时,方法1)和2)都有上限。对1),是:
1)快阻尼的限制情况SI_total(itom)=n*si(itom)+(1/(1-α)-1)*si(itom)
2)慢阻尼的限制情况SI_total(itom)=n*si(itom)/(1-α)。
3.6.4 识别高分值区段(HSS)的算法
先前我们通过正映射文件识别HSS(DB.itom.fwd,pid到itom_id映射的FASTA文件)。首先从逆映射文件(DB.itom.rev,FASTA文件,itom_id到pid的映射)生成备选,接着从DB.itom.fwd文件中检索每个备选。这是搜索速度的瓶颈,因为它要求正索引文件的磁盘存取。在新实施例中,我们仅会计算来自逆索引文件的当地分值,该逆索引文件在引擎启动时已经被读入存储器了。每个信息元的正信息已经在DB.itom.rev文件(逆索引文件,aka反转索引文件)中了。
假定:
查询:{itom1,itom2,...itom_n}。存储器中的反转索引文件包含命中信息元和其文件以及位置信息。举例来说,在存储器中,我们有:
Itom1 pid1:pos1,pos2,pos3pid2:pos1pid3:pos1...
Itom2 pid1:pos1,pos2,pos3 pid2:pos1 pid3:pos1 pid4:pos1 pid5:pos1...
......
Itom_n pid1:pos1,pos2,pos3 pid2:pos1 pid3:pos1 pid4:pos1 pid5:pos1...
算法:
伪码写以PERL撰写。我们采用两层缓冲(缓冲的缓冲):HoH{pid}{positon}=itom。该缓冲记录了什么条目中有什么信息元以及每次出现的位置。HoH缓冲通过从逆映射文件中读取上述命中信息元生成。
媒体输出:两个数组,一个追踪正分值,一个追踪负分值。
最终输出:具有正负分值的单个数组。
对于在HoH中的每个pid,我们想要生成两个数组:
1)正分值数组,@pos_cores,维数:N。
2)负分值数组,@neg_cores,维数:N-1。
3)位置数组,每个命中信息元的位置
为了生成这些数组:
Foreach $pid in(keys%HoH){#$pid is the keys
        %H_entry=%HoH{$pid}#H_entry{position}=itom for a single entry.
        foreach $positon sort{$H_entry{$a}
Figure A200780023220D0147125818QIETU
$H_entry{$b}}%H_entry{
                $itom=$H_entry->{$position};
                $score=SI($itom);
                $itom_pos=$position;
                push(@position,$positon);
                push(@pos_cores,$score);
                if($temp_ct>0){
        push(@neg_scores)=($position-$old_position)*$gap_penalty;
                $old_position=$position;}
                $temp_ct++;
      }
      @HSSs=identify_HSS(@pos_score,@neg_score,@position);
}
现在问题简化成在正负分值的系列之间寻找高分值区段,并且报告HSS坐标。
最终区段边界由一迭代方案识别,该迭代方案从一种子区段(以上数组中的正分值系列:@pos_score)开始。假设我们有一个备选起始区段,我们会在区段的每一边进行扩展直到不能再扩展为止。请注意,相邻系列(向左或者向右)是负分值系列,接着是正分值系列。在扩展中,我们将该负分值系列以及其后的正分值系列视为一对。我们可以选择不同方式将种子区段扩展为一个长HSS,通过:
1)一对前瞻算法;
2)两对前瞻算法;
...
3)或者,一般地,K对前瞻算法(K>0)。
在一对前瞻算法中,我们不允许我们扩展(例如,加上一对负分值系列及其后的正分值系列)的每一对的累积信息数值分值降低。因此,在一对前瞻算法的一次单一迭代的最后,我们或者通过一对负分值系列及其后的正分值系列来扩展区段,或者我们根本无法扩展。
在两对前瞻算法中,我们不允许我们扩展(例如,加上两对负分值系列及其后的正分值系列)的每两对的累积信息数值分值降低。如果该两对的步骤导致累积信息分值的降低,我们会去掉最后一对,然后检查该一对的扩展是否可行。如果可行,那么我们的新边界就被一对系列所扩展。如果不行,我们默认返回原始区段。
该两对前瞻算法会产生与一对前瞻算法相比更长的区段,因为它将一对前瞻算法包含于其计算中。
一般地,我们可以执行K对前瞻算法,其意味着如果我们对我们的区段执行K对扩展,只要整体上该K对增加了总的信息分值,我们就将允许直至K-1对时累积信息分值的一个下降。对更大的K,如果所有其他条件不变,我们会生成更长的HSS。
36.5 概要
为了概括至今为止我们所说的,对命中文件备选集合的每个bid来说,我们执行:
1)检索查询信息元(si(itom>阈值))的每个单词的所有位置。
2)根据从反转索引文件中检索到的位置排序。
3)采用动态解析程序以识别所有bid中的匹配信息元。
4)计算带阻尼的全局分值和区段分值。
3.7 结果传送
在搜索过程之后,被检索的bid集合有了足够的信息:
1)全局分值;
2)区段分值;
3)高分值区段的位置信息;
4)查询强调信息;
5)匹配信息元信息。
搜索过程有3个输出文件。它们是:
1)命中文件概要页面。它包含信息:bid、全局分值和区段分值。
2)强调数据文件。它包括:bid、查询强调信息、高分值区段位置信息。
3)匹配信息元列表。该文件限制了存取控制。仅用户的一个子集可以存取该信息。它包含:itom_id、信息元、si_score、查询频率、命中文件频率、累积分值。
接着网页接口程序将那些文件转换成HTML格式并传送它们至用户。
IV.网络接口
网络接口由一组面向用户程序(用PHP编写)、后端搜索程序(用C++编写)和相关数据库(存储于MySQL中)组成。它管理用户帐号、登陆和用户验证,接收用户的查询并将其送至搜索引擎,接收搜索引擎的搜索结果,传送概要结果页面和详细结果页面(对每个条目)。
4.1 数据库设计
在相关数据库中存储用户数据。我们目前采用MySQL数据库服务器,而且客户端数据库为Infovell_customer。我们有以下表格:
2)用户:包含用户档案数据,如user_id、user_name、first_name、last_name、密码、电子邮件、地址等等。
3)DB_class:包含数据库信息,包括数据库名称和解释,像MEDLINE、USPTO等等。
4)DB_subtitle:搜索接口的参数。
5)user_options:在搜索时用户可以指定/修改的参数。提供值的默认集合。
4.2 登陆页面和找回密码页面
Index.php页面是网络上第一个面向用户的页面。如果用户的账号已经存在,它让用户登陆或者找回其“密码”或“用户名”。从网页浏览器点击server.infovell.com时,index.php传送一张用户登陆页面。
图23A。用户登陆页面。它集合了包括用户名、密码的用户信息。当已有用户提供电子邮件时,“发送用户名”按钮会发送用户名给用户,并且“发送密码”按钮会发送密码给用户。
如果点击“登陆”按钮,它会触发以下行动:
1)index.php会传送参数给自己,得到用户名和密码。
2)在MySQL Infovell_customer数据库中的用户表格上查询。
3)如果检查不到用户名和密码,它会显示错误信息。
4)否则它会设置一些对话值让用户登陆,然后转到main.php。
如果点击“发送用户名”或者“发送密码”按钮:
1)index.php会传送电子邮件信息至getpassword.php。
2)getpassword.php会在MySQL Infovell_customer数据库中查询用户表格。
3)如果没有该电子邮件,它会显示错误信息。
4)否则它会发送包含“用户名”或“密码”信息的电子邮件至用户的电子邮件地址。
5)运行index.php以重新传送登陆页面。
4.3 搜索接口
登陆后,将主查询页面(由main.php传送)呈现给用户。用户必须选择数据库(登陆后默认提供)和查询文本以搜索。查询框的按钮上有两个按钮:“搜索”和“清除”。点击“搜索”按钮时,它会得到查询文本和要搜索的数据库的信息。同时也应该定义搜索选项。右上角的“搜索选项”让用户改变这些设置,“搜索选项”边上的“用户档案”按钮让用户管理其个人档案。
图23B。主查询页面。这里有多个数据库可以搜索并且用户应该具体指定他想要搜索哪个。两个底部按钮(“搜索”和“清除”)让用户发送搜索请求或者清空查询条目框。右上角的两个按钮让用户修改其搜索选项(“搜索选项”按钮)以及管理其个人档案(“个人档案”按钮)。这里我们将一篇科研论文的整个摘要作为查询。
如果用户点击“清除”按钮,main.php会采用javascrip程序清除查询文本域中的所有文本。它重新传送主查询页面。
如果用户点击“搜索”按钮,它会触发以下一系列行为L:
1)main.php:传送查询给search.php程序。
2)search.php:search.php收到查询请求并且依次执行以下任务:
(i)产生随机字符串作为查询id。组合查询id和其对话id以生成用以记录查询的唯一关键词:sessionid_queryid;将查询写入文件:html_root/tmp/sessionid_queryid.qry
(ii)开始一个客户机程序,一个C++程序,以通过一个被命名的管道:sessionid_queryid和搜索命令类型,将搜索选项传送至搜索引擎。如果客户机返回错误代码,转到error.php。
(iii)转到progress.php。
3)progress.php:一旦收到来自search.php的请求,它会:
(i)每秒读取一次html_root/tmp/sessionid_queryid.pgs直到其内容大于100(这意味着搜索完成)。
(ii)如果从html_root/tmp/sessionid_queryid.pgs文件返回255,那么运行:noresult.php
(iii)如果从html_root/tmp/sessionid_queryid.pgs文件返回100,那么运行:result.php以显示结果。
搜索哪个数据库:
1)main.php:cookies之一为管道数(db=管道数)。管道数决定搜索哪个数据库。
怎样将搜索选项传送至搜索引擎服务器:
1)main.php:点击“搜索选项”以运行searchoptions.php
2)searchoptions.php:点击“保存”按钮时,将搜索选项被写入html_root/tmp/sessionid.adv
3)当客户机程序运行时,它将对话id传送至搜索服务器。如果sessionid.adv文件存在,搜索服务器会下载新选项数据。
图23C。“搜索选项”链接。该页面允许用户设置搜索时间选项。
4.4 结果页面
在点击“搜索按钮”后,结果会在一时间延迟后被传送。
图23D。样本结果概要页面。相关数据通过右边的列被传送。每个带下划线的字段是可排序的(通过点击该列头部的“排序”链接)。相关性链接提供一标示页面,其中查询和单个结果被并排比较。
当搜索完成时,应该在结果页面上显示结果。
1)result.php:启动一个C++程序以解析结果文件(html_root/tmp/sessionid_queryid.rs)。接着它会返回结果信息。
2)在网页上显示结果的概要页面。
4.5 标示页面
点击被result.php传送的结果概要页面上的“相关性分值”单元时,通过程序:highlight.php显示标示页面。
3)highlight.php:一个C++程序,用于解析结果文件(html_root/tmp/sessionid_queryid.hl),接着返回标示信息。
4)根据标示信息,highlight.php传送标示出匹配信息元的结果页面。
图23E。单个命中文件条目的标示页面。来自命中文件条目的高分值区段在这里显示(数字是黄色的)。这里高分值区段中的匹配信息元用蓝色标示。用户可以在多个高分值区段间转换,或者在“全局视图”(通过点击顶部的“全局文件”)与区段视图(默认)间转换。
4.6 结束搜索对话
用户可以通过点击“注销”按钮来结束搜索对话,该按钮在主查询页面(左上角)、概要结果页面以及标示页面(左上角)中显示。
V.查询扩展和相似性矩阵
信息元作为基本信息单元不一定需要彼此独立。有两种不同类型的信息元关系。1)表示相同意思的不同信息元。同义词和缩写名称形成这类。举例来说,肿块和肿瘤;你采用哪一个取决于你来自哪个国家。在另一个例子中,USA,United States,United States of America都包含相同的信息(也许有少许不同,但是谁介意呢)。2)有相关意思的不同信息元。举例来说,肿瘤和癌症,“基因显现数据”和“基因显现”。
对于同义词,同义词文件引起了信息元列表的扩展以及涉及的信息元的SI的减少。该步骤应用于SI分布函数。
对于相关信息元,我们有自动查询扩展步骤。我们将查询扩展至包含具有相关意义的信息元。在搜索中,我们在相似性系数的基础上调节这些信息元的Shannon信息计算。同义词的相似性系数为1.0。
仍然有许多关于查询扩展和相似性矩阵的争论。
5.1 处理同义词的现有方法
采用内部同义词文件:有一个内部同义词文件,其包含英语中使用的最常用的同义词。这些同义词是在英国和美国使用的意义相同的单词。该集合包含几百个这样的单词。
上传用户定义的同义词文件:用户可提供额外的同义词文件。一旦被上传,它将会在所有随后的搜索中被用到。该文件应该遵循这样的格式:同义词集合应该被一起列出,每个同义词间用逗号隔开,接着是一个空格。集合由一个分号结束。新的集合在新一行开始。
这里是示例文件的内容:
way,road,path,route,street,avenue;
period,time,times,epoch,era,age;
fight,struggle,battle,war,combat;
SI分值调节:应该调节所有涉及的信息元的Shannon信息。举例来说,第一个例子的被调节的SI:
SI(way)=SI(road)=SI(path)=SI(route)=SI(street)=SI(avenue)
=-log2(f(way)+f(road)+f(path)+f(route)+f(street)+f(avenue))/N
该调节步骤应该在SI分值矢量被下载进存储器时,并在计算任何搜索之前完成。该SI调节如果未完成,则应该在相似性矩阵计算之前进行。
5.2 相似性矩阵的定义
相似矩阵SM是显示信息元内部相关性的对称矩阵。它是L*L维的,其中L是给定分布中不同信息元的总数。SM的所有分量在0和1之间(0<=x<=1)。对角元素均为1。
实际上,SM是一个稀疏矩阵。我们可以用文本文件来表达它。这里是一个例子:
Itom1itom2:x1itom3:x2itom3:x3,其中xi系数在0,xi<=1之间。
此外,因为SM是对称的,我们仅需要记录一半的矩阵元素(那些在对角线之上的)。作为约定,我们假设上述公式右边的所有itom_id都比信息元1大。
例1:在旧的同义词文件中,对同义词列表:way,road,path,route,street,avenue。如果我们假设itom_id(way)=1100,itom_id(road)=1020,itom_id(path)=1030,itom_id(route)=1050,itom_id(street)=1080itom_id(avenue)=1090,那么我们有以下表示:
11001020:11030:11050:11080:11090:1
用户应该注意所有在first_ID之后的itom_id应该有更小的数字。我们可以这样做是因为SM的相似性假设。此外,我们不在右边列出1100,因为1100默认具有相似性1.0。
例2:假设我们有一个信息元:“gene expression profile data”,并且接着的也是信息元:gene expression profile,expression profile data,geneexpression,expression profile,profile data,gene,expression,profile,data。
在SM中,我们应该有以下条目(这里我不使用信息元ID。用户应该假设gene_expression_profile_data有与其他所有在此例中使用的信息元ID相比最高的ID)。
gene_expression_profile_data gene_expression_profile:x1expression_profile_data:x2 gene_expression:x3 expression_profile:x4profile_data:x5 gene:x6expression:x7 profile:x8
注释:1)“数据”不包含在此条目中,因为“数据”的SI<12。
2)系数xi是这样计算的:
x1=SI(gene_expression_profile)/SI(gene_expression_profile_data)
x2=SI(expression_profile_data)/SI(gene_expression_profile_data)
x3=SI(gene_expression)/SI(gene_expression_profile_data)
x4=SI(expression_profile)/SI(gene_expression_profile_data)
x5=SI(profile_data)/SI(gene_expression_profile_data)
x6=SI(gene)/SI(gene_expression_profile_data)
x7=SI(expression)/SI(gene_expression_profile_data)
x8=SI(profile)/SI(gene_expression_profile_data)
我们这里采用的SI函数是允许冗余的。这样,所有的xi满足条件0<xi<=1。
5.3 生成给定分布的相似性矩阵
5.3.1 假设
1.根据递升方案生成信息元ID。即,最常用的信息元有最短的ID,最稀少的信息元有最长的ID。该信息元ID的分配可以是与信息元识别程序分离的独立循环(见信息元识别说明)。该信息元ID的分配方法有关于以下方面的积极暗示:
1)关于正索引和逆索引文件的ASCII文件的大小。
2)关于压缩/存储管理。
3)关于自动相似性矩阵的生成(该文件)。
2.预设的最小的系数x值:minSimCoeff=0.25。如果分量信息元小于minSimCoeff,那么它不被包括在SM中。
3.仅包括被完全包含的信息元的相似性数值。该版本的自动矩阵生成仅处理一个信息元被完全包含在另一个信息元中的情况。它不考虑部分重叠的情况下的相似性,举例来说,在a+b和b+c中。
部分相似的信息元如a+b和b+c,或者a+c和b+c+d会在以后的迭代中考虑。这里描述的相似性矩阵方法可以处理这些种类的相似性。
5.3.2 输入(DB.itom)和输出(DB.itom.SM)
伪代码:
for 1=L,1>0,1--{
       break down itom(1)into components,all possible components(i=0,...K)
          (You Sheng已经有执行该任务的代码了)
       for i=0;i<=K;i++{
            compute x(1i)=SI(itom(i))/SI(itom(1));
            if x(1i)<minSimCoeff{next;}
            push(@SM(1),x(1i));
       }
       write“itom(1)\t itom(0)...itom(K)\n”;
}
5.4 在查询扩展中利用相似性矩阵
5.4.1 相似性矩阵的读入
在相似性矩阵的读入中,我们不得不将压缩的表达式扩展至我们可以采用的全方位矩阵。对于每个信息元,我们的目标是重建与该特定信息元有相似性的信息元的整个列表。假设我们采用@itom_SC(1)(1=0,...,L)来表示与信息元(1)相似的信息元。
5.4.2 伪代码
for 1=L,1>0,1--{
       add“itom(1)\t itom(0)...itom(K)\n”->@itom_SC(1);
             for i=0;i<=K;i++{
             add itom(1)->@itom_SC(i);
       }
现在,@itom_SC(1)包含所有与其相似的信息元。
5.4.3 利用相似性矩阵的查询扩展
1)给定查询文本,我们进行非冗余的信息元解析的步骤。在该步骤中,通过没有重叠的最长的可能信息元集合将查询文本分解成信息元(正如这里的其他部分所讨论的)。
我们称该信息元集合:@itom_Proper。
2)对于@itom_Proper(最小的SI分值>12)中SI分值位于前40的信息元,我们会得到@itom_expanded、其在@itom_expanded_Ct中的出现以及其在@itom_expanded_Sc中的SI分值的列表。
对于每个itom_Proper元素,
(1)在@itom_SC(1)中查找该信息元。
(2)如果扩展信息元已经在查询信息元列表中了,就忽略。
(3)计算这种情况下它的SI。通过将相似性系数和与其相似的信息元的SI分值相乘,以重新计算SI分值。如果扩展信息元的SI<12,就忽略。
(4)在@itom_expanded中记录信息元,在@itom_expanded_Ct中记录其出现以及在@itom_expanded_Sc中记录其SI分值。在@itom_expanded_Sc中记录被从不同的@itom_Proper信息元中拖进来的信息元的平均分值。对信息元的每次出现,SI(itom)_updated=(SI(itom)_old+SI(itom)_this_occurance)/2,其中SI(itom)_old是该扩展信息元先前的SI分值,SI(itom)_this_occurance是新的itom_proper的新SI分值。
举例来说,如果(a1,a2,a3,a4,a5)是适当的信息元,并且它们都在信息元扩展中扩展至信息元b。那么,信息元b应该有:
信息元        出现            SI分值
------------------------------------------------------
b              5          [SI(a1)+...+SI(a5)]/5
注意,对每个ai,SI_expanded(b)=SI(b)*[SI(a1)/SI(b)]=SI(ai)。
3)我们会采用相同的20%-40%规则从@itom_expanded中选择将被包含在该搜索中的信息元。即,
a.如果@#itom_expanded(元素总数)小于等于20,那么在搜索中采用所有的信息元。
b.如果@#itom_expanded大于50,采用40%的信息元。
c.如果20<@#itom_expanded<=50,SI位于前20的信息元将被采用。
5.4.4 命中文件的评分
信息元的SI分值取决于它是从哪里来的。在@itom_expanded中的信息元应该采用@itom_expanded_Sc,在查询扩展步骤中确定的被调节过的SI分值。换句话说,
1)如果信息元被直接包含在查询中,采用其来自DB.itom中的SI分值。
2)如果信息元通过相似性矩阵被包含在查询中,那么该信息元的SI分值应该来自@itom_expanded_Sc而非DB.itom。
VI.联合搜索
联合搜索意味着同时在多个数据库中搜索。举例来说,如果我们有MedLine、US-PTO、PCT以及其它数据库,与每次搜索一个数据库不同,我们也许想要搜索所有(或者至少其中两个的集合)的数据库。联合搜索可以是默认的搜索模式,意味着如果用户不指定特定数据库,那么我们会对所有的可用数据库(或者用户有进入特权的数据库的集合)进行搜索。当然,用户应该有权利在其进入特权内选择联合搜索中的默认数据库集合。典型但并非必要地,数据库是不同的(意思是它们有不同方案),或者在网络上通过不同节点对它们进行查询,或者两者都满足。
一旦确定进行联合搜索,有两种方式进行搜索(计算每个数据库中单个条目的命中文件分值),且有两种方式传送结果给用户。对命中文件分值的计算,A1:我们可以计算一联合分值,该联合分值与假定所有的数据库被合并为单个数据库时的命中文件分值相等;或者A2:我们可以从没有发生变化的单个数据库中得到的命中文件分值。对于结果传送,B1:我们可以传送一组合了来自单个数据库的所有命中文件的单个命中文件列表。或者,B2:我们可以传送一包含来自每个单个数据库的概要信息的概要页面,以及另一个指向用户指定的特定数据库的命中文件概要页面的链接。
很自然地将A1和B1组合,A2和B2组合。但是其它组合也是可以的。
6.1 计算命中文件分值的两种方式
6.1.1 计算命中文件(A1)的联合分值
该计分方法的实现与分布式搜索中的命中文件分值计算非常相似。即,整个数据库联合仅有一个单一的信息元分布表格。所有的单个数据库均采用该单一表格来给其命中文件计分。单个命中文件的分值有全局意义:它们是可比较的。因此,一个数据库中的一个命中文件可以与另一数据库中的另一个命中文件比较。
可以从所有单个表格(加入每个信息元的频率,然后在新频率的基础上计算新的SI分值以及总的数据库信息元*频率计数)的简单组合中生成单一的信息元表格。我们称该信息元分布表格:DB_fed.itm。
因为数据库中的信息元集合可能是不同的,我们不得不将合并的信息元分布表格映射回单个数据库(因此,保持每个数据库中的信息元ID不变,仅调节其分值)。这样,我们不用改变数据库的任何其它索引文件(例如,entry_ID映射文件或者反转索引文件)。唯一需要修改的文件就是文件。我们可以称这个新表格为:DB.itm.fed。注意,对于DB1和DB2,DB1.itm.fed和DB2.itm.fed不相同。
6.1.2 计算非联合命中文件分值(A2)
第二种计算命中文件分值的方法是,一旦搜索任务被交至单个数据库,就完全无视联合的性质。服务器会用非联合搜索的方式计算数据库中的命中文件分值。这里就不多说了。
6.2 传送结果
6.2.1 在单个命中文件列表中(B1)
一旦命中文件分值的计算完成,且根据A1或者A2从单个数据库生成了命中文件集合,可以将结果合并为单个命中文件列表。通过命中文件分值(A1的联合分值或者A2的非联合分值)将该命中文件列表排序。我们可以将数据库信息插入每个命中文件的某个地方,举例来说,在命中文件页面插入显示数据库名称的单独一列。
相关数据的议题
虽然没有通用的标题数据。因为来自不同数据库的标题数据(相关数据字段)可能不同。一般来说,我们进行联合搜索时,我们没有办法像对受控的数据集合进行特定的数据库搜索那样通过相关数据字段排序。但我们仍然可以根据其相关数据字段在概要页面中显示每个单个命中文件。
传送单个命中文件
这里我们保留显示命中文件的特异性。即,来自特定数据库的每个命中文件的显示有独特的显示风格,就如同在非联合搜索中显示的单个命中文件那样。
6.2.2 在多个命中文件列表中(B2)
在联合搜索中这是更传统的显示结果的方式。首先概要页面被返回给用户,其包含来自每个单个数据库的概要信息(例如,数据库名称;数据库大小;找到多少命中文件;该DB中最高的分值等等)。用户现在可以选择一特定的数据库,该数据库的概要页面接下来会被显示。该结果页面与用户进行对该数据库的特定非联合搜索的结果相同。
相关数据字段不是议题
这里相关数据字段不是议题。因为来自一特定数据库的命中文件被一起传送,数据库的相关数据字段可以与非联合搜索相同的方式被传送。
6.3 联合搜索的架构设计
图24。联合搜索的总体架构。网络接口收到用户的搜索请求并传送结果给用户。来自客户端的通信接口发送请求至运行在逻辑服务器上的服务器端的通信接口。来自服务器端的通信接口将请求传送至搜索引擎服务器。该搜索引擎服务器生成命中文件备选并且根据命中文件分值对其评级。客户端中的通信接口程序与服务器端中的通信接口程序交互作用以传送结果(概要信息和具有强调数据的单个命中文件)。
客户端中引擎的通信接口是服务器上用于处理来自网络客户的客户请求的程序。它接受请求,处理请求并且将请求传送至服务器端。
服务器端中引擎的通信接口是运行在逻辑服务器上用于处理来自客户端引擎通信接口的请求的程序。它接受单个请求,处理请求,并且传送请求至搜索引擎服务器。
关于它们如何一起工作的概要
客户端程序是在web_dir/bin/目录下的。当查询被提交时,网页会调用客户端程序。接着该程序连接服务器端中的远程逻辑服务器通信接口,该接口接着会传送请求内容至服务器端。服务器端中的程序输出一些参数和内容数据至逻辑服务器上的一具有特定命名的管道。该搜索引擎服务器经常检查该管道,看是否有新搜索请求。经该管道传送的参数和内容数据包括一联合sessionid_queryid关键词以及一command_type数据。搜索引擎服务器会在读取command_type数据后开始运行查询。服务器端程序检查搜索过程的id.pgs。当搜索完成时,服务器端程序传送一些内容数据至客户端,以说明该逻辑服务器上的搜索完成。对于联合搜索,客户端程序会检查来自多个服务器端程序的返回状态。如果这些都完成了,那么客户端程序将对进程文件写入,以说明联合搜索的完成。
客户端中的网络通信接口是服务器上处理结果或强调请求的程序。它接受请求并且传送请求至服务器端。
服务器端的网络通信接口是运行在逻辑服务器上用于处理来自客户端中网络通信接口的请求的程序。它接受请求,得到结果信息或者强调信息。接着它传送这些数据至客户端。
VII.分布式搜索
分布式计算的目标是改善搜索速度和并行使用容量(搜索引擎上并行用户的数量)。解决方法是用多台小型电脑(相对便宜)来处理大量的搜索请求。首先让我们尝试标准化一些术语:
1.主节点:接收搜索请求并管理其它计算机的计算机。
2.从属节点:被另一台计算机管理的计算机。
3.负载平衡器:基于从属节点的负载能力为一组从属节点分配工作。
这里我们解释主节点和负载平衡器之间的区别。可以将负载平衡器看成主节点,但是其是相对简单的主节点。它仅负责平衡单个节点间的负载;而主节点可能涉及更多精密的计算任务,比如合并来自多个数据库碎片的搜索结果。
可以将主节点、从属节点和负载平衡器结合为一个整体以形成一服务器格网。形成服务器格网有不同的方法。在一种结构中,数据库被分成多个小DB区段。以一负载平衡器为首的一组计算机对每个DB区段负责。格网主节点视组中的负载平衡器为从属节点。在该结构中,我们有一单一的格网主节点(有潜在后备),和大量列主节点(负载平衡器);并且每个列主节点管理一组列从属节点。图28显示该结构的示意图。
图28。分布式计算环境的示意图。有后备MN_Backup的主节点(MN),接收搜索请求并分配任务至一组N个同样具有后备的负载平衡器(LB)。每个LB管理一组从属节点(SN),该从属节点在数据库(DB[i],i=1,...N)区段上或者进行搜索或者进行索引。
7.1 负载平衡器的任务
负载平衡器接收搜索请求。它观察每个单个服务器的负载。基于单个服务器的负载,该负载平衡器给一单个机器分配搜索工作,通常是处理请求时负载最少的机器。搜索完成后,结果从从属节点被传送以呈现给用户或者请求的计算机。
7.2 通过主节点管理DB碎片
考虑最简单的情况:我们用一单个计算机作为主节点。有一组从属节点。每个从属节点有数据库碎片DB[i],i=1,...,N,N是从属节点的数量。
7.2.1 搜索中
主节点:
1)接收搜索请求。
2)给所有从属节点发送相同请求。
3)每个从属节点在DB碎片DB[i]上进行当地搜索。这里生成的分值必须是全局的。
4)主节点组合搜索结果,根据命中文件分值对其排序并且呈现结果给用户。
5)应对于用户对单个命中文件的请求,主机决定哪个DB[i]基于其原始主ID来检索命中。一旦确定了特定的从属节点,那个特定命中的强调信息已经可得。
从属节点:
1)接收搜索请求。
2)搜索其DB碎片。
3)生成命中文件列表并传送结果至主节点。
这里的关键是如何索引DB。每个从属节点包含针对该DB碎片的逆索引文件。但是,信息元分布表格必须是针对整个数据库的。只有这样,才可以对计算的分值进行排序。
7.2.2 索引中
该配置也可用来索引。当一个数据库进入时,主节点会分配给每个从属节点一个DB碎片,例如DB[i],i=1,...,N,其中N是从属节点的计数。每个从属节点单独索引其DB[i],生成一张信息元分布表格DB[i].itm,以及一个逆索引文件DB[i].rev。
来自所有从属节点的信息元分布表格会被合并为一具有组合频率的单个表格。这就是DB.itm表格。接着该表格被映射回单个从属节点,因此生成DB[i].itm.com(.com的意思是组合的)。DB[i].itm.com包含旧信息元ID的新信息元频率。该表格会和DB[i].rev一起被使用于搜索和计分。
VIII.信息元识别和信息元数值
8.1 信息元定义
单词:没有单词分隔符(通常,““,空格)的连续字符串。
信息元:给定数据库中的基本信息单元。它可以是一个单词、一条短语或者满足一定选择标准的连续单词系列。
可以从外部源输入信息元,举例来说,外部短语字典或者分类学。任何字典或者分类学中的短语,在数据文集中其频率大于0的都可以是信息元。这些信息元叫做输入信息元。
信息元可以分成单个单词的信息元以及复合信息元。单个单词信息元的识别是显而易见的。从这里开始,我们将关注于如何识别给定数据库中的复合信息元。我们采用以下约定:
Citom,或者c-itom,备选信息元。开始,它仅是连续的n个单词。
信息元:达到一定统计要求并由信息元识别程序生成的citom。
8.2 通过联合规则识别信息元
联合分析是一个数据挖掘的概念,涉及在相关的巨大集合中识别两个或多个项目。联合规则已经应用于许多领域。举例来说,在购物篮分析中,给定消费者交易历史的集合,我们可以询问购买“面包”的消费者是否同时有意向购买“牛奶”。如果是,那么{面包}->{牛奶}会形成一个联合。除了购物篮数据外,联合分析可以应用在许多领域,特别是在线销售,例如,在线售书、在线音乐/影视销售、在线电影租赁等等。
联合分析也可以用来识别单词间的关系。在我们的具体例子中,可以用联合分析来识别数据集合中两个或两个以上单词的“强于随机的”联合。这些联合,一旦通过特定统计测试,便可以被视作备选信息元。当然,联合分析不仅仅可以应用来研究相邻单词的联合。也可以应用联合规则来寻找句子或者段落中单词的联合。这里我们仅关注在信息元识别上应用联合规则(例如,相邻单词的联合规则)。
除了我们在章节2中概述的联合规则发现方法(最小频率要求、定量测试,百分比测试以及Chi-square测试)以外,这里我们列出一些最常用的用于信息元识别的联合规则。为了在数据集合中识别信息元可以单独使用这些方法或者组合使用。
这里我们给出如何应用联合规则识别信息元的概要。我们采用2个单词的信息元的识别作为例子。因为例子中的每个单词也可作为信息元,因此这些方法可以用来识别任何长度的信息元。
问题:给定单词或者信息元,A,在所有其他与其相邻的单词中,找到具有与A的可识别联合的单词。
 
表8.1单词/信息元 B Not_B 总数
A f11=F(A+B) f10=F(A+Not_B) f1+=F(A)
Not_A f01=F(Not_A+B) f00=F(Not_A+Not_B) f0+=F(Not_A)
 
总数 f+1=F(B) f+0=F(Not_B)
表格8.1显示两个单词(信息元)A和B的联合:信息元。Not_A:不是从A开始的信息元。Not_B:不是由B结束的信息元。N:两信息元联合的总数。fij:观测事件的频率(1代表是,0代表否)。f1+:从A开始的短语的总计数。f0+:不从A开始的两个单词的总计数。
定义:
●连合规则A->B:单词A后面倾向于连接单词B。
●A->B的支持:s(A->B)=f11/N。低支持的规则可能只会简单地随机出现。我们通过移除f1+<5来排除所有低支持的检索词。因为f11<f1+,我们保留所有支持大于等于5的规则。
●A->B的置信:c(A->B)=f11/f1+。置信度越高,B接着A发生的可能越大。
●给定交易集合,找到所有支持>=min_sup和置信度>=min_conf的规则,其中min_sup和min_conf是相应的支持和置信度阈值。
●A->B的兴趣因子,IF(A,B)=s(A->B)/[s(A)*s(B)]=N*f11/(f1+*f+1)
{1,如果A和B是独立的(f11=f1+*f+1/N)
IF(A,B)={>1,如果A和B正相关
={<1,如果A和B负相关
●SI数值:IS(A,B)=s(A->B)/sqrt[s(A)*s(B)]=cos(A,B)=f11/sqrt(f1+*f+1)
●相关性系数:f(A,B)=(f11*f00-f01*f10)/sqrt(f1+*f+1*f0+*f+0)
{0,如果A和B是独立的
f(A,B)={(0,1]如果A和B正相关
{[-1,0)如果A和B负相关
有一些采用相关性系数来发现联合规则的已知问题:(1)f系数给予检索词的共同出现和共同缺席以相同的重要性。在直觉上,当样本大小很大时,共同出现应该比共同缺席还重要。(2)当样本大小按比例改变时它不再是不变量了。
表8.2
 
数值 定义
相关性,φ (f11*f00-f01*f10)/sqrt(f1+*f+1*f0+*f+0)
兴趣因子,IF N*f11/(f1+*f+1)
余弦,IS f11/sqrt(f1+*f+1)
奇数比率,α f11*f00/(f10*f01)
Kappa,κ [N*(f11+f00)-f1+*f+1-f0+*f+0]/(N2-f1+*f+1-f0+*f+0)
Piatetsky-Shapiro,PS f11/N-(f1+*f+1)/N2
集合强度,CS (f11+f00)/(f1+*f+1+f0+*f+0)*(N-f1+*f+1-f0+*f+0)/(N-f11-
Jaccard,ξ f11/(f1++f+1-f11)
所有置信,h min[f11/f1+,f11/f+1]
表格8.2。应用于信息元识别的联合规则发现的常用统计方法。这里列出的多数是对称的统计方法。还有其他的统计方法,包括不对称的方法。这里不列出了。
8.3 每个信息元的Shannon信息(Shannon数值)
在计算每个信息元的Shannon信息量时,有2个选择,一是采用非冗余频率(当前例子),或者采用冗余频率。
SI_1(a)=-log_z f(a)/N
或者SI_2(a)=-log_z fr(a)/M
其中z是log的底数。它可以是“2”或者任何其它比1大的数。SI_2有这样的性质:SI_2(a+b)>max(SI_2(a),SI_2(b))。
它意味着复合信息元应该总是有比其分量信息元高的信息量。这与特定比例人群对信息的感觉吻合。
我们可以尝试其它衡量,并且看它是否在输出评级中产生不同。
8.4 复合信息元的Shannon数佰增大
在我们的研究中,通过Shannon数值分配给短语的信息量是不够的。我们设计了该问题的有效修复。一种方法是,我们对所有复合信息元应用一乘积因子。假设si(A)代表信息元A的Shannon数值。那么,对任何给定信息元A,
S(A)=a*si(A),其中a=1,如果A是一个单个单词。如果A是一个复合信息元,那么a>1。还有其他选择。例如,
选择1:定义一个新数值S(A),通过
i)S(A)=si(A),如果A是单个单词,si(A)是单词A的Shannon信息。
ii)S(A+B)=[S(A)+S(B)]**β,其中A,B是信息元,β>=1。
这保证含有许多单词的信息元有高分值,例如:
S(w1+w2+w3+w4)>=S(w1)+S(w2)+S(w3)+S(w4)
=si(w1)+si(w2)+si(w3)+si(w4)。
选择2:对于复合信息元,通过针对每个额外单词给Shannon数值增加一固定增量来定义新的数值S(A)。例如,为短语中的每个额外单词分配1个bit的信息(作为已知顺序a+b的信息量)。因此,
i)S(A)=si(A),如果A是一个单词;
ii)S(A+B)=si(A+B)+1,(si(A+B)是短语(A+B)的Shannon分值)。这样,对于长度为40的信息元,我们有:S(phrase_40_words)=si(phrase_40_words)+39。
选择3:定义
i)S(A)=si(A),如果A是单个单词,si(A)是单词A的Shannon信息。
ii)如果我们已经得到所有长度<=n的信息元分值,计算长度为n+1的信息元分值:max(sum(S(分解的信息元))*(1+f(n)),si(itom)),其中f(n)是信息元长度或者常数的函数。
这样,对于信息元A+B,我们有:S(A+B)=max((S(A)+S(B))*(1+f(n)),si(A+B))
对于信息元A+B+C:(分解成A+B,C),我们有:S(A+B+C)=max((S(A+B)+S(C))*(1+f(n)),si(A+B+C))
所用的分解信息元的规则为:有序的,非重叠的。
还有其他用于修复复合信息元计分不足问题的设计方法。这里不提供细节了。
IX.Boolean式搜索和结构化数据库搜索
9.1 搜索结构化数据的需要
至今为止,我们知道我们的搜索引擎可以搜索相关数据字段和内容文本;它实际上是统一无差别地对待它们的。换句话说,我们没有用于搜索相关数据字段的且与搜索内容字段的方法不同的方法。这是很严重的局限。用户可能想要具体地在标题中看到特定单词。在另一个例子中,我如何指定某人的姓是“约翰”而非他的名字呢?这些问题不可避免地将我们引至对结构化数据的研究。结构化数据可以是任何格式的具有结构的数据。举例来说,我们至今为止所用的包含相关数据字段和内容的FASTA格式,实际上是结构化的,因为它有多个字段。结构化数据可以来自XML文件、相关数据库以及面向对象的数据库。到目前为止,来自相关数据库的结构化数据代表了目前最大的集合。
采用信息元信息量来衡量信息相关性的基本理论可以无较大困难地应用于结构化数据。在一些方面,将该理论应用至结构化数据有甚至更多的好处。这是因为结构化数据更“信息元化”,就是说信息更可能处在信息元级别,并且这些信息元的顺序相关性比在非结构化数据中更次要。结构化数据可以是不同形式的,例如,XML、相关数据库以及面向对象的数据库。为了简化描述,我们仅关注在相关数据库中定义的结构化数据。在用于衡量其他结构格式中的信息相关性时,对这里开发的该理论的调节是显而易见的。
一典型表格包含一主id以及其后的显示主id性质的许多字段。这些字段中的一些本质上就是“信息元化”的,即,它们不能被进一步分解。举例来说,在姓名列表表格中的“姓”或者“名”不能被进一步分解。而其他字段,举例来说,“兴趣”字段可能包含可分解的单元。举例来说,“我喜欢远足、慢跑、攀岩”包含许多信息元在内。现在每个字段有其自己的累积信息,这取决于涉及的信息元的分布函数。主id字段的分布是均匀的,其给每个信息元以可能的最大信息量,同时,在例如美国的西方国家里名字段相比姓字段而言包含较少的信息。
将信息元数值理论扩展至数据库设置包含了巨大优势。它会允许用户询问不明确的问题或者过度限制一次查询。今天面临的搜索相关数据库的问题是答案要么太长要么太短;并且它们都没有返回任何评级。通过我们的方法,数据库会给出基于与我们所问问题的信息相关性的评级列表作为答案。用户可以选择“强制”特定限制并且不“强制”其他说明。举例来说,如果用户在个人数据库中查询犯罪嫌疑人,他可以具体说明所有他所知道的,选择一些字段来强制,如嫌疑人的性别和种族,并且希望搜索引擎以评级方式返回它能在数据集合中找到的最佳答案。我们称这种类型的搜索为Boolean式信息相关性搜索,或者简单地说成Boolean式搜索,为了说明1)它有与传统Boolean搜索的某些相似之处;2)它是与Boolean不同的方法。这样设计的搜索引擎表现得更像人脑而非机械机器。它评估用户输入的所有信息并且尽最大能力生成最可能答案的列表。
9.2 结构化数据中的信息元
对于数据库中的给定字段,我们可以定义一个分布,正如我们之前所做的那样,除非该内容仅被局限在该字段的内容(在表格中通常被称作列)之内。举例来说,N行的primary_id字段具有一个分布。它有N个信息元,每个primary_id对应一个信息元以及其分布函数F=(1/N,...,1/N)。该分布对给定的N个信息元有最大信息量。对于其他字段,例如,具有10个项目的列表的一列。那么,该10个项目中的每一个是一个不同的信息元,并且分布函数会由行中这些项目的出现来定义。如果一个字段为外关键词,那么该字段的信息元也就是外关键词本身。
一般来说,如果表格中的字段有相对简单的条目,像数字、一个或一些单词条目,那么最自然的选择就是将所有的不同项目作为信息元对待。与该列相关的分布函数就是这些项目的出现频率。
出于说明的目的,假设我们有一期刊摘要的表格。它可能包含以下字段:
primary_id
标题
作者列表
期刊名
发表日期
页码
摘要
这里,primary_id的信息元会是primary_id列表。其分布为F=(1/N,...,1/N),其中N为文章总数。期刊名是另一个字段其中每个不同的条目都是信息元。其分布为F=(n1/N,...,nk/N),其中(n1,...,nk)是表格中期刊i(i=1,...,k)的论文数,k是期刊总数。
页码字段中的信息元是出现的不同页码数字。为了生成一张完整的不同信息元的列表,我们不得不将页码分成单个。举例来说,pp5-9应该被转换为5,6,7,8,9。该字段中所有不同页码数字的组合形成该字段的信息元列表。
对于发表日期,出现在数据库中的所有月、年、日的不同列表就是信息元列表。它们可以被视作组合或者可以被进一步分解成分离字段,即,年、月和日。所以,如果我们有Ny个不同的年,Nm个不同的月以及Nd个不同的日,那么不同信息元的总数为:N=Ny+Nm+Nd。根据我们的理论,如果我们将发表日期分成三个子字段,来自这些字段的累积信息量与将年月日的混合信息放入单个发表日期字段的信息量相比要小。我们可以类似地对待作者名字字段。内容上的尺寸由数据本质和其必须支持的应用指定。
9.2.1 可分解为多个信息元的字段数据
对于更复杂的字段,如文章的标题或者作者列表,信息元的定义可以是不同的。当然,我们仍然可以定义每个条目为不同的信息元,但这并不会有太大帮助。举例来说,如果用户想要通过一个作者的名字或者标题中的关键词来检索文章,而我们的信息元又是不同标题的完整列表和不同作者的列表,那么我们就不能够在信息元层面上解决问题。
取而代之的是,在这里我们考虑把字段中更基本的信息单元定义为信息元。在作者字段的情况中,每个不同的作者,或者每个不同的名或者姓可以是一个信息元。在标题字段中,每个单词或者短语可以是一个信息元。一旦字段被确定为复杂的,我们可以在字段内容上简单地运行信息元识别程序以识别信息元并生成它们的分布函数。
9.2.2 长文本字段的分布函数
摘要字段通常是长文本。它包含类似于非结构化数据情况中的信息。我们可将字段文本转换成巨大的单个平面文件,接着得到该字段的信息元分布函数,就如我们之前对给定的文本文件所做的一样。该信息元可以是单词、短语或者文本中任何其它更长的重复模式。
9.3 单个表格中数据的Boolean式搜索
在Boolean式的信息相关性查询中,我们不寻找每个用户询问的字段的精确匹配除非它被“强制”。取而代之的是,对于每个潜在命中文件,我们对查询的整个命中文件计算累积信息相关性分值。来自具有多个匹配字段的查询的总分值为每个字段中匹配信息元的信息量总和与规模因子的乘积。我们根据该分值对所有命中文件评级并且将评级列表报告给用户。
采用与之前相同的例子,假设用户输入查询:
Primary_id:(空)
Title:DNA microarray data analysis
List of authors:John Doe,Joseph Smith
Journal_name:J.of Computational Genomics
Publication_date:1999
Pages:(空)
Abstract:noise associated with expression data
以上查询的SQL为:
select primary_id,title,list_of_authors,journal_name,publication_date,
page_list,abstract from article_table where
title like‘%DNA microarray data analysis%’
and(author_list like’%John Doe%’)and(author_list like=’%Joseph Smith%’)
and journal_name=’J.of Computational Genomics’
and publication_date like’%1999%’
and abstract like’%noise associated with expression data%’
目前的关键词搜索引擎会尝试精确匹配每个单词/字符串。举例来说,在单词“DNA microarray data analysis”必须全部在文章的标题中出现。每个作者都必须在作者列表里出现。这会使定义查询很难。由于人类记忆的不确定性,输入字段的任何特定信息都可能是错的。用户寻找的是在上述查询的邻域内的内容。如果漏掉了一些项目,只要它不是被“强制”的就没有关系。
图25A。Boolean式搜索的用户接口。用户可以指定每个单个字段的信息。在最右边的列中,用户可以选择是否强制该搜索检索词。一旦检查了“强制”框,满足匹配要求的命中文件会被考虑在最佳列表内;而那些不匹配该字段要求的则会被放入另一个列表,即使它们有比其它字段高的分值。
9.3.1 单个字段的评级和加权
在我们的搜索引擎中,对每个primary_id,我们会计算每个匹配信息元的信息量分值。接着我们概括所有该primary_id的单个字段中的信息量。最终,我们根据累积信息量对所有分值在零以上的那些进行评级。具有更多样的信息的字段中的匹配比信息少的字段更可能对总分值做出更大的贡献。因为我们仅计算正值匹配,一些错误匹配根本不会产生影响。这样,用户被鼓励输入尽可能多的他知道的关于他所询问的主题的信息,而不会因为他提交了额外信息而受到漏掉命中文件的处罚。同时,如果他对特定信息很确定,他可以选择“强制”这些字段。
用户也许会感觉特定字段比其他字段更重要。举例来说,典型地,在“标题”字段中信息元的匹配会比内容字段中相同信息元的匹配更重要。我们通过在该字段的信息数值计算之外,对每个单个字段加权来处理这种区别。每个单个字段的权数可以基于共同共识来预设。同时,用户可以在运行时调节这些参数。
我们将该命中文件列表分成两个子集合:一个是满足“强制”字段的,以及那些至少漏掉一个“强制”字段的。我们采用与计算那些没有违例的命中文件分值一样的方式计算有违例的命中文件分值。
9.3.2 结果传送:两张分离的列表
我们可以传送两张分离的评级列表,一个是针对那些满足了“强制”字段的;另一个是至少违背了一个“强制”字段的。第二张列表可以在返回页面的一个分离的位置处被传送,并且被特别强调(如“调暗”整张列表,并且采用“红”色在单个链接页面上标记被违背的字段)。
9.3.3 关于实施
当然,这是一个CPU扩展操作,因为我们不得不进行每个条目(每个不同的primary_id)的计算。在执行中,我们并不一定需要这么做。随着信息元被索引(反转索引文件),举例来说,我们可以生成一张包含至少一个信息元或者至少两个信息元的备选primary_id列表。另一种近似的方法是对特定的重要字段(有巨大信息量的字段,举例来说,标题字段、摘要字段或者作者字段)定义筛选阈值。仅有在选择字段中有至少一个分值在筛选阈值之上的备选会被进一步计算真实分值。因为多数用户仅关注最佳命中文件,我们不必对那些低分值的命中文件(多数为很长的列表)做扩展性排序/评级。
在一个典型的相关数据库中,多数列均与加速该列中数据搜索的索引相联合。在我们的搜索中,我们会做类似的事。对每列X(或者至少是重要的列),我们会有两张联合表格,一张叫做X.dist,另一张为X.rev。在X.dist表格中,它列出该字段的信息元分布。X.rev是信息元的逆索引。这两张表格的结构在基于信息元分布表格和逆索引表格的平面文件的情况中是本质相同的。
在另一个选择中,我们可以针对多个字段只有单个X.rev文件。我们不得不插入更多具体说明至X.rev条目的内容中,即字段信息。信息元的字段信息可以由单个ASCII字母具体说明。是否对每个字段生成单个反转索引文件或者是否组合不同字段以形成单个反转索引是取决于实施者的,也取决于数据的性质。一个目标是减少总索引文件的大小。举例来说,对于内容丰富的字段,我们可以采用单个索引文件;对于那些有限制内容的字段;我们可以将其组合在一起以生成单个索引文件。
9.4 搜索涉及多张表格的结构化数据
在多数场合中,数据库包含许多张表格。用户的查询可能涉及来自许多表格的信息。举例来说,在以上关于期刊论文的例子中,我们可能会有以下表格:
Article_Table    Journal_Table    Author_Table     Article_author
--------------   -------------    -------------    ----------------
Articale_id(primary)Journal_id(primary)Author_id(primary)Article_id Author_id
Journal_id(foreign)Joural_name      First_name
Publication_date   Journal address  Last_name
Title
Page_list
Abstract
当对该数据库提交相同查询,它会形成复杂查询,其中涉及多张表格。
在本例中,SQL语言为:
select ar.primary_id,ar.title,au.first_name,au.last_name,j.name,
ar.publication_date,
ar.page_list,ar.abstract from article_table as ar,journal_table as j,author_table as
au,
article_author as aa
where ar.article_id=aa.article_id and ar.journal_id=j.jouranl_id and
au.author_id=aa.author_id
and ar.title like’%DNA microarray data analysis%’
and(au.first_name=’John and
au.last_name=’Doe’)and(au.first_name=’Joseph’and au.last_name=’Smith’)
and j.name=’J.of Computational Genomics’
and ar.publication_date like‘%1999%’
and ar.abstract like‘%noise associated with expression data%’
当然,这是一个非常限定的查询,并且可能会产生零返回或者很少的返回。在我们的方法中,我们会产生一个备选群,在信息相关性基础上对该备选群评级,而该信息相关性是通过重叠信息元的累积信息量定义的。
一种对多张表格实现搜索算法的方法是通过利用与用户接口直接联系的查询生成一单一虚拟表格来实现的。我们首先联合所有涉及的表格以形成一张虚拟表格,该虚拟表格具有在最终报告(输出)中需要的所有字段。接着我们在每个字段上(信息元分布表格和逆索引表格)运行我们的索引方案。有了信息元分布表格和逆索引,这里定义的复杂查询问题就简化成我们在单一表格情况中解决的相同问题了。当然这样做的代价是很高的:对每个复杂查询,我们不得不形成该虚拟表格并在单个列上执行索引步骤。
进行复杂查询的信息相关性搜索还有其它方法。一种是对数据库中的每个重要表格字段形成分布函数和逆索引。当查询被提交,则根据这些重要字段上的一些最小阈值要求生成备选群。接着对备选的精确分值计算便可以利用与每个字段相关联的分布表格来计算了。
9.5 对自由文本字段的Boolean式搜索
也有在自由文本字段上进行Boolean式搜索的需要。这种搜索的要求是用户可以指定自由文本查询,并且同时可以应用Boolean逻辑至字段。因为我们的默认操作逻辑是对所有的查询检索词做“或”操作,因此就没有必要再实施它了。(事实上,我们实行的“或”操作不是严格的Boolean“或”操作。而是我们筛选出许多低命中文件,并且仅为“或”操作保留一高分值命中文件的短列表)。在Boolean式搜索中,我们仅需要支持“和”和“否”(“和否”)操作。这些操作可以在非结构化文本字段中进行,或者在每个相关数据字段上进行。
图25B显示了在非结构化数据文集中实行Boolean式搜索的接口设计。用户可以在其查询中绝对地应用如“和”以及“否”的Boolean操作。这里,可以在“强制包含的关键词”字段中输入多个关键词。所有这些关键词必须出现在命中文件中。可以在“强制排除的关键词”字段中输入多个关键词。所有这些关键词必须不出现在命中文件中。
在实行这些搜索时,我们首先产生基于自由文本查询的命中文件列表,并且计算所有这些命中文件的信息相关性分值。接着我们采用强制包含和强制排除的关键词筛选这些命中文件。因为,强制检索词可以排除许多命中文件,我们需要针对这种搜索类型生成自由文本查询步骤中的备选命中文件的长列表。
图25B为针对非结构化数据的Boolean式查询接口。用户可以指定自由文本(上部较大的框)。他也可以指定被包含的或者被排除的关键词。被包含的关键词(用“,”分开)被Boolean“和”操作支持。被排除的关键词被Boolean“否”(例如“和否”)操作支持。一个合格的命中文件必须包含所有强制包含的关键词并且没有强制排除的关键词。
Boolean式搜索也可以扩展至半结构化数据库或者结构化数据库搜索中文本字段。举例来说,图25C给出用以搜索半结构化数据库的搜索接口,其中有多个相关数据字段如标题和文本类型内容的作者。“摘要”字段是另一个文本类型字段,其可以从“自由文本”类型的查询中受益。用户可以指定每个字段的自由文本查询,并且可以同时指定强制包含和强制排除的关键词。
图25C为针对具有文本字段的结构化数据的Boolean式查询接口。用户可以指定每个文本字段的查询文本(上部较大的框)。他也可以指定每个这些字段的被包含或者被排除的关键词。被包含的关键词(用“,”分开)被Boolean“和”操作支持。被排除的关键词被Boolean“否”(例如“和否”)操作支持。一个合格的命中文件必须在每个文本字段中包含所有强制包含的关键词并且没有强制排除的关键词。
有两种进行以上搜索的不同方式,即:1)首先产生评级列表,并且接着去除不想要的条目;或者2)首先去除不想要的条目,并且接着产生评级列表。这里我们会给出每个方法的实施概要。
9.5.1 首先评级的算法
在搜索中,所有的自由文本查询信息会被用于生成备选命中文件。利用所有这些查询文本信息元和基于每个文本字段内以及不同文本字段间的信息相关性数值,生成命中文件备选列表。该搜索的实施与章节9.3中具体说明的一样,不同的是我们或许想要产生一张更长的列表,因为许多高分值命中文件会违背由每个文本字段的包含关键词和排除关键词指定的额外限制。有了手头的备选列表,我们会采用所有的强制字段筛选它们(通过“和”和“和否”操作)。所有利用自由文本查询生成的备选会根据这些“和”字段被筛选。仅那些留下的会被报告给用户,并且用章节9.3中具体说明的相同方法对其进行信息相关性数值的评级。
从计算的角度来看,该方法的成本有一点高。它必须计算许多备选的信息相关性值并且在最终阶段去除它们。但是,它也有很好的方面:如果用户有兴趣查看一些违背了强制限制的高分值命中文件,则这些命中文件已经在那里了。举例来说,在结果页面,一些违背了强制限制的高分值命中文件可以同时被显示,并且有一个指示器说明该命中文件包含违例。
9.5.2 首先去除的算法
在该方法中,我们首先去除所有违背任何强制标准的备选,并且仅计算那些满足了所有强制的命中文件的相关性分值。该备选列表较短,因此该方法的计算较为简洁,成本较低。该方法的唯一短处就是,对于有违例的命中文件,无论它们多好都不会在结果集合中可见。
9.6 有信息元和自由文本字段的数据查询接口
在实际应用中,数据性质可以是很复杂的。举例来说,数据集合本质上可以包含多个文本字段及特定类型的数据,如日期、名、姓等等。我们将数据字段分成两类:信息元字段和非信息元字段或者自由文本字段(或者缩写为文本字段)。在信息元字段中,数据不可以被进一步分解;每个条目就是一个信息元。在自由文本字段中,每个条目可以被进一步分解成其分量信息元。信息元字段和文本字段都可以在相关数据库或者表格格式文件中被存储。
对于查询中的信息元字段,我们可以强制或者不强制一信息元。这类查询在章节9.3中及图25A中显示。对于文本字段,我们可以用自由查询文本指定查询,并且应用两种额外限制:强制包含和强制排除的关键词列表。这类查询在章节9.5及图25B、25C中被覆盖。这里,我们会给出更一般的搜索。我们考虑字段数据可分成两类的情况:那些本质上的信息元和那些本质上的文本。对于信息元字段,用户可以输入查询信息元并且指定是否要在查询中强制它。对于文本字段,用户可以输入自由文本查询并且指定强制包含或者排除的信息元。该搜索结果集合会根据满足了所有强制字段的所有查询信息的信息相关性进行评级。
图25D给出了这种查询接口的一个例子,并采用US PTO数据内容作为例子。在本例中,专利号字段、授权日期字段以及申请、发明人、代理人和分类的信息字段本质上都是信息元。我们提供信息元条目的查询框和“强制”或者“不强制”搜索的检查框,“不强制”作为默认。从另一方面说,“标题”、“摘要”、“权利要求”和“说明书”字段本质上是文本。这里我们提供“自由文本”查询框,其中用户可以提供尽可能多的信息。他也可以指定一些关键词用以“强制包含”或者“强制排除”。搜索结果会是一张所有命中文件的列表,其中该命中文件满足了所有的强制字段,并基于信息相关性被评级。
该搜索的实施与我们以前给出的概要很类似。即,有两种方法:要么1)首先生成评级列表接着去除不想要的条目;或者2)首先去除不想要的条目接着生成评级列表。这些搜索方法与以前具体说明的方法没有根本的不同。这里将它们省略了。
图25D。对US PTO的高级查询接口。专利的内容数据可以被分成2类:信息元字段和文本字段。对于信息元字段,用户可以输入查询信息元并且指定是否要在查询中强制它。对于文本字段,用户可以输入自由文本查询并且指定强制包含或者排除的信息元。该搜索结果集合将满足所有的强制字段,并基于所有查询信息的信息相关性被评级。
III.非结构化数据的聚类
10.1 聚类搜索结果
对于现今的复杂搜索需求,仅提供搜索容量是不够的。如果用户选择仅采用一些关键词来查询的话这点尤其正确。在这种情况下,结果集合可能是很巨大的(很容易就大于100个条目),其命中文件都有相似的相关性分值。通常用户关注的文件被散布在该集合之内。通过一条一条地浏览来寻找个别好的命中文件是很耗费时间的。如果我们可以指出命中文件是如何彼此相关的就好了。这就把我们引向了聚类方法,其中搜索引擎会为你组织搜索结果。
通过将搜索结果聚类成组,其中每个组都围绕一个特定主题,它真的给了你一个该数据集合如何分布的全局视图,并且它很可能将指向你的精确信息需求的方向。我们提供一特别的聚类接口,其中采用与传统方法不同的高级聚类算法将搜索区段聚类。我们在许多方面是特别的:
1)对于简单查询或者格式良好的半结构化数据,我们可以将文件的整个结果集合聚类。对聚类方法没有具体限制,因为多数聚类算法都容易实行,举例来说,K-mean,或者分层方法。对距离衡量,我们采用我们的信息元数值。聚类算法的输入是信息元和它们的信息数值。输出是典型的聚类或者文件层次。我们提供复杂函数,用于基于聚类或者分支的重要信息元对单个聚类或者分支加标签。
2)对于复杂查询或者非结构化的数据集合,我们可以在命中文件的返回中将区段聚类,而不是文件。区段通常在内容上更小,并且它们均与用户提供的查询主题高度相关。因此,我们在非结构化数据集合上聚类你的搜索结果。用户不必担心数据集合的同质性。用户可以只得到他感兴趣的数据集合的区段聚类。
3)在概念空间中衡量距离。聚类的关键在于如何在信息空间中衡量距离。多数针对文本数据的传统聚类算法基于共有单词生成聚类,导致这些聚类的质量成为问题。我们通过概念距离的衡量进行聚类,其中单个单词匹配的重要性降低了很多,而复杂信息元则被很高地加权。
4)为该集合的主题的每个聚类分配特别的名称。聚类的命名是一个棘手的问题。因为我们围绕概念聚类而非单词,我们可以生成有意义的并且可以很好地代表该聚类的主题的名称。我们给每个聚类的名称标签通常是简要的并且是直指重点的。
图26。搜索结果的聚类视图。来自搜索的区段将通过我们的聚类算法。围绕特定主题生成可管理的聚类。为每个聚类分配与该聚类主题紧密相关的名称。
10.2 独立聚类
我们这里开发的针对信息元的信息数值理论也可以用于聚类文件,无论该文件集合是半结构化的还是完全非结构化的。该聚类可能是独立的,意味着它并不一定必须与搜索算法相关联。在独立版本中,输入仅是文件集合。
我们可以生成文集集合的信息元分布表格,与我们在搜索问题中所做的相同。接着,每个信息元与一信息数值(一个非负量)相关联,正如我们之前讨论的。该信息数值可以进一步扩展至距离数值(必须满足三角不等式)。我们称该距离数值为信息元数值。在最简单的场合中,两文件(A,B)之间的信息元距离即为两文件中不共有的信息元(例如,在A中但不在B中的信息元和在B中但不在A中的信息元)的累积信息数值。
我们也可以定义两个文件的相似性数值,即共有信息元的累积信息数值除以A中或者B中信息元的累积信息数值。
有了距离和相似性的定义,便可以应用经典聚类算法了。图29显示了来自这样一个聚类方法(K-mean聚类)的一个简单实施的样本输出。在图30中,我们也给出了多个被识别聚类的内部相关性图表。这是通过修正的K-mean算法实现的,其中一个单个文件被分类至多个聚类中,如果在该文件和那个特定聚类的文件之间有本质上的信息重叠的话。对每个聚类加标签是通过对该聚类中具有最累积的信息数值的信息元的识别实现的。
图29。基于信息元距离的独立聚类的输出。左面板显示的是有标签信息元的单个聚类。用蓝色标示一个聚类。中间的是该被标示的聚类的更详细的内容。最右边的是该聚类算法的可调节参数。
图30。聚类和它们的关系的图形显示。通过点击图29中的浏览聚类映射按钮,会弹出该窗口以显示多个聚类之间的关系。不同的聚类被联合在一起,并通过有颜色的线条指明在那些聚类中有共有文件。该共有文件的中间有一个点,在该点处两条有颜色的线条相连。
聚类算法可以被扩展以处理完全非结构化的数据内容。在这种场合中,我们不想在文件层面聚类,因为文件的长度可能很大。但是,我们想要用聚类算法自动识别区段的边界,并且将多个被识别的区段分配至不同聚类。
我们通过引入编页和空隙处罚的概念实现该目标。一个页面,仅是具有被提供的固定长度的一个文件碎片。开始,将长文件分成多个页面,且相邻页面之间具有重叠区段(大约10%)。接着通过迭代方案我们识别区段的聚类。在第一次迭代中,输入会是简单的短文件(其大小比页面大小小或者与页面大小相等),加上来自大文件的所有页面。该集合上的典型聚类算法就完成了。现在,我们会有不同的短文件聚类,加上来自长文件的不同页面。
然后我们进行页面合并步骤。在该步骤中,页面可以被合并。如果一个聚类包含多个来自相同文件的相邻页面,页面被与移除的冗余重叠区段合并。
第三步是边界调节步骤。这里对那些所有对聚类没有贡献的信息元应用处罚。对聚类有贡献的信息元意味着它们被多个文件共有,并且对于将聚类保持在一起是必要的。在确定信息元是否有贡献时,根据其在该聚类中文件/页面内的出现计数以及它本身的信息数值识别一阈值。这样,我们向内调节了区段边界。所有被认为不在聚类中的区段被作为单个文件碎片返回至群中。如果有来自相同文件的互相邻近的碎片,那么文件碎片可以被合并。
现在,我们进行聚类的下一步迭代。输入是所有的聚类文件碎片,以及所有不属于任何聚类的文件碎片。我们再运行一次以上过程,聚类和每个文件碎片的边界会调节。
我们继续我们的迭代直到1)算法汇聚,其意味着我们有了一个聚类的集合,该集合中的聚类或者聚类的文件碎片的边界均不会改变,2)或者在预设阈值或者预设迭代次数之后停止。无论在什么情景中,我们的输出是文件碎片的聚类。
                       * * * * *
图27说明了数据库索引“系统”2700、搜索“系统”2710和用户“系统”2720,它们都可通过网络2750连接在一起。
该网络可以包括局域网或者广域网如因特网。在一个实施例中,所有三个系统彼此不同,而在另一个实施例中,两个或者所有三个系统的所述功能在单个计算机上一起执行。此外,每个“系统”可以包含多个单个系统,例如所述功能的分布式计算执行系统,并且该多个单个系统的位置不需要在物理上彼此相邻。
“系统”中的每台计算机典型地包含一处理器子系统,该处理器子系统与一存储器子系统和包含一文件存储子系统的外围设备通信。该处理器子系统通过一网络接口子系统和外部网络通信。存储子系统储存提供本发明中特定实施例的功能的基本设计和数据结构。举例来说,实现本发明中特定实施例功能的不同模块可以存储在存储子系统中。一般由处理器子系统执行这些软件模块。这里采用的“存储子系统”被设计为包含其他任何当地或者远程的指令和数据的存储。存储器子系统典型地包含大量包括一主随机存取存储器(RAM)在内的用于在程序执行中存储指令和数据的存储器。文件存储子系统提供程序和数据文件的持久存储,可以包含一硬盘驱动、一具有相应的可移除媒体的软盘驱动、—CD ROM驱动、一光学驱动或者可移除媒体的编码磁带。除了别的以外,结合了存储子系统的存储器子系统典型地包括,计算机指令,当该指令被处理器子系统执行时,会使得计算机系统操作或者执行这里所述的功能。如这里所用的,运行在一计算机或一系统上的所述程序和软件,响应于结合了存储子系统的存储器子系统内的这些计算机指令和数据,在处理器子系统上执行。
每个计算机系统本身可以为包含个人计算机、手提计算机、工作站、计算机终端、网络计算机、电视、主机或者其他任何数据处理系统或者用户设备的不同类型。由于计算机和网络的永远变化的性质,这里描述的计算机系统仅作为对本发明的较佳实施例的说明的特定示例。比这里描述的计算机系统具有更多或者更少的部件的计算机系统的许多其他结构也是可行的。
在关于功能完整的数据处理系统的上下文中描述了本发明,本领域技术人员应该理解这里描述的程序可以指令和数据的计算机可读媒体的形式被存储和分布,并且本发明可以独立于实际被用来执行分布的信号承载媒体的特定类型而被普遍应用。计算机可读媒体的例子包含可读类型媒体,如软盘、硬盘驱动、RAM、CD-ROM、DVD-ROM,以及传输类媒体,如数字和模拟通信链接、采用传输形式的有线或无线通信链接,例如无线电频率和光波传输。计算机可读媒体可采取编码格式,该编码格式在特定数据处理系统中实际使用时被解码。一个单个的计算机可读媒体,如这里采用的术语,也可包含多于一个的物理组件,如多个CD-ROM或者多个RAM区段或者许多不同类型媒体的组合。
正如这里采用的,如果前驱信号、事件或者值影响了给定的信号、事件或者值,则给定的信号、事件或者值对前驱信号、事件或者值是“响应的”。如果存在一个中间处理元素、步骤或者时间段,给定的信号、事件或者值对前驱信号、事件或者值仍然是“响应的”。如果中间处理元素或步骤结合了多于一个的信号、事件或者值,该处理元素或步骤的信号输出对每一个信号、事件或者值的输入仍然是“响应的”。如果给定的信号、事件或者值与前驱信号、事件或者值相同,这是一种退化情况,其中给定的信号、事件或者值对前驱信号、事件或者值仍然被认为是“响应的”。给定的信号、事件或者值对另一信号、事件或者值的“依赖”被定义为相似性。
正如这里所用的,信息项目的“识别”并不一定要求对该信息项目的直接具体说明。可以简单地通过一层或多层对实际信息的参考来在一个字段中“识别”信息,或者通过识别一个或多个足以一起确定信息的实际项目的不同信息项目来在一个字段中“识别”信息。此外,这里所用的术语“指明”意思与“识别”相同。
先前对本发明的较佳实施例的描述是以说明和描述为目的的。它并非用于穷举,或是将本发明限制在公开的精确形式中。显而易见地,对本领域技术人员而言许多修改和变化是显而易见的。特别地,非限制地,任何和所有在本专利申请的背景部分被作为引用的被描述的、被建议的或者被包含的变化,均通过这里的本发明实施例的说明书中的引用被特别地包含进来。对这里描述的实施例的选择和描述是为了对本发明的原理和其实际应用做最好的说明,由此使得其他本领域技术人员能够理解本发明的适合于特定的预期使用的多种实施例及多种修改。本发明的范围由权利要求和其等价物定义。

Claims (129)

1、一种搜索一数据库的方法,包含如下步骤:响应于一第一查询,在数据库上开始一第一搜索,该第一搜索生成多个命中文件;
基于该命中文件和该第一查询的共有信息元的信息数值对命中文件评级;并且,
向用户识别出至少一个根据该评级选择的该命中文件。
2、根据权利要求1所述的方法,其中该信息数值包含该命中文件和第一查询的共有信息元的一累积Shannon信息分值。
3、根据权利要求1所述的方法,进一步包含分别计算该查询和每个该命中文件的共有信息元的累积信息分值的步骤,
其中该评级的步骤包含根据每个该命中文件的累积信息分值对该命中文件评级的步骤,
其中每个该给定的命中文件的累积信息分值是该查询与给定的命中文件的每个特定共有信息元的信息分值的累积,
并且,其中每个特定共有信息元的信息分值是数据库中该特定共有信息元的至少一个近似相对频率的单调非增函数。
4、根据权利要求3所述的方法,其中该特定共有信息元的信息分值进一步是完全包含在该特定共有信息元中的所有信息元的信息分值的函数。
5、根据权利要求3所述的方法,其中每个该特定共有信息元的信息分值由-log2(f/Tw)给出,其中f是数据库中该特定信息元出现的近似数,Tw是数据库中信息元的近似总数。
6、根据权利要求3所述的方法,其中每个该特定共有信息元的信息分值由-log2(fi/Tw)的累积给出,所有的第i个信息元,包括该特定信息元本身,均被完全包含在该特定信息元内,其中fi是第i个信息元在数据库中出现的近似数,Tw是数据库中信息元的近似总数。
7、根据权利要求3所述的方法,其中该给定的命中文件的累积信息分值只对该查询和给定的命中文件的特定共有信息元计数min(n,k)次,其中n是该查询中该特定信息元出现的次数,k是该给定的命中文件中该特定信息元出现的次数。
8、根据权利要求3所述的方法,其中该给定的命中文件的累积信息分值将该特定信息元在该查询中的n次出现和该特定信息元在该给定的命中文件中的k次出现,至少在k>n时,计算为该特定信息元的信息分值乘以n加上k的一单调递增函数,其中k的该单调递增函数在k趋于无穷时收敛于一上限。
9、根据权利要求8所述的方法,其中k的该单调递增函数是αi+1对于i=1,...,(k-n)的总和,其中α是一预先设定的阻尼因子,0<=α<1。
10、根据权利要求8所述的方法,其中
对于k>n且k%n=0,k的该单调递增函数是αi对于i=1,...,[(k-n)/n]的总和,
并且,其中对于k>n且k%n!=0,k的该单调递增函数是((k-n)%n)/n*α[(k-n)/n]+1加上αi对于i=1,...,[(k-n)/n]的总和,
其中α是一预先设定的阻尼因子,0<=α<1,
其中%是模算符,
并且其中[(k-n)/n]指的是(k-n)/n的整数部分。
11、根据权利要求8所述的方法,其中该给定的命中文件的累积信息分值将该特定信息元在该查询中的n次出现和该特定信息元在该给定的命中文件中的k次出现,在k<=n时,计算为k乘以该特定信息元的信息分值。
12、根据权利要求1所述的方法,其中该信息数值包含该共有信息元的一信息数值与下述集合之一之间的一个百分比本身,该集合包含:(1)该查询的一信息数值,(2)该命中文件的一信息数值,(3)该查询的一信息数值和该命中文件的一信息数值中的较小者,和(4)该查询的一信息数值和该命中文件的信息数值中的较大者。
13、根据权利要求1所述的方法,其中该信息数值与下述至少近似的概率逆相关,该概率为该信息元纯粹由于随机而被该命中文件和该第一查询共有的概率。
14、根据权利要求1所述的方法,其中该信息数值与该命中文件和第一查询的共有信息元的信息数值的至少近似的预期值逆相关。
15、根据权利要求1所述的方法,其中该评级步骤包含在由每个该命中文件与查询构成的信息数值加权的矢量空间里比较一角度的预设函数的步骤。
16、根据权利要求15所述的方法,其中该预设函数是余弦函数。
17、根据权利要求1所述的方法,其中该评级步骤进一步与该命中文件中的信息元的一信息数值逆相关,其中该信息元为该命中文件与第一查询的共有信息元,且该信息元不在该第一查询中。
18、根据权利要求1所述的方法,其中该开始第一搜索的步骤包含以下步骤:
生成该第一查询中的第一信息元的一相关信息元列表,该相关信息元列表上的每个信息元都有相对于该第一信息元的一关联相似性分值;并且
响应于该第一查询,在数据库内开始一搜索,允许将该第一查询中的第一信息元由该相关信息元列表上的信息元代替,
并且其中对该命中文件的评级步骤进一步根据代替了开始搜索步骤中的第一信息元的任何信息元的相似性分值进行。
19、根据权利要求18所述的方法,其中该相关信息元列表包含该第一信息元的同义词。
20、根据权利要求18所述的方法,其中该相关信息元列表包含在数据库中找到的频繁地在该第一信息元的邻近出现的非同义词。
21、根据权利要求18所述的方法,进一步包含提供一信息元及其同义词的相似性矩阵的步骤,一特定信息元的每个同义词都具有与该特定信息元相关的一关联相似性分值,
并且其中为该第一查询中的多个信息元中的每一个生成一同义词列表的步骤包含从该相似性矩阵中提取该相似性列表的步骤。
22、根据权利要求1所述的方法,其中至少该命中文件与第一查询的一第一共有信息元包含一个以上的符号。
23、根据权利要求22所述的方法,其中该命中文件与第一查询的一第二共有信息元与该第一信息元重叠,该重叠位于该命中文件中或者该第一查询中或者两者中。
24、根据权利要求22所述的方法,其中该命中文件与第一查询的一第二共有信息元被完全包含在该第一信息元中,该包含位于该命中文件中或者该第一查询中或者两者中。
25、根据权利要求1所述的方法,其中该开始第一搜索的步骤包含在数据库中对该第一查询的多个查询信息元中的每一个进行搜索的步骤,至少其中一个该查询信息元包含一个以上的符号。
26、根据权利要求1所述的方法,其中该开始第一搜索的步骤包含针对至少一个出现在该第一查询中的关键词对数据库开始一初步Boolean搜索的步骤。
27、根据权利要求26所述的方法,其中对该命中文件的评级步骤包含以下步骤:
识别一个包括该第一查询中至少一个查询信息元的集合,该集合中包含一个以上符号的至少一个元素;
针对在第一搜索中生成的每个给定的命中文件,确定那个查询信息元是该第一查询和给定的命中文件所共有的;并且
根据在确定步骤中所确定的该共有信息元的信息数值对该命中文件评级。
28、根据权利要求27所述的方法,其中该开始一第一搜索的步骤包含以下步骤:
针对在该第一查询中出现的关键词的各自不同的子集,对数据库开始多个初步搜索,对每个该初步搜索生成一相应的初步命中文件的集合,其中一个初步搜索为初步Boolean搜索;并且
根据该初步命中文件集合中的命中文件的组合生成多个命中文件。
29、根据权利要求27所述的方法,其中该开始一第一搜索的步骤包含以下步骤:
响应于该第一查询,通过多个不同的搜索引擎开始多个初步搜索,对每个该初步搜索生成一相应的初步命中文件的集合,其中一个初步搜索为初步Boolean搜索;并且
根据该初步命中文件集合中的命中文件的组合生成多个命中文件。
30、根据权利要求1所述的方法,其中该开始一第一搜索的步骤包含以下步骤:
将根据该第一查询形成的初步搜索查询送至一个包括至少一个外部搜索引擎的集合,一初步搜索查询和一外部搜索引擎的每个组合生成一相应的初步命中文件的集合;并且
根据该初步命中文件集合中的命中文件的组合生成多个命中文件。
31、根据权利要求30所述的方法,其中至少两个该初步搜索查询彼此不同。
32、根据权利要求30所述的方法,其中至少两个该外部搜索引擎彼此不同。
33、根据权利要求32所述的方法,其中至少两个该初步搜索查询彼此不同。
34、根据权利要求1所述的方法,进一步包含响应于一前驱查询对数据库开始一初步查询的步骤,该初步查询生成多个初步命中文件,该第一查询至少为用户选择的一初步命中文件的内容的一个子集。
35、根据权利要求34所述的方法,其中该开始一初步搜索的步骤包含针对在该初步查询中出现的至少一个关键词对数据库开始一Boolean搜索的步骤。
36、根据权利要求34所述的方法,其中该开始一初步搜索的步骤包含以下步骤:
识别一个包括该初步查询中的至少一个初步信息元的初步集合,该初步集合中包含一个以上符号的至少一个元素;并且
将数据库中共有至少一个初步信息元的条目识别为多个初步命中文件。
37、根据权利要求36所述的方法,进一步包含以下步骤:
针对在该初步搜索中生成的每个特定命中文件,检测哪个初步信息元是该初步查询和特定命中文件共有的;并且
根据在检测步骤中确定的共有信息元的信息数值,对该初步搜索中生成的命中文件进行评级。
38、根据权利要求1所述的方法,其中该开始一第一搜索的步骤包含以下步骤:
根据所述第一查询中的信息元的一相对信息数值,在所述第一查询的信息元中选择一合适子集;并且
以这样的方式开始该第一搜索:将该子集中的信息元考虑在内并忽略不在该子集内的信息元。
39、根据权利要求38所述的方法,其中将该子集中的信息元考虑在内并忽略不在该子集内的信息元的该开始第一搜索的步骤,包含将该子集内的信息元运送至一外部搜索引擎、不将不在该子集内的信息元运送至该外部搜索引擎的步骤。
40、根据权利要求1所述的方法,其中该数据库包含一个包括至少一张表格的集合,每张该表格具有多行多列,
其中该第一查询识别多个要查询的信息元,以及一用于在其中搜索每个该被识别的信息元的列。
41、根据权利要求40所述的方法,其中该命中文件和第一查询的每个给定的共有信息元的信息数值,与该列中的给定信息元的出现的一相对频率逆相关,根据该第一查询,该给定的信息元将在该列中被搜索。
42、根据权利要求40所述的方法,其中该给定的信息元的出现的相对频率将在一单一表格单元中的多次出现计为一次。
43、根据权利要求40所述的方法,其中该给定的信息元的出现的相对频率将在一单一表格单元中的每次出现分别计数。
44、根据权利要求40所述的方法,其中该表格集合包含多张表格,其中被该第一查询识别的两列位于不同的表格中,而且其中如果该第一查询涉及的所有表格均将通过左外连接被结合,该命中文件和第一查询的每个给定的共有信息元的信息数值,与该列中的给定信息元的出现的一相对频率与该给定的信息元将在该列中被重复的次数的乘积逆相关,根据该第一查询,该给定的信息元将在该列中被搜索。
45、根据权利要求40所述的方法,其中该第一查询将特定内容识别为被该列中的一个特定列所需,
并且其中该多个命文件排除任何其中的该特定列不包含该特定内容的条目。
46、根据权利要求40所述的方法,其中该第一查询将特定内容识别为被该列中的一个特定列所需,
并且其中该评级步骤包含将所有其中的该特定列包含该特定内容的命中文件评级在所有其中的该特定列不包含该特定内容的命中文件之上的步骤。
47、根据权利要求40所述的方法,进一步包含为该第一查询中每个被识别的列分配一加权因子的步骤,
并且其中对该命中文件的评级步骤进一步根据该加权因子进行。
48、根据权利要求40所述的方法,其中该第一查询将特定内容识别为被该列中的一个特定列所排除,
并且其中该多个命文件排除任何其中的该特定列共有该特定内容的条目。
49、根据权利要求40所述的方法,其中该第一查询将特定内容识别为被该列中的一个特定列所排除,
并且其中该评级步骤包含对每个其中的该特定列共有该特定内容的条目的评级进行处罚的步骤。
50、根据权利要求1所述的方法,其中该数据库包含非结构化文本。
51、根据权利要求1所述的方法,其中该数据库包含多个子数据库,
其中每个该子数据库与各个信息元分布数据相关,
并且其中对命中文件的评级步骤包含以下步骤:对于任何该命中文件和第一查询的每个给定的共有信息元,根据与所有该子数据库相关的信息元分布数据确定该给定的信息元的总相对频率,该给定的信息元的信息数值与该给定的信息元的总相对频率逆相关。
52、根据权利要求50所述的方法,其中至少两个该子数据库通过网络上不同的节点被查询。
53、根据权利要求50所述的方法,其中至少两个该子数据库具有不同的数据库方案。
54、根据权利要求50所述的方法,其中对于每个该给定的信息元,确定一总相对频率的步骤包含以下步骤:
将与所有该子数据库相关的信息元分布数据合并为一总的信息元分布数据集合;并且
从该总的信息元分布数据集合中检索该给定信息元的总相对频率。
55、根据权利要求50所述的方法,其中该开始第一搜索的步骤包含分别在每个该子数据库上开始该第一搜索、每个该子数据库生成一包括零个或者更多个命中文件的相应列表的步骤,
并且其中对于每个该给定的信息元,确定一总相对频率的步骤包含以下步骤:
从与每个该子数据库相关的信息元分布数据中对该给定的信息元的相应的个别频率进行检索;
检索与每个该子数据库相关的相应的个别的总信息数字;
根据该个别频率和个别的总信息数字确定该给定的信息元的总相对频率。
56、根据权利要求1所述的方法,其中该开始第一搜索的步骤包含开始一第一搜索的步骤,其中共有信息元在该命中文件中出现的顺序被要求与共有信息元在该第一查询中出现的顺序相匹配。
57、根据权利要求1所述的方法,其中该开始第一搜索的步骤包含开始一第一搜索的步骤,其中共有信息元在该命中文件中出现的顺序被要求与共有信息元在该第一查询中出现的顺序相匹配,从包含插入、删除、代替和重新排序的集合中选择的一种形式的变化被允许作为例外,
并且其中对该命中文件的评级步骤根据该命中文件中顺序的变化针对每个命中文件的评级施加一处罚。
58、根据权利要求1所述的方法,其中该数据库包含多个被预先划界的条目,
并且其中每个该命中文件包含一个该相应的条目。
59、根据权利要求1所述的方法,其中一第一命中文件在数据库中具有一起始位置和一结束位置,该起始位置和结束位置中的至少一个根据该第一命中文件和第一查询的共有信息元在数据库中的空隙的长度被动态确定。
60、根据权利要求59所述的方法,其中向用户识别至少一个命中文件的步骤包含以并列的显示方式向用户显示该第一查询和第一命中文件的步骤。
61、根据权利要求59所述的方法,其中向用户识别至少一个命中文件的步骤包含向用户显示该第一查询和第一命中文件、且两者中的共有信息元被标示的步骤。
62、根据权利要求1所述的方法,其中一第一命中文件在数据库中具有起始位置和结束位置,并且其中该开始一第一搜索的步骤包含以下步骤:
在数据库中定位该第一查询的信息元;
定位一第一空隙,在其中该数据库不包含来自该第一查询的信息元,该第一空隙在数据库中具有一起始位置和结束位置;并且
建立下述集合中的一个元素,该集合包含:
依赖于该第一空隙的起始位置的该第一命中文件的结束位置,和
依赖于该第一空隙的结束位置的该第一命中文件的起始位置。
63、根据权利要求62所述的方法,其中一第二命中文件具有一起始位置,
其中建立步骤包含建立依赖于该第一空隙的起始位置的该第一命中文件的结束位置的步骤,
并且其中该开始第一搜索的步骤进一步包含建立依赖于该第一空隙的结束位置的该第二命中文件的起始位置的步骤。
64、根据权利要求62所述的方法,其中定位一第一空隙的步骤包含定位一至少具有一预设长度的空隙的步骤。
65、根据权利要求62所述的方法,其中定位一第一空隙的步骤包含定位一具有一最小长度的空隙的步骤,该最小长度与该空隙中信息元的一信息数值逆相关。
66、根据权利要求1所述的方法,进一步包含根据距离将该命中文件的至少一个子集聚类的步骤,该距离位于该子集的每个命中文件的信息元的一基于信息数值加权的距离空间中,
其中识别该命中文件的步骤包含根据在聚类步骤中确定的群显示集合的该子集中的命中文件的步骤。
67、一种搜索一数据库的方法,包含以下步骤:
响应于一第一查询,在数据库上开始一第一搜索,该第一搜索生成多个命中文件;
根据该命中文件和第一查询的共有信息元的一信息数值对该命中文件评级;并且,
对根据评级选择的至少一个命中文件采取自动行为。
68、一种搜索一数据库的方法,包含以下步骤:
根据一第一查询的信息元的一相对信息数值,选择该第一查询的信息元的一个合适的子集;
响应于该第一查询,以将该子集中的信息元考虑在内并忽略不在该子集内的信息元的方式在数据库上开始该第一搜索,该第一搜索生成多个命中文件;并且
向用户识别至少一个根据评级选择的命中文件。
69、根据权利要求68所述的方法,其中开始该第一搜索的步骤包含将该子集内的信息元运送至一外部搜索引擎、不将不在该子集内的信息元运送至该外部搜索引擎的步骤。
70、一种为搜索准备一第一数据库的方法,包含以下步骤:
生成一出现在该第一数据库中的信息元的列表,至少一个该信息元包含一个以上的符号,并且至少一个该信息元不足以构成该第一数据库中的一个完整单元;
将该列表中的每个信息元与该相应的信息元的一信息数值相关联;并且
将该列表中的每个信息元与该第一数据库中相应信息元的每个出现的位置指示相关联。
71、根据权利要求70所述的方法,其中生成一信息元列表的步骤包含以下步骤:
识别多个均具有至少两个符号的备选信息元;并且
该列表内仅包含那些在数据库中的出现频繁高于一阈值的备选信息元。
72、根据权利要求71所述的方法,其中该阈值随着备选的信息元中符号数量的增加而降低。
73、根据权利要求70所述的方法,其中生成一信息元列表的步骤包含以下步骤:
识别多个均具有至少两个符号的备选信息元;并且
该列表仅包含:
那些在数据库中的出现频繁高于一第一阈值与其分量的期望频率的乘积的备选信息元,
以及那些一起出现的频繁高于数据库中其分量的出现的一阈值百分比的备选信息元。
74、根据权利要求73所述的方法,其中该仅包含特定备选信息元的步骤,排除被完全包含在其它备选信息元中的备选信息元。
75、根据权利要求70所述的方法,其中生成一信息元列表的步骤包含以下步骤:
识别多个均具有至少两个符号的备选信息元;并且
该列表内仅包含那些满足一chi-square测试的备选信息元。
76、根据权利要求70所述的方法,其中生成一信息元列表的步骤包含以下步骤:
识别多个均具有至少两个符号的备选信息元;并且
该列表内仅包含那些满足从以下集合中选择的一预设的关联规则测试的备选信息元,该集合包括:置信测试、全置信测试、兴趣因子测试、余弦测试、相关性系数测试、奇数比例测试、Piatetsky-Shapiro测试、共同强度测试和Jaccard测试。
77、根据权利要求70所述的方法,进一步包含在一用于搜索的额外数据库中合并的步骤,该合并步骤包含以下步骤,对该列表内且出现在该额外数据库中的每个给定的信息元:
根据该额外数据库中给定的信息元的信息数值,更新该给定的信息元的信息数值;并且
将该列表中的给定的信息元与该额外数据库中给定信息元的每个出现的额外位置指示相关联。
78、根据权利要求77所述的方法,进一步包含将先前未出现在该列表中但出现在该额外数据库中的信息元加入该列表的步骤。
79、根据权利要求77所述的方法,其中该第一数据库和额外数据库是通过网络的不同节点访问的。
80、根据权利要求79所述的方法,进一步包含将一主数据库分割成n个子数据库的步骤,n>=2,该第一数据库和额外数据库是其中两个该子数据库。
81、一个用于搜索一第一数据库的计算机可读媒体,该媒体载有:
一出现在该第一数据库中的信息元的列表,至少一个该信息元包含一个以上的符号,并且至少一个该信息元不足以构成该第一数据库中的一个完整单元;
对于该列表中的每个信息元,该相应的信息元的一信息数值;以及
对于该列表中的每个信息元,该第一数据库中相应信息元的每个出现的一位置指示。
82、根据权利要求81所述的媒体,其中该列表仅包含在该第一数据库中的出现频繁高于一阈值的信息元。
83、根据权利要求82所述的媒体,其中该阈值随着该信息元中符号数量的增加而降低。
84、根据权利要求81所述的媒体,其中该信息元列表仅包含:
那些在该第一数据库中的出现频繁高于一第一阈值与其分量的期望频率的乘积的信息元,
以及那些一起出现的频繁高于该第一数据库中其分量的出现的一阈值百分比的信息元。
85、一种搜索一数据库的方法,包含以下步骤:
响应于一第一查询,在数据库上开始一第一搜索,该第一搜索生成多个命中文件,至少一第一命中文件具有根据该第一命中文件和第一查询的共有信息元的一信息数值被动态确定的一起始位置和结束位置,该第一命中文件不足以构成数据库中的一个完整条目;并且
将该第一命中文件显示给用户。
86、根据权利要求85所述的方法,其中该显示步骤进一步包含将该第一查询显示给用户的步骤。
87、根据权利要求86所述的方法,其中该第一查询和第一命中文件是被并列显示的。
88、根据权利要求86所述的方法,其中该显示步骤进一步包含在该第一查询和第一命中文件的显示中标示所有共有信息元的步骤。
89、根据权利要求85所述的方法,其中该第一命中文件的起始位置和结束位置是进一步根据在该第一命中文件中但不在该第一查询中的信息元的一信息数值被动态确定的。
90、根据权利要求85所述的方法,其中该第一命中文件的起始位置和结束位置是进一步根据不在该第一查询的共有信息元中的符号的一信息数值被动态确定的。
91、根据权利要求85所述的方法,其中该开始一第一搜索的步骤包含以下步骤:
识别该第一命中文件的开始起始和结束位置;并且
以增量方式反复调节至少一个该起始和结束位置,直到确定在该同一方向上的进一步调节会减少该第一命中文件中共有信息元的一净信息值,该净信息值与包含在该命中文件中的共有信息元的一信息数值正相关。
92、根据权利要求91所述的方法,其中该净信息值也与在该命中文件中但不在该第一查询中的信息元的一信息数值负相关。
93、根据权利要求91所述的方法,其中该净信息值也与不在该第一查询的共有信息元内的符号的一信息数值负相关。
94、根据权利要求85所述的方法,进一步包含将该第一查询的一显示区段向用户显示的步骤,该显示区段在该第一查询中具有起始和结束位置,该起始和结束位置根据该第一命中文件和第一查询显示区段的共有信息元的一信息数值被动态确定。
95、根据权利要求94所述的方法,其中该显示区段的起始和结束位置进一步根据不在该第一命中文件和第一查询显示区段的共有信息元中的符号的一信息数值被动态确定。
96、根据权利要求94所述的方法,其中显示该第一查询的显示区段的步骤包含以下步骤:
识别该显示区段的开始起始和结束位置;并且
以增量方式反复调节至少一个该起始和结束位置,直到确定在该同一方向上的进一步调节会减少该显示区段中共有信息元的一净信息值,该净信息值与包含在该显示区段中的共有信息元的一信息数值正相关。
97、一种搜索一数据库的方法,包含以下步骤:
为该第一查询中的一第一信息元生成一张同义词列表,该同义词列表中的每个同义词有一相关相似性分值;
响应于该第一查询在数据库上开始一搜索,允许将该第一查询中的第一信息元用该同义词列表中的同义词代替,该第一搜索生成多个命中文件;
根据用于代替该开始搜索步骤中的第一信息元的任何同义词的相似性分值对命中文件进行评级;并且
向用户识别至少一个根据评级选择的命中文件。
98、根据权利要求97所述的方法,进一步包含提供信息元及其同义词的相似性矩阵的步骤,一特定信息元的每个同义词都有与该特定信息元对应的一相关相似性分值,
并且其中为该第一查询中的每个信息元生成一同义词列表的步骤还包含从该相似性矩阵中提取相似性列表的步骤。
99、一种搜索一数据库的方法,包含以下步骤:
响应于一第一查询在数据库上开始一第一搜索,以得到其中至少有一个信息元为该命中文件和第一查询所共有的命中文件;并且
向用户识别至少其中一个该命中文件,
其中该第一查询和第一命中文件的共有信息元中至少有一第一信息元包含一个以上的符号,
并且其中该第一命中文件和第一查询的共有信息元中的一第二信息元与该第一信息元重叠,该重叠位于该命中文件中或者该第一查询中或者两者中。
100、根据权利要求99所述的方法,其中该第二信息元被完全包含在该第一信息元中,该包含位于该命中文件中或者该第一查询中或者两者中。
101、一种搜索一数据库的方法,包含以下步骤:
根据一提供的第一查询生成多个初步查询,至少其中两个该初步查询彼此不同;
将该初步查询传送至一个包括至少一个外部搜索引擎的集合,一初步搜索查询和一外部搜索引擎的每个组合生成一初步命中文件的相应集合;并且
向用户识别由至少一个该初步查询返回的至少一个该命中文件。
102、根据权利要求101所述的方法,其中生成多个初步查询的步骤包含以下步骤:
在该第一查询中识别多个信息元;
根据该信息元的一信息数值选择一个包括多个信息元的子集;并且
从该子集的信息元中为每个该初步查询选择关键词。
103、根据权利要求102所述的方法,其中该选择一信息元子集的步骤包含从多个信息元中选择一预设数量的具有最高信息数值的信息元的步骤。
104、根据权利要求102所述的方法,其中该选择关键词的步骤包含随机地分别为每个该初步查询选择一特定数量的关键词的步骤。
105、根据权利要求101所述的方法,为了使用其中每个信息元都具有一相关信息数值的信息元的一第一列表,其中进一步步骤包含如下步骤:
根据该初步查询返回的命中文件中该第一列表中的信息元的出现频率,增加该第一列表中的信息元的信息数值;并且
根据增加的信息数值对从该初步查询返回的命中文件进行评级。
106、根据权利要求105所述的方法,进一步包含将在从该初步查询返回的命中文件中却不在先前的该第一列表中的信息元增加至该信息元的第一列表的步骤。
107、根据权利要求101所述的方法,其中至少两个该外部搜索引擎彼此不同。
108、一种在一主题数据库中组织区段以向用户呈现的方法,包含以下步骤:
根据每个该区段里的信息元的一信息数值将该区段聚类;并且
将该区段以在该聚类步骤中确定的群的形式识别给用户。
109、根据权利要求108所述的方法,其中该聚类步骤包含以下步骤:
对于每对第一和第二区段x和y,它们之间的距离由d(x,y)=∑ixi+∑jyj确定,其中xi为在该第一区段中但不在该第二区段中的信息元i的信息数值,而yj为在该第二区段中但不在该第一区段中的信息元j的信息数值;并且
根据该距离将该区段聚类。
110、根据权利要求108所述的方法,进一步包含如下步骤:
响应于一第一查询在更大的数据库上开始一第一搜索,该第一搜索生成多个命中文件,
其中该主题数据库中的区段构成了该多个命中文件中的命中文件。
111、根据权利要求110所述的方法,进一步包含对其中一个特定群中的命中文件进行评级的步骤,该评级根据该命中文件和第一查询的共有信息元的一信息数值进行,
并且其中将该区段以群的形式识别给用户的步骤包含将根据评级选择的该特定群中的至少一个命中文件识别给用户的步骤。
112、根据权利要求108所述的方法,聚类区段的步骤包含根据该特定区段中的信息元的一信息数值,动态确定其中一个特定区段的一起始和结束位置的步骤。
113、根据权利要求112所述的方法,其中确定该特定区段的一起始和结束位置的步骤包含以下步骤:
识别该特定区段的起始和结束位置;以增量方式反复扩展至少一个该起始和结束位置,直到确定进一步的扩展会减少该区段的一净信息值,该净信息值与包含在该区段中的信息元的一信息数值正相关,并与不包含在一信息元内的符号逆相关。
114、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
响应于一第一查询在数据库上开始一第一搜索,该第一搜索生成多个命中文件;
跟该命中文件和第一查询的共有信息元的一信息数值对该命中文件进行评级;
向用户识别至少一个根据评级选择的命中文件。
115、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
响应于一第一查询在数据库上开始一第一搜索,该第一搜索生成多个命中文件;
跟该命中文件和第一查询的共有信息元的一信息数值对该命中文件进行评级;
对至少一个根据评级选择的命中文件采取自动行为。
116、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
根据一第一查询中信息元的一相对信息数值,选择一个该第一查询中的信息元的合适子集;
响应于该第一查询以将该子集中的信息元考虑在内并忽略不在该子集内的信息元的形式在数据库上开始该第一搜索;并且
向用户识别至少一个根据评级选择的命中文件。
117、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
生成一出现在该第一数据库中的信息元的列表,至少一个该信息元包含一个以上的符号,并且至少一个该信息元不足以构成该第一数据库中的一个完整单元;
将该列表中的每个信息元与该相应的信息元的一信息数值相关联;并且
将该列表中的每个信息元与该第一数据库中相应信息元的每个出现的位置指示相关联。
118、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
响应于一第一查询,在数据库上开始一第一搜索,该第一搜索生成多个命中文件,至少一第一命中文件具有根据该第一命中文件和第一查询的共有信息元之间在数据库中的空隙长度被动态确定的一起始位置和结束位置,该第一命中文件不足以构成数据库中的一个完整条目;并且
将该第一命中文件显示给用户。
119、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
为一第一查询中的一第一信息元生成一张同义词列表,该同义词列表中的每个同义词有一相关相似性分值;
响应于该第一查询在数据库上开始一搜索,允许将该第一查询中的第一信息元用该同义词列表中的同义词代替,该第一搜索生成多个命中文件;
根据用于代替搜索中的该第一信息元的任何同义词的相似性分值对命中文件进行评级;并且
向用户识别至少一个根据评级选择的命中文件。
120、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
响应于一第一查询在数据库上开始一第一搜索,以得到其中至少有一个信息元为该命中文件和第一查询所共有的命中文件;并且
向用户识别至少其中一个该命中文件,
其中该第一查询和第一命中文件的共有信息元中至少有一第一信息元包含一个以上的符号,
并且其中该第一命中文件和第一查询的共有信息元中的一第二信息元与该第一信息元重叠,该重叠位于该命中文件中或者该第一查询中或者两者中。
121、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
根据一提供的第一查询生成多个初步查询,至少其中两个该初步查询彼此不同;
将该初步查询传送至一个包括至少一个外部搜索引擎的集合,一初步搜索查询和一外部搜索引擎的每个组合生成一初步命中文件的相应集合;并且
向用户识别由至少一个该初步查询返回的至少一个该命中文件。
122、一种用于一数据库的系统,该系统包含:
一存储器;以及
与该存储器耦合的一数据处理器,该数据处理器被设置为:
根据每个区段中的信息元的一信息数值将一主题数据库的区段聚类为群;并且
将该区段以相应于该群的集合的形式识别给用户。
123、一种搜索一数据库的方法,包含以下步骤:
将一第一查询提供给一搜索引擎;并且
从该搜索引擎接收至少一个被选命中文件的报告,该被选命中文件根据该命中文件和第一查询的共有信息元的一信息数值被选择。
124、一种搜索一数据库的方法,包含以下步骤:
将一第一查询提供给一搜索引擎;并且
从该搜索引擎接收一个包括至少一个被选命中文件的集合的报告,响应于该第一查询,以将一第一查询中的信息元的一个合适子集中的信息元考虑在内并忽略不在该子集内的信息元的形式选择该命中文件集合,该子集根据所述第一查询的信息元的一相对信息数值被选择。
125、一种搜索一数据库的方法,包含以下步骤:
将一第一查询提供给一搜索引擎;并且
接收至少一个第一命中文件的报告,该第一命中文件具有一起始和结束位置,该起始和结束位置根据该第一命中文件和第一查询的共有信息元的一信息数值被动态确定,该第一命中文件不足以构成数据库中的一个完整条目。
126、一种搜索一数据库的方法,包含以下步骤:
将一第一查询提供给一搜索引擎;并且
接收至少一个第一命中文件的报告,根据用于代替该第一查询中的一信息元的一同义词的一相似性分值,并且进一步根据该第一查询和命中文件的共有信息元的一信息数值,从数据库中选择该第一命中文件。
127、一种搜索一数据库的方法,包含以下步骤:
将一第一查询提供给一搜索引擎;并且
接收至少一个第一命中文件的报告,该第一命中文件中至少一个信息元是该命中文件和第一查询所共有的,
其中该第一查询和第一命中文件的共有信息元中至少有一第一信息元包含一个以上的符号,
并且其中该第一命中文件和第一查询的共有信息元中的一第二信息元与该第一信息元重叠,该重叠位于该命中文件中或者该第一查询中或者两者中。
128、一种搜索一数据库的方法,包含以下步骤:
将一第一查询提供给一搜索引擎;并且
接收至少一个第一命中文件的报告,响应于根据该第一查询生成的多个初步查询中的一个,该第一命中文件被一第二搜索引擎返回,至少其中两个该初步查询彼此不同。
129、一种观察一主题数据库的区段的方法,包含观察根据每个该区段中的信息元的一信息数值被聚类的该区段的步骤。
CNA2007800232204A 2006-04-25 2007-04-25 全文查询和搜索系统及其使用方法 Pending CN101535945A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US74560406P 2006-04-25 2006-04-25
US60/745,605 2006-04-25
US60/745,604 2006-04-25

Publications (1)

Publication Number Publication Date
CN101535945A true CN101535945A (zh) 2009-09-16

Family

ID=41105105

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007800232204A Pending CN101535945A (zh) 2006-04-25 2007-04-25 全文查询和搜索系统及其使用方法

Country Status (1)

Country Link
CN (1) CN101535945A (zh)

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193929A (zh) * 2010-03-08 2011-09-21 阿里巴巴集团控股有限公司 确定词信息熵及利用词信息熵的搜索方法及其设备
CN102609536A (zh) * 2012-02-16 2012-07-25 杭州电子科技大学 一种非合作环境下的资源选择方法
CN103098052A (zh) * 2010-08-25 2013-05-08 欧米克数据质量有限公司 用于搜索多个数据记录的方法和搜索引擎
CN104166703A (zh) * 2014-07-15 2014-11-26 百度在线网络技术(北京)有限公司 对象识别方法和装置
CN105893453A (zh) * 2015-02-13 2016-08-24 国际商业机器公司 用于处理数据库查询的计算机实现的方法和计算机系统
CN106202386A (zh) * 2016-07-08 2016-12-07 唐博 自动分析数据库表关系的方法
CN106874336A (zh) * 2016-03-28 2017-06-20 阿里巴巴集团控股有限公司 数据撮合方法、数据查询方法及装置
CN107133271A (zh) * 2017-04-01 2017-09-05 上海半坡网络技术有限公司 语义脑图实时表达系统及其操作方法
CN107851022A (zh) * 2015-07-31 2018-03-27 Arm 有限公司 向量长度查询指令
CN108255976A (zh) * 2017-12-27 2018-07-06 东软集团股份有限公司 数据排序的方法、装置和存储介质以及电子设备
CN108595713A (zh) * 2018-05-14 2018-09-28 中国科学院计算机网络信息中心 确定对象集合的方法和装置
CN108702449A (zh) * 2016-02-29 2018-10-23 华为技术有限公司 图像搜索方法及其系统
CN109522350A (zh) * 2018-10-19 2019-03-26 海闻科技有限公司 一种台账控件解析的方法
CN110134695A (zh) * 2019-05-21 2019-08-16 电子科技大学 一种面向流水线结构化数据查询的数据库智能分区方法
CN110175295A (zh) * 2019-06-21 2019-08-27 卓尔智联(武汉)研究院有限公司 广告位推荐方法、电子设备及计算机可读存储介质
CN110442704A (zh) * 2019-08-13 2019-11-12 重庆誉存大数据科技有限公司 一种企业新闻筛选方法及系统
CN111095421A (zh) * 2017-08-31 2020-05-01 国际商业机器公司 基因文件的上下文感知增量算法
CN111666417A (zh) * 2020-04-13 2020-09-15 百度在线网络技术(北京)有限公司 生成同义词的方法、装置、电子设备以及可读存储介质
CN111859573A (zh) * 2020-07-22 2020-10-30 重庆大学 一种工艺过程的结构化表征方法
CN112559866A (zh) * 2020-12-16 2021-03-26 郑州工程技术学院 大学图书阅读推荐方法、装置、设备及存储介质
CN112818146A (zh) * 2021-01-26 2021-05-18 山西三友和智慧信息技术股份有限公司 一种基于产品图像风格的推荐方法
CN113312881A (zh) * 2021-05-06 2021-08-27 上海移远通信技术股份有限公司 频段信息转换方法及装置、电子设备和计算机存储介质
CN113779191A (zh) * 2021-07-23 2021-12-10 中国人民解放军61623部队 基于用户联合信息超矢量和联合信息模型的用户识别方法
CN114006713A (zh) * 2020-10-22 2022-02-01 北京八分量信息科技有限公司 一种针对节点多样性的信任架构
CN115048948A (zh) * 2022-06-15 2022-09-13 昆明理工大学 融合主题关联图的越汉低资源跨语言摘要方法
CN116136839A (zh) * 2023-04-17 2023-05-19 湖南正宇软件技术开发有限公司 法规文件花脸稿的生成方法、生成系统及相关设备
CN116257657A (zh) * 2022-12-30 2023-06-13 北京瑞莱智慧科技有限公司 数据处理方法、数据查询方法、相关装置及存储介质
CN116340467A (zh) * 2023-05-11 2023-06-27 腾讯科技(深圳)有限公司 文本处理方法、装置、电子设备及计算机可读存储介质

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193929A (zh) * 2010-03-08 2011-09-21 阿里巴巴集团控股有限公司 确定词信息熵及利用词信息熵的搜索方法及其设备
CN103098052A (zh) * 2010-08-25 2013-05-08 欧米克数据质量有限公司 用于搜索多个数据记录的方法和搜索引擎
CN103098052B (zh) * 2010-08-25 2017-05-24 欧米克数据质量有限公司 用于搜索多个数据记录的方法和搜索引擎
CN102609536A (zh) * 2012-02-16 2012-07-25 杭州电子科技大学 一种非合作环境下的资源选择方法
CN104166703B (zh) * 2014-07-15 2017-10-27 百度在线网络技术(北京)有限公司 对象识别方法和装置
CN104166703A (zh) * 2014-07-15 2014-11-26 百度在线网络技术(北京)有限公司 对象识别方法和装置
CN105893453A (zh) * 2015-02-13 2016-08-24 国际商业机器公司 用于处理数据库查询的计算机实现的方法和计算机系统
CN105893453B (zh) * 2015-02-13 2020-07-03 国际商业机器公司 用于处理数据库查询的计算机实现的方法和计算机系统
US10698912B2 (en) 2015-02-13 2020-06-30 International Business Machines Corporation Method for processing a database query
US11314514B2 (en) 2015-07-31 2022-04-26 Arm Limited Vector length querying instruction
CN107851022A (zh) * 2015-07-31 2018-03-27 Arm 有限公司 向量长度查询指令
CN107851022B (zh) * 2015-07-31 2022-05-17 Arm 有限公司 向量长度查询指令
US10891019B2 (en) 2016-02-29 2021-01-12 Huawei Technologies Co., Ltd. Dynamic thumbnail selection for search results
CN108702449A (zh) * 2016-02-29 2018-10-23 华为技术有限公司 图像搜索方法及其系统
CN106874336B (zh) * 2016-03-28 2020-07-28 阿里巴巴集团控股有限公司 数据撮合方法、数据查询方法及装置
CN106874336A (zh) * 2016-03-28 2017-06-20 阿里巴巴集团控股有限公司 数据撮合方法、数据查询方法及装置
CN106202386A (zh) * 2016-07-08 2016-12-07 唐博 自动分析数据库表关系的方法
CN107133271A (zh) * 2017-04-01 2017-09-05 上海半坡网络技术有限公司 语义脑图实时表达系统及其操作方法
CN107133271B (zh) * 2017-04-01 2021-04-06 上海半坡网络技术有限公司 语义脑图实时表达系统及其操作方法
CN111095421A (zh) * 2017-08-31 2020-05-01 国际商业机器公司 基因文件的上下文感知增量算法
CN111095421B (zh) * 2017-08-31 2024-02-02 国际商业机器公司 基因文件的上下文感知增量算法
CN108255976B (zh) * 2017-12-27 2020-07-03 东软集团股份有限公司 数据排序的方法、装置和存储介质以及电子设备
CN108255976A (zh) * 2017-12-27 2018-07-06 东软集团股份有限公司 数据排序的方法、装置和存储介质以及电子设备
CN108595713B (zh) * 2018-05-14 2020-09-29 中国科学院计算机网络信息中心 确定对象集合的方法和装置
CN108595713A (zh) * 2018-05-14 2018-09-28 中国科学院计算机网络信息中心 确定对象集合的方法和装置
CN109522350B (zh) * 2018-10-19 2023-07-11 海闻科技有限公司 一种台账控件解析的方法
CN109522350A (zh) * 2018-10-19 2019-03-26 海闻科技有限公司 一种台账控件解析的方法
CN110134695B (zh) * 2019-05-21 2022-08-16 电子科技大学 一种面向流水线结构化数据查询的数据库智能分区方法
CN110134695A (zh) * 2019-05-21 2019-08-16 电子科技大学 一种面向流水线结构化数据查询的数据库智能分区方法
CN110175295B (zh) * 2019-06-21 2021-05-04 卓尔智联(武汉)研究院有限公司 广告位推荐方法、电子设备及计算机可读存储介质
CN110175295A (zh) * 2019-06-21 2019-08-27 卓尔智联(武汉)研究院有限公司 广告位推荐方法、电子设备及计算机可读存储介质
CN110442704A (zh) * 2019-08-13 2019-11-12 重庆誉存大数据科技有限公司 一种企业新闻筛选方法及系统
CN111666417B (zh) * 2020-04-13 2023-06-23 百度在线网络技术(北京)有限公司 生成同义词的方法、装置、电子设备以及可读存储介质
CN111666417A (zh) * 2020-04-13 2020-09-15 百度在线网络技术(北京)有限公司 生成同义词的方法、装置、电子设备以及可读存储介质
CN111859573B (zh) * 2020-07-22 2023-11-03 重庆大学 一种工艺过程的结构化表征方法
CN111859573A (zh) * 2020-07-22 2020-10-30 重庆大学 一种工艺过程的结构化表征方法
CN114006713A (zh) * 2020-10-22 2022-02-01 北京八分量信息科技有限公司 一种针对节点多样性的信任架构
CN112559866A (zh) * 2020-12-16 2021-03-26 郑州工程技术学院 大学图书阅读推荐方法、装置、设备及存储介质
CN112818146A (zh) * 2021-01-26 2021-05-18 山西三友和智慧信息技术股份有限公司 一种基于产品图像风格的推荐方法
CN113312881A (zh) * 2021-05-06 2021-08-27 上海移远通信技术股份有限公司 频段信息转换方法及装置、电子设备和计算机存储介质
CN113312881B (zh) * 2021-05-06 2024-04-05 上海移远通信技术股份有限公司 频段信息转换方法及装置、电子设备和计算机存储介质
CN113779191A (zh) * 2021-07-23 2021-12-10 中国人民解放军61623部队 基于用户联合信息超矢量和联合信息模型的用户识别方法
CN113779191B (zh) * 2021-07-23 2024-03-05 中国人民解放军61623部队 基于用户联合信息超矢量和联合信息模型的用户识别方法
CN115048948A (zh) * 2022-06-15 2022-09-13 昆明理工大学 融合主题关联图的越汉低资源跨语言摘要方法
CN115048948B (zh) * 2022-06-15 2024-04-19 昆明理工大学 融合主题关联图的越汉低资源跨语言摘要方法
CN116257657A (zh) * 2022-12-30 2023-06-13 北京瑞莱智慧科技有限公司 数据处理方法、数据查询方法、相关装置及存储介质
CN116257657B (zh) * 2022-12-30 2024-02-06 北京瑞莱智慧科技有限公司 数据处理方法、数据查询方法、相关装置及存储介质
CN116136839A (zh) * 2023-04-17 2023-05-19 湖南正宇软件技术开发有限公司 法规文件花脸稿的生成方法、生成系统及相关设备
CN116340467A (zh) * 2023-05-11 2023-06-27 腾讯科技(深圳)有限公司 文本处理方法、装置、电子设备及计算机可读存储介质
CN116340467B (zh) * 2023-05-11 2023-11-17 腾讯科技(深圳)有限公司 文本处理方法、装置、电子设备、及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN101535945A (zh) 全文查询和搜索系统及其使用方法
US11222052B2 (en) Machine learning-based relationship association and related discovery and
US11386096B2 (en) Entity fingerprints
Hussain et al. Spam review detection techniques: A systematic literature review
Balsmeier et al. Machine learning and natural language processing on the patent corpus: Data, tools, and new measures
US10303999B2 (en) Machine learning-based relationship association and related discovery and search engines
US20110055192A1 (en) Full text query and search systems and method of use
CN101084496B (zh) 用于选择、分析以及将相关数据库记录可视化为网络的方法
US7289985B2 (en) Enhanced document retrieval
US7305389B2 (en) Content propagation for enhanced document retrieval
EP2823410B1 (en) Entity augmentation service from latent relational data
US20030115189A1 (en) Method and apparatus for electronically extracting application specific multidimensional information from documents selected from a set of documents electronically extracted from a library of electronically searchable documents
US20030115188A1 (en) Method and apparatus for electronically extracting application specific multidimensional information from a library of searchable documents and for providing the application specific information to a user application
US20030014398A1 (en) Query modification system for information retrieval
JP5249074B2 (ja) 情報のシンボルによるリンクとインテリジェントな分類を行う方法及びシステム
US20090024612A1 (en) Full text query and search systems and methods of use
EP2013788A2 (en) Full text query and search systems and method of use
US20150006528A1 (en) Hierarchical data structure of documents
CN101088082A (zh) 全文查询和搜索系统及其使用方法
Koniaris et al. Evaluation of diversification techniques for legal information retrieval
Mothe Analytics methods to understand information retrieval effectiveness—a survey
CN101866340A (zh) 一种产品情报的在线检索和智能分析方法与系统
Hovy et al. Data Acquisition and Integration in the DGRC's Energy Data Collection Project
CN116783587A (zh) 基于列表的数据搜索用数据存储
Shaila et al. TAG term weight-based N gram Thesaurus generation for query expansion in information retrieval application

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090916