内容转换方法和装置的制作方法

文档序号:6435641阅读:347来源:国知局

专利名称::内容转换方法和装置的制作方法
技术领域
:本发明涉及使用跨概念关联数据库来处理内容。特别地,本发明提供用于创建关联概念数据库方法和装置,并提供用于使用该数据库将概念从一种状态转换到其他状态的方法和装置。在一个实施例中,通过例子,本发明提供用于创建语言翻译数据库的方法和装置,其中两种语言构成关联概念数据库。本发明亦提供用于使用该语言数据库将(表示概念的)文档从一种语言转换为另一种语言(或更一般地,从一种状态转换为另一种状态)的方法和装置。然而,本发明并不限于语言翻译,虽然首选实施例如此。本发明的数据库创建方面可以应用于任何以某种方式关联但以不同状态表达的概念,且本发明的转换方面可以应用于准确地将概念从一种状态翻译到另一种状态。在另一个实施例中,本发明的数据库创建方面可以用于做出单种语言的概念之间的关联及它们的相互关系,用于人工智能应用。现说明本发明应用于语言翻译的实施例。如在此所用,涉及转换、翻译和处理的术语可相互替代并以它们最宽泛的意义使用。发明概要本发明的一个目标是有助于通过提供用于创建和补充跨概念关联数据库的方法和装置将文档从一种语言或状态有效地翻译为另一种语言或状态。这些数据库通常将表示特定概念或信息片段的第一种形式或状态的数据与表示相同概念或信息片段第二种形式或状态的数据关联。本发明的另一个目标是有助于通过提供用于根据包括第一种状态、形式或语言的数据的第一个文档创建包括第二种状态、形式或语言的数据的第二个文档,以使得第一个和第二个文档表示本质上相同的概念或信息的方法和装置,将文档从一种语言或状态翻译为另一种语言或状态。本发明的又一个目标是有助于通过提供用于根据包括第一种状态、形式或语言的数据的第一个文档创建包括第二种状态、形式或语言的数据的第二个文档,以使得第一个和第二个文档表示本质上相同的概念或信息的方法和装置,将文档从一种语言或状态翻译为另一种语言或状态,且所述方法和装置包括使用跨概念关联数据库。本发明的又一个目标是以实时的方式提供文档的翻译(从宽泛的意义来说,将概念从一种状态转换为另一种状态)。本发明通过提供用于创建跨概念数据库的方法和装置来实现这些和其他目标。用于创建跨概念数据库的方法和装置可以包括提供两个或多个文档,每个文档为不同的语言但表示本质上相同的概念。这些文档可以是相同文本的准确翻译,即对等文本文档,或可以是包含一般相关文本的翻译,即,可比较文本文档。本发明至少选择在可用的跨语言文档的第一种语言中有多次出现的所有单词和单词串的第一次和第二次出现。然后在第二种语言的文档中至少选择第一个单词范围和第二个单词范围,其中第一个和第二个单词范围对应于所选的单词或单词串在第一种语言的文档中的第一次和第二次出现。接下来,比较在第一个单词范围中出现的单词和单词串与在第二个单词范围中出现的单词和单词串,定位两个单词范围共有的单词和单词串,并将这些已定位的共有单词和单词串存储在跨概念数据库中。然后本发明在所述跨概念数据库中将第二种语言的两个范围中定位的共有单词或单词串与第一种语言的所选的单词或单词串关联,并在按如下详述调整所述关联频数之后,用它们的关联频数(重现次数)分级。通过检验对等或可比较文本中的跨语言的共有单词和单词串,数据库将随着更多的对等或可比较文档在各种不同语言中可用而解析更多的关联。本发明也通过提供将文档从一种状态转换为另一种状态的方法和装置实现这些和其他目标。本发明提供包括与(通过上述方法或手动创建的)第二种语言的数据片段关联的第一种语言的数据片段的数据库。本发明通过访问上述数据库,并识别要翻译的文档中开始于该文档的第一个单词并存在于数据库中的最长单词串(通过单词数来衡量)来翻译文本。然后该系统从数据库中检索与第一种语言的文档中定位的单词串关联的第二种语言的单词串。然后该系统在文档中选择存在于数据库中且和前面在文档中识别的单词串有重叠的单词(或单词串)第二个单词串,并从数据库中检索和第一种语言的第二个单词串关联的第二种语言的单词串。如果第二种语言的单词串关联有一个重叠单词(或多个单词),则组合第二种语言的单词串关联(消除重叠中的冗余)以构成翻译;如果不是,则检索对第一种语言单词串的其他第二种语言关联并通过单词的重叠来检验组合,直到成功。通过搜索数据库中和前面识别的第一种语言的单词串有一个重叠单词(或多个单词)的最长单词串来选择第一种语言的文档中的下一个单词串,且继续上述处理直到整个第一种语言的文档被翻译为第二种语言的文档。本发明也创建频数表来确定两个或多个单词或单词串之间的关联,以使得该频数表可以在其他应用中使用,包括那些涉及将内容从一种状态转换为第二种状态的应用。通过检查给定状态(如,给定语言)的文档并基于对文本中的单词或单词串的接近程度确定两个单词和/或单词串关联的频数来创建所述频数表。因此,例如,通过检查英语的文本,可以对关联于短语“MountEverest(珠穆朗玛峰)”的单词或单词串,如“mountain(山)”、“highestplaceintheworld(世界上最高的地方)”、“snow(雪)”、“climb(爬)”、“peopledied(死去的人)”和“cold(寒冷)”建立频数表。然后可以在智能应用中以任何方式使用这些频数表,通过识别在两个或多个频数表上的共有关联来回答问题。为智能应用创建的数据库可以通过单种语言(或使用跨语言文本)的文档来构建。图1根据本发明展示跨概念数据库的实施例;图2展示本发明的计算机系统的实施例,所述计算机系统用于实现本发明的方法;及图3展示本发明的计算机系统的存储器设备,所述存储器设备包含用于实现本发明的方法的程序。详细说明本发明提供用于创建和补充跨概念数据库并用于使用跨概念数据库将文档从第一种语言或状态翻译为第二种语言或状态的方法和装置。文档,如在此所述,是信息(如由固定在某种媒体中的符号和字符表示的概念)的集合。例如,文档可以为存储在磁或光学媒体上的电子文档或纸质文档,如书籍。包含在文档中的符号和字符表示使用一个或多个其目的在于由文档的用户理解的表达系统所表达的概念和信息。本发明处理第一种状态,即,包含以一种表达系统表达的信息的文档,来产生第二种状态,即,包含使用第二种表达系统表达的本质上相同的信息的文档。因此,本发明可以在表达系统之间处理或翻译文档,例如,将书面和口头语言,如英语、希伯来语和广东话,翻译为其他语言。用于实现本发明的内容转换或内容处理方法的系统或装置可以为计算机系统200,如图2所示。计算机系统200包括通过总线214连接到存储器208、输入设备210和输出设备212的处理器202。计算机系统200也可以包括存储设备204和网络接口206。处理器202访问存储在存储器208中的数据和程序。通过执行存储器208中的程序,处理器可以控制计算机系统200,并可以执行步骤来处理数据并控制设备,所述设备包括例如,输入设备210、输出设备212、存储设备204、网络接口206和存储器208。存储在存储器208中的程序可以包括执行本发明的方法,如内容转换、关联单词和单词串及数据库创建和补充方法的步骤。存储设备204记录并存储信息以便稍后由存储器208处理器202检索,且可以包括技术中已有的存储设备,如非易失存储器设备、磁盘驱动器、磁带驱动器和光学存储设备。存储设备204可以存储程序和数据,包括可以被传输到存储器208以由处理器202使用的数据库。完整的数据库或数据库的部分可以被传输到存储器208以用于由处理器202访问和处理。网络接口206提供计算机系统200和网络216(如因特网)之间的接口,并转换来自计算机系统200的信号为可以沿网络216发送的格式,反之亦然。输入设备210可以包括例如,用于输入数据到存储器208中以及到存储设备204中的键盘和扫描仪。输入数据可以包括将被存储在文档数据库中用于分析和内容转换的文档文本。输出设备212包括用于向计算机系统用户呈现信息的设备并可以包括例如,显示器屏幕和打印机。本发明的详细说明,包括数据库创建方法和装置,及转换方法和装置将在下面进行阐述。数据库创建方法和装置本发明的方法使用跨概念数据库来进行文档内容处理。图1展示了跨概念数据库的一个实施例。该跨概念数据库的实施例包括栏1和栏2中的关联的数据片段的清单。数据片段为表示表达系统中的特殊概念或信息片段的符号或字符的分组。例如,当文档中的表达系统是单词语言时,片段可以为单词或单词串,因此,栏1中的系统A片段是表示假设的表达系统A中的各种概念和概念组合Da1、Da2、Da3和Da4的数据片段。栏2中的系统B片段是数据片段Db1、Db3、Db4、Db5、Db7、Db9、Db10和Db12,它们表示假设的表达系统B中的各种概念和那些概念的部分组合,它们根据相对于表达系统A中的数据片段的关联频数排序。栏3展示直接频数,它是语言B的片段或多个片段和所列的语言A的片段(或多个片段)关联的次数。栏4展示减法后频数,它表示语言B的数据片段(或多个片段)和语言A的片段(或多个片段)关联的次数减去片段(或多个片段)作为较大片段的部分进行关联的次数之后得到的次数,如下面更详细的说明。如图1所示,可能单个片段,如Da1比较适合关联于多个片段(Db1和Db3及Db4一起)。数据片段之间的减法后频数越高(如在此所述),系统A片段等价于系统B片段的概率越高。除了用出现总数来度量调整的频数,调整的频数也可以例如通过计算特定的系统A片段对应于特定的系统B片段的次数百分比来度量。当数据库被用于翻译文档时,在处理中首先从数据库中检索出分级最高的关联片段。然而,通常检验用于翻译的关联片段组合的方法(如下所述)确定应检验不同的、分级较低的关联,因为分级较高的关联一旦经检验就不能再使用。例如,如果查询数据库搜索Da1的关联,它会返回Db1+Db3+Db4;如果准确地组合用于翻译的数据片段的处理确定不能使用Db1+Db3+Db4,则数据库会返回Db9+Db10来检验用于翻译的和另一个关联片段的准确组合。总的来说,创建本发明的跨概念数据库的方法包括检查和操作对等或可比较文本。使用本发明的方法和装置从而创建数据库,所述数据库包括跨两种状态的关联—准确转换,或更具体地,以一种状态表达的概念和以另一种状态表达的概念之间的关联。通过本发明检查和操作当更多文档时,两种状态之间的翻译和其他相关的关联变得更强,即,更频繁,从而通过操作足够多的“样本”文档,最普通的(及,某种意义上,正确的)关联将变得明显,且所述方法和装置可以用于转换目的。在本发明的一个实施例中,两种状态表示单词语言(如,英语、希伯来语、汉语等等),从而本发明创建关联一种语言的单词和单词串与它们第二种语言的对应翻译的跨语言数据库。单词串可以定义为连续相邻的单词的分组且通常包括标点以及在语言表达中使用的任何其他标记。在此例中,本发明通过检查两种语言的文档创建数据库并创建两种语言中每个重现的单词或单词串的翻译的数据库。然而,本发明不限于语言翻译。本发明允许用户创建概念数据库并以层次的方式关联那些概念和其他不同的概念。因此,概念和其他概念关联并根据出现频数分级。对出现频数给出的特定权重以及对这样创建的数据库的使用可以取决于用户的需求而不同。例如,在将文本从一种语言转换为另一种语言的上下文中,本发明将创建英语和汉语之间的单词和单词串的语言翻译。本发明将返回单词和单词串之间跨两种语言关联的分级。给定足够大的样本量,出现最频繁的单词或单词串将是该英语单词或单词串的一个汉语等价。然而,本发明也会返回那些英语单词或单词串的其他汉语关联且用户可以根据需要处理那些关联。例如,当根据本发明操作单词“mountain”时,会在被检查的语言中返回汉语单词和单词串的列表。单词“mountain”的汉语等价很可能得到最高的分级;然而,本发明将返回其他和“mountain”关联的外语单词或单词串,如“snow”、“ski”、“adangersport”、“thehighestpointintheworld”或“Mt.Everest”。这些单词和单词串的分级可能低于“mountain”的翻译,可以根据需要由用户来处理。某种意义上,最强的关联表示“翻译”或“转换”,但是其他频繁(但是弱一些的)关联表示和被检查的概念密切相关的概念。因此,该数据库可以由使用技术中众所周知的人工智能应用的系统使用。那些系统当前使用不完整的、手动创建的概念数据库或如“神经网络”这样的实体来进行应用。这些用于人工智能应用的关联概念数据库可以使用单种语言的文档中的任何用户定义的范围来构建。本发明的另一个实施例使用计算设备,如现有技术中已有类型的个人计算机系统。虽然计算设备通常为普通的个人计算机(或者单独或者在网络环境中),类似地可以使用其他计算设备,如PDA、无线设备、服务器、大型机等等。然而,本发明的方法和装置不一定需要使用这样的计算设备且可以立即通过其他方法来实现,包括手动创建交叉关联。检查后续文档来扩大“样本”文档并创建交叉关联数据库的方法是多样的—可以设置文档用于手动、通过自动输入(如现有技术中已有的自动装纸机)或通过使用搜索技术在因特网上搜索相关的文档(如Web爬行器)来进行分析和处理。注意除(甚至替代)对等文本之外,本发明可以通过检查可比较文本产生关联数据库。进一步来说,在一种语言内搜索重现的单词或单词串时,该方法查看所有可用文档。构建数据库根据本发明,为了构建数据库的目的而检查文档。在文档输入后(再次,在两种不同语言中表示同一文本的一对文档),创建处理开始使用在此所述的方法和/或装置。为了说明,假设这些文档包含两种不同语言的相同内容(或,从广义上,概念)。文档A为语言A,文档B为语言B。这些文档包含下述文本文档A(语言A)文档B(语言B)XYZXWVYZXZAABBCCAAEEFFGGCC本发明的第一个步骤是计算单词范围,以确定任何给定单词或单词串的可能关联的近似位置。因为跨语言的单词对单词的分析将不能产生有用的结果(即,文档A中的单词1通常不是文档B中单词1的字面翻译),且一种语言的句子结构可能有等价概念在句子中的位置(或顺序)和另一种语言不同,本发明的数据库创建技术将第一种语言的每个单词和单词串与在第二种语言的文档中选择的范围内找出的所有单词和单词串相关联。这也很重要,因为一种语言通常用比另一种语言更长或更短的单词串来表达概念。此范围是通过检查两个文档来确定的,且被用于比较第二个文档中的单词和单词串及第一个文档中的单词和单词串。即,作为第一个文档中的每个单词和单词串的可能关联来检查第二个文档中的单词或单词串的范围。通过对范围进行检验,数据库创建技术确定一些可能等价于第一种语言的单词和单词串并且作为其翻译的第二种语言的单词或单词串。为了建立第二种语言的文档中的范围,在其中查找第一种语言的文档中的任何给定单词和单词串的关联,必须确定两个属性。第一个属性是第二个文档中的范围的值或大小,它由该范围中的单词数来衡量。第二个属性是第二个文档中的范围的位置,它由该范围的中点的位置来衡量。两个属性都是用户定义的,但下面提供首选实施例的例子。定义范围的大小和位置时,目标是确保在范围中包括正被分析的第一种语言的片段的第二种语言的单词或单词串翻译有较高的概率。可以使用各种方法来确定范围的大小或值,这包括普通的统计方法,如基于文档中的单词数生成钟型曲线。通过如钟型曲线这样的统计方法,在文档开始和末尾的范围将比文档中间的范围小。无论是根据文档中的单词的绝对数量还是根据文档中的单词的特定百分比来得到翻译,该范围的钟型的频率使得有合理的机会来推断出翻译。存在计算范围的其他方法,如“步骤”方法,其中范围存在于特定百分比的单词的一个级别,另一个百分比的单词的第二个高一些的级别,最后一个百分比的单词的第三个级别,第三个级别等于第一个级别。再次,所有的范围属性可以是用户定义的或根据其他可能的参数建立的,目标是捕捉被分析的第一种语言的单词或单词串的有用关联。第二种语言的文档中的范围的位置可以取决于两个文档的单词数之间的比较。可以为范围位置目的使用的文档是用户定义的,例如新闻文章、图书的章节及其他任何由多个数据片段组成的可分离识别的内容单元。如果两个文档的单词数大致相等,那么第二种语言中的范围的位置大致与被分析的第一种语言的单词或单词串的位置一致。如果两个文档的单词数不相等,那么可以使用一个比率来正确定位范围的位置。例如,如果文档A由50个单词而文档B有100个单词,两个文档之间的比率为1∶2。文档A的中点为单词位置25。如果正在分析文档A中的单词25,那么,使用此中点(单词位置25)作为文档B中的范围中点的位置不是很有效,因为此位置(单词位置25)不是文档B的中点。相反,对应于分析文档A中的单词25的文档B中范围的中点可以通过手动设置文档B的中点或其他方法用两个文档之间的单词比率(即,25×2/1=50)来确定。通过查看单词或单词串在文档中的位置并注意如上所述落在范围内的所有的单词或单词串,本发明的数据库创建技术返回第二种语言的文档中的单词或单词串的可能集合,这些单词或单词串可以翻译被分析的第一个文档中的每个单词或单词串。当使用本发明的数据库创建技术时,可以作为可能翻译的单词和单词串的集合将随着关联频数提高而缩小。因此,在检查一对文档之后,本发明将创建一种语言的单词和单词串与第二种语言的单词或单词串的关联频数。在根据本发明检查一些成对的文档之后(且因此创建了较大的样本),跨语言关联数据库创建技术将对任何一个单词或单词串返回越来越高的关联频数。在处理足够大的样本之后,最高的关联频数产生可能的翻译;当然,能将关联频数视为准确翻译的最终的那个点是用户定义的,且可以使用其他解释性翻译技术处理(如在2001年3月16日提交的、标题为“内容处理的方法和装置”、编号为60/276,107的预申请中说明的技术,将其包含在此作为参考)。如上所示,本发明不仅检验单词,还检验单词串(多个单词)。如所述,单词串包括出现的所有标点及其他符号。在分析第一种语言的单个单词之后,本发明的数据库创建技术以递增的方式分析两个单词的单词串,然后三个单词的单词串等等。此技术使得将一种语言的单词或单词串翻译为其他语言的更短或更长的单词串(或单词)这样的翻译成为可能,而这种情况是经常发生的。如果单词或单词串在第一种语言的所有可用文档中仅出现一次,处理立即继续分析下一个单词或单词串,分析周期在那里再次开始。在已分析所有可用的对等或可比较文本中多次出现的第一种语言的所有单词或单词串后,分析停止。从某种意义上来说,可以聚合任何数量的文档且可以把它们当作用于查找单词或单词串的重现的一个文档。本质上,单词或单词串要是不重复,那只应在所有可用的对等和可比较文本中仅出现一次。另外,作为其他实施例,可能检查对应于每个单词和单词串的范围,而不管它是否在所有可用的可比较和对等文本中出现不止一次。作为另一个实施例,可以通过解析作为查询的部分的特定单词和单词串来创建数据库。当输入要翻译的单词和单词串时,本发明可以通过使用Web爬行器和其他设备在因特网上定位跨语言文本,并最终基于对查询的分析和足够的可用跨语言资料的缺少要求用户提供丢失的关联,来查找该单词或单词串在存储在存储器中的还未分析的跨语言文档中的多次出现。本发明因此以这样的方式工作从而取决于(在该单词串中)单词的正确定位来分析单词串,且以这样的方式工作从而决定单词的上下文选择和语法特质,如措词、样式或缩写。这些单词串关联对如在此所述提供翻译处理的双重重叠翻译技术也有用的。需特别注意,本发明适合当较大单词串的单词或单词串子集可靠地作为较大单词串的关联返回时的情况。本发明通过处理频数返回来确定这些模式。例如,适当的名字有时是完整提供的(如“JohnDoe”),有时用名或姓来作缩写(“John”或“Doe”),或以其他方式(“Mr.Doe”)缩写。由于本发明很可能返回更多的单个单词返回而不是单词串返回(即,更多的返回名或姓而不是完整姓名单词串“JohnDoe”),因为构成单词串的单词需要单独计数以及作为短语的部分来计数,应使用改变分级的机制。例如,在任何文档中,名字“JohnDoe”可能出现100次,而“John”单独或作为“JohnDoe”的部分可能出现120次,且“Doe”单独或作为“JohnDoe”的部分可能出现110次。正常的翻译返回(根据本发明)将使“John”比“Doe”分级更高,且两者的分级都高于单词串“JohnDoe”—在尝试分析单词串“JohnDoe”时。通过从子集(或单独返回)的出现次数中减去较大单词串的出现次数,可以实现正确的排序(虽然,当然,可用使用其他方法来获得类似结果)。因此,从120(单词“John”的出现次数)中减去100(“JohnDoe”的出现次数),“John”的修正返回是20。应用此分析的结果是100作为单词串“JohnDoe”(当分析并尝试翻译此单词串时)的出现次数,20作为单词“John”的出现次数,及10作为单词串“Doe”的出现次数,从而创建正确的关联。注意,此问题不限于适当的名字且通常发生在一般的短语和很多不同的上下文中。例如,每次将单词串“Iloveyou”翻译为它在另一种语言中的最频繁的单词串关联时,其他语言中对应于“love”的单词每次也独立地进行关联。另外,当单词串在被分析的其他文本中有不同的翻译时,单词“love”可能再次关联。这将扭曲该分析并对第一种语言中的“Iloveyou”的翻译返回第二种语言中的单词“love”而不是第二种语言中的“Iloveyou”。因此,再次,当对较大的串进行关联分级时,系统从所有子集关联的频数中减去较大的单词串关联的出现次数。这些概念亦在图1中反映出。另外,可以控制数据库忽略普通的单词,如“it”、“an”、“a”、“of”、“as”、“in”等等,或在对单词和单词串的关联频数进行计数时忽略任何普通单词。这将更加准确地反映真实关联频数,否则会被大量作为任何给定范围的部分的普通单词的出现所扭曲。这允许本发明的数据库创建技术能够防止普通单词没有多余的减法计算而扭曲分析。应注意如果这些或其他任何普通单词未从关联数据库中“减去”,它们最终将不会被认定为翻译,除非合适,因为所述在此以进一步细节说明的双重重叠处理将不会接受此翻译。应注意可以进行调整关联频数的其他计算,来确保准确反映出单词和单词串的普通出现次数。例如,当所分析的单词的范围重叠时,避免重复计数的调整是适当的。在这些情况下需要进行调整来产生更准确的关联频数。现在使用上述两个文档作为例子来说明如本发明所述的创建和补充跨概念数据库的方法和装置的实施例的例子—重建该表格如下表1文档A(语言A)文档B(语言B)XYZXWVYZXZAABBCCAAEEFFGGCC再次注意,虽然此实施例仅集中于在一个文档中重现的单词和单词串,这主要是为了说明的目的。将使用集合中的所有可用的对等和可比较文本来分析重现的单词和单词串。使用上面列出的两个文档(第一种语言的文档A和第二种语言的文档B),使用下面的数据库创建技术的步骤。步骤1首先,确定范围的大小和位置。如所示,大小和位置可用是用户定义的或用各种方法来近似。两个文档的单词计数大致相等(文档A中有10个单词,文档B中有8个单词),因此我们将定位范围的中点以和文档A中的单词或单词串的位置一致。(注意,由于文档之间的单词计数比率为80%,替换地可以使用分数4/5来确定范围的位置)。在此例中,范围大小或值等于3可以提供最好的结果来近似钟型曲线;范围将在文档的开头和末尾(+/-)1,且在中间(+/-)2。然而,如所示,范围(或用来确定范围的方法)完全是用户定义的。步骤2接下来,检查并对照文档A来检验文档A值的第一个单词,以确定该单词在文档中的出现次数。在此例中,文档A中的第一个单词是XX在文档A中出现了3次,在位置1、4和9。单词或单词串的位置编号就是该单词或单词串在文档中相对于其他单词的位置。因此,位置编号对应于文档中忽略标点的单词数,例如,如果文档中有10个单词,且单词“king”出现两次,单词“king”的位置编号仅是该单词(在10个单词中)出现的位置。因为单词X在文档中出现了不止一次,处理继续下面的步骤。如果单词X仅出现了一次,那么该单词将被跳过且处理继续下一个单词同时创建处理也继续进行。步骤3返回在位置1的第一种语言单词X的可能的第二种语言翻译对文档B应用该范围在文档B中产生位置1和2(1+/-1)的单词AA和BB(位于文档B中的位置1和2)。将所有可能的组合作为X的可能翻译或相关关联返回AA、BB和AABB(作为单词串组合)。因此,X1(单词X的第一次出现)返回AA、BB和AABB作为关联。步骤4分析单词X的下一个位置。此单词(X2)出现在位置4。由于位置4靠近文档的中心,范围(如上所确定)将在位置4的两边各有两个单词。通过查看文档B中的单词4并应用范围(+/-)2返回可能的关联,因此,返回单词4之前的两个单词以及单词4之后的两个单词。因此,返回在位置2、3、4、5、6的单词。这些位置对应于文档B中的单词BB、CC、AA、EE和FF。考虑这些单词(及它们组合的单词串)的所有前排列。因此,X2返回BB、CC、AA、EE、FF、BBCC、BBCCAA、BBCCAAEE、BBCCAAEEFF、CCAA、CCAAEE、CCAAEEFF、AAEE、AAEEFF和EEFF作为可能的关联。步骤5比较X的第一次出现(位置1)的返回及X的第二次出现(位置4)的返回并确定匹配。注意,包含出现在两个范围重叠处的同一单词和单词串的返回应被减少为一次出现。例如,在此例中,位置2上的单词是BB。X的第一次出现(当用该范围操作)和X的第二次出现(当用该范围操作)均返回这一单词。因为对X1和X2都返回这个相同的单词位置,该单词被计数为一次出现。然而,如果在重叠的范围内返回相同的单词,但是它来自不同的单词位置,那么该单词将被计数两次且记录该关联频数。在此情况,单词X的返回是AA,因为该单词(AA)出现在X1和X2的两个关联返回中。注意,出现在两个关联返回中的另一个单词是BB;然而,如上所述,因为该单词处于同一位置(因此是同一单词),范围对X的第一次出现和第二次出现的操作均达到该位置,可以忽略该单词。步骤6分析单词X的下一个位置(位置9)(X3)。应用范围(+/-)1(靠近文档末尾)返回在文档B的位置8、9和10的关联。由于文档B只有8个位置,结果被截断且只有位置8的单词作为X的可能值返回CC。(注意,替换地,用户定义的参数可以要求作为分析的部分最少要两个字符,这将返回位置8和下一个最近的位置(位置7的GG))。比较X3的返回和X1的返回,没有匹配,因此没有关联。步骤7分析单词X的下一个位置;然而,在文档A中已没有X的出现。此时对语言A的单词X和语言B的单词AA建立关联频数1。步骤8因为没有单词X的更多出现,处理递增一个单词并检验单词串。在此例中,被检查的单词串是“XY”,文档A中的头两个单词。对此短语应用在步骤2-7中说明的同一方法。步骤9通过查看文档A,我们看到,单词串XY只有一次出现。此时递增处理终止且不发生数据库创建。因为到达了终点,检查下一个单词(此处理在无论何时没有出现单词串的匹配时发生);在此情况,文档A的位置2的单词是“Y”。步骤10对单词“Y”应用步骤2-7的处理产生下面结果存在单词Y的两次出现(位置2和7),因此继续数据库创建处理(再次,如果Y仅在文档A中出现一次,则将不检查Y);位置2的范围大小为(+/-)1个单词;对文档B应用该范围(位置2,单词Y第一次出现的位置)返回在文档B中的位置1、2和3的结果;在那些返回位置的对应外语单词为AA、BB和CC;应用前排列对Y1产生下面的可能AA、BB、CC、AABB、AABBCC和BBCC;分析Y的下一个位置(位置7);位置7的范围的大小为(+/-)2个单词;对文档B(位置7)应用该范围返回位置5、6、7和8的结果EEFFGG和CC;所有的排列对Y2产生下面的可能EE、FF、GG、CC、EEFF、EEFFGG、EEFFGGCC、FFGG、FFGGCC和GGCC匹配来自Y1的结果,返回CC作为唯一的匹配;合并Y1和Y2的匹配产生CC作为Y的关联频数。步骤11范围末尾递增因为单词Y的唯一可能匹配(单词CC)出现在Y的第一次出现的范围末尾(CC出现在文档B中的位置3),该范围在第一次出现处递增1返回位置1、2、3和4AA、BB、CC和AA;或下面的前排列AA、BB、CC、AABB、AABBCC、AABBCCAA、BBCC、BBCCAA和CCAA。应用此结果仍然产生CC作为Y的可能翻译。注意,递增该范围是因为返回的匹配在第一次出现的范围的末尾(单词“Y”的基出现);无论何时出现此模式,范围末尾递增将作为子步骤(或替换步骤)发生来确保完整性。步骤12由于文档A中没有更多“Y”的出现存在,此分析在文档A中递增一个单词并检查单词串“YZ”(在单词Y之后的下一个单词)。递增到下一个串(YZ)并重复此处理产生下面的结果单词串YZ在文档A中出现两次位置2和7。在第一次出现(YZ1)处的YZ的可能性为AA、BB、CC、AABB、AABBCC、BBCC;(注意,替换地,可以定义范围参数包括当被分析的语言A的单词串变长时扩展范围大小)。在第二次出现(YZ2)处YZ的可能性是EE、FF、GG、CC、EEFF、EEFFGG、EEFFGGCC、FFGG、FFGGCC和GGCC;匹配产生CC作为单词串YZ的可能关联;扩展范围(范围末尾递增)对YZ产生下面的可能性AA、BB、CC、AABB、AABBCC、AABBCCAA、BBCC、BBCCAA和CCAA。应用该结果仍然产生CC作为单词串YZ的关联频数。步骤13由于文档A中不存在更多的“YZ”的出现,此分析在文档A中递增一个单词并检查单词串“YZX”(在单词Z后的下一个单词是在文档A中的位置3)。递增到下一个单词串(YZX)并重复该处理(YZX在文档A中出现两次)产生下面结果对YZX的第一次出现的返回在位置2、3、4和5;排列为BB、CC、AA、EE、BBCC、BBCCAA、BBCCAAEE、CCAA、CCAAEE和AAEE;对YZX的第二次出现的返回在位置5、6、7和8;排列为EE、FF、GG、CC、EEFF、EEFFGG、EEFFGGCC、FFGG、FFGGCC和GGCC。比较两者产生CC作为单词串YZX的关联频数;再次,注意忽略EE作为可能关联的返回,因为它在两个实例中作为同一单词出现(即,处在同一位置)。步骤14递增到下一个单词串(YZXW)仅找到一次出现;因此单词串数据库创建完成且检查下一个单词Z(文档A中的位置3)。步骤15对Z应用上述步骤,它在文档A中出现3次,产生下面结果对Z1的返回是AA、BB、CC、AA、EE、AABB、AABBCC、AABBCCAA、AABBCCAAEE、BBCC、BBCCAA、BBCCAAEE、CCAA、CCAAEE和AAEE;对Z2的返回是FF、GG、CC、FFGG、FFGGCC和GGCC;比较Z1和Z2产生CC作为Z的关联频数;Z3(位置10)在定义的范围内没有返回。然而,如果我们增加参数,对语言A的每个单词或单词串至少有一个返回,则对Z的返回将为CC。比较对Z3和Z1的返回产生CC作为单词Z的关联频数。然而,此并不对关联计数,因为单词位置8的CC已经在上述Z2的关联中确定。当重叠范围会使得处理对一次出现进行双重计数时,系统可以降低该关联频数以更准确地反映真实出现的次数。步骤16递增到下一个单词串产生单词串ZX,它在文档A中出现两次。对ZX应用上述步骤产生下面的结果对ZX1的返回为BB、CC、AA、EE、FF、BBCC、BBCCAA、BBCCAAEE、BBCCAAEEFF、CCAA、CCAAEE、CCAAEEFF、AAEE、AAEEFF和EEFF。对ZX2的返回为FF、GG、CC、FFGG、FFGGCC和GGCC;比较这些返回,产生单词串ZX和CC之间的关联。步骤17递增,下一个短语为ZXW。这仅出现一次,因此检查文档A中的下一个单词(X)。步骤18单词X已在第一个位置检查过。然而,单词X的第二个位置,相对于其他文档,还未被检查过以搜索对单词X的可能返回。因此,现在操作(在第二个位置的)单词X,如X的第一次出现那样,在文档中前进对位置4的X的返回产生BB、CC、AA、EE、FF、BB、CC、BBCCAA、BBCCAAEE、BBCCAAEEFF、CCAA、CCAAEE、CCAAEEFF、AAEE、AAEEFF和EEFF。对位置9的X的返回产生CC。比较位置9的结果和位置4的结果得到CC作为可能单词X的匹配且给出关联频数。步骤19递增到下一个单词串(由于,向前查找文档,没有更多X的出现以和X的第二次出现比较)产生单词串XW。然而,此单词串并没有在文档A中出现多次,因此处理进而检查下一个单词(W)。单词“W”在文档A中仅出现一次,因此发生递增—并非到下一个单词串,因为单词“W”仅出现一次,而是到文档A中的下一个单词-“V”。单词“V”仅在文档A中出现一次,因此检查下一个单词(Y)。单词“Y”并不在文档A中高于位置7的任何其他位置出现,因此检查下一个单词(Z)。单词“Z”在位置8之后于位置10再次出现。步骤20对单词Z的第二次出现应用上述处理产生下面结果对位置8的Z的返回产生GG、CC和GGCC对位置10的Z的返回产生CC;比较位置10和位置8的结果产生没有单词Z的关联。再次,返回单词CC作为可能的关联;然而,由于C表示通过分析位置8的Z和位置10的Z达到的同一单词位置,忽略该关联。步骤21递增一个单词产生单词串ZX;此单词串并未出现在文档A中任何更(往前)的位置,因此处理在文档A中的下一个单词-“X”重新开始。单词X并未出现在文档A中任何更(往前)的位置,因此处理重新开始。然而,已到达文档A的末尾且此分析终止。步骤22合并上面的所有结果并如所述减去重复,将最终的关联频数制表。显然,没有足够的数据来对文档A中的单词和单词串返回明确的结果。随着检查包含有上面检查的那些关联的单词和单词串的更多文档配对,关联频数将统计上变得更加可靠,以使得语言A和语言B之间的单词或单词串能构建单词和单词串的可能翻译的强关联。程序1,在计算机程序清单附录中给出,是实现数据库创建方法实施例的例子程序。程序1可以在现有技术中已知类型的计算机系统中执行。如所示,此实施例表示用来创建关联的方法。本发明的方法不必限制于语言翻译。广义来说,这些方法将应用于同一概念可以被关联的任何两种表达,因为本质上外语翻译仅存在于由不同单词或单词串表示的同一概念的成对关联。因此,本发明可以应用于作为概念存在的关联数据、声音、音乐、视频或任何广泛的范围概念,包括可以表示任何感官(声音、视觉、嗅觉等等)体验的概念。所要求的是本发明分析两个实例(对语言翻译,实施例为文档;对音乐,实施例可以为乐谱的数字表示以及表示同一音乐的声音频率,等等)。在另一个实施例中,在跨语言关联学习中可以包含技术中众所周知的特定的基于规则的算法来处理特定类型的文本,这些文本为了上下文和意义的目的可以互换(且有时可能有无限的衍生),如名称、编号和日期。另外,如果可用的跨语言文档不能提供统计上显著的翻译结果,用户可以检查翻译的可能选择及其他关联并确认且对适当的选择进行分级。如所述,随着分析更多翻译配对文档的关联频数,单词和单词串之间的关联频数会变得更强。当检查更多语言的配对文档时,本发明的方法和装置将开始基于那些和第三种语言有共同的关联但彼此不直接关联的语言,在语言配对之间填充“推论关联”。另外,当存在多种语言的已翻译文档,可以跨几种语言分析共同关联返回,直到在它们之间只有一种共同关联存在,那就是翻译。程序2,在计算机程序清单附录中给出,是这样的计算机程序的例子,该程序在和现有技术中已知类型的计算机系统一起操作时,提供在本发明的实施例中使用这些语言的数据的方法。同样,如果现有状态的表达被人工地归结为和另一状态的数据点有特定关联并在数据库中分类存储,那两种状态之间的转换将是可能的。例如,如果将以某种形式、状态或语言表示的每个“概念”和电磁波(音调)关联,那么它将创建该概念的“电磁表示”。一旦给定数量的概念已用相应的电磁表示来编码,那么数据(以概念的形状)可以被翻译为电磁波并马上通过现有的电信基础结构发送。当电磁波到达目标机器时,该机器将合成这些波为单独的成分并且,给定关联(以及排序指令、使用在此所述的双重重叠方法和/或其他可能的方法)时,提供由电磁表示来表示的单独概念。概念转换方法和装置本发明的另一方面涉及提供通过包含第一种状态、形式或语言的数据的第一个文档创建包含第二种状态、形式或语言的数据的第二个文档,使得最终第一个和第二个文档本质上表示相同的概念或信息的方法和装置,且其中所述方法和装置包括使用跨概念关联数据库。该翻译方法所有的实施都例使用双重重叠方法来获得概念从一种状态到另一种状态的准确翻译。相反,现有技术的翻译设备集中于单个单词的翻译或使用特殊的基于规则的代码来帮助从第一种语言到第二种语言的翻译。本发明使用重叠方法使得第二种语言的单词和单词串有机地连接在一起,并以在第二种语言中写出那些单词和短语的准确方式成为在它们正确上下文中的准确翻译。在本发明的实施例中,组合数据库创建方法及重叠方法以提供准确的语言翻译。语言可以是任何类型的转换且不一定限制于口头/书面语言。例如,转换可以包括计算机语言、特定的数据编码,如ASCII,等等。该数据库是动态的,即,翻译系统后面的循环使用原先输入的内容,从而数据库随着输入到翻译系统中的内容而增长。本发明的首选实施例使用这样的计算设备,如现有技术中已有类型的个人计算机系统。然而,系统不一定使用这样的计算设备并可以通过其他方法立即实现,包括手动创建数据库和翻译方法。本发明可以在至少包含显示方法、输入方法和输出方法及处理器的普通计算机系统中使用。显示方法可以是现有技术中的任何可用方法,如阴极射线终端、液晶显示、平板显示等等。处理器方法也可以是现有技术中的任何可用方法,并可以使用在计算环境中以使得提供这些方法允许计算机实现本发明。最后,使用输入方法来输入文档以构建跨关联数据库;如上所述,转换为数字形式的特定输入方法可以取决于用户的需要而不同。通过双重重叠方法进行手动数据库创建和翻译下面说明根据本发明将文档从第一种语言翻译到第二种语言的方法和装置的实施例的例子,其中通过询问用户单词和单词串的翻译来形成跨语言数据库,也自动地使用双重重叠方法来产生片段翻译。为了说明此首选实施例,使用这样的例子,其中英语的数据被翻译为希伯来语。这些选择仅用于说明的目的且不限制第一种和第二种语言的选择。根据本发明的首选实施例,计算机系统创建从英语到希伯来语的翻译之间的关联数据库。翻译方法至少包括下面的步骤首先,输入英语的数据到计算机系统中。其次,首先逐单词检查所有的英语单词输入。数据库将返回希伯来语的已知单词翻译。如果数据库中未包含该翻译,那么计算机系统将以某种方式操作来询问用户输入适当的翻译。因此,如果数据库不知道输入的英语单词的希伯来语等价,计算机将要求用户提供适当的希伯来语等价。然后用户将返回翻译并输入所述翻译到数据库中。在后面的使用中,计算机系统将以某种方式操作数据库,以使得依靠用户早先的输入来得到翻译。因此,在第二个步骤中,检查处于已解析状态的输入数据—如,逐单词—且(依靠数据库的操作)返回适当的翻译或将其输入到数据库中。第三,以某种方式检查输入数据以使得递增已解析的片段。例如,如果首先在逐单词的基础上解析了数据,本发明的翻译方法接下来通过评估两个单词的串检查输入数据。再次,以某种类似于上述的方式,如果已知,则数据库返回两个单词的串的翻译;如果未知,则翻译系统询问用户输入所有可能的两个单词的串的适当翻译。然后在数据库中存储所有重叠的2单词片段。例如,如果单词串包含4个单词,那么数据库检查在存储器中是否有下面的组合的翻译1,22,3和3,4。如果否,则向用户询问。注意,只有特定编码的两个单词的串的翻译将作为准确翻译返回,即使数据库依靠上面的第二步包含每个单词定义。第四,如果两个重叠的两单词英语串的希伯来语翻译有重叠的单词(或多个单词),系统以某种方式工作来组合重叠的片段。重叠片段中的冗余希伯来语片段将被排除以提供通过合并两个重叠的英语串(并排除英语重叠中的冗余)所创建的三单词英语串的连贯翻译。从1到无限次步骤(n)重复上述步骤以提供适当的翻译。翻译方法通过校验一致的串自动地工作,所述串通过重叠连接两种语言的编码单词块。自动确认在两种语言间一致的重叠连接提供一旦数据库达到临界大小就能在两种语言之间做出有很高的精度翻译的语言网络。作为例子,考虑英语短语“Iwanttobuyacar”。在本发明的方法工作时,此短语将被输入到操作数据库的计算机中。计算机确定数据库是否包含下面单词的希伯来语等价“I”、“want”、“to”、“buy”、“a”和“car”。如果存在这样的等价,则计算机将返回希伯来语等价。如果不存在这样的等价,则计算机将询问用户让其提供适当的希伯来语翻译,并存储这样的翻译以便将来使用。接下来,计算机将以重叠的方式解析句子为两个单词的片段“Iwant”、“wantto”、“tobuy”、“buya”和“acar”。计算机将返回这些片段的希伯来语等价(即,“Iwant”的希伯来语等价等等);如果不存在这样的希伯来语等价,则计算机将询问用户让其提供适当的希伯来语翻译,并存储这样的翻译以便将来使用。接下来本发明将检查三个单词的片段“Iwantto”、“wanttobuy”、“tobuya”和“buyacar”。此时本发明在处理中尝试组合每一对其两单词英语翻译重叠并组合得到每三个单词的英语翻译查询(如,“Iwant”和“wantto”组合构成“Iwantto”)的希伯来语翻译。如果多个希伯来语片段有连接它们的共同的重叠,翻译方法自动地确认三个单词的英语单词串到希伯来语的翻译而不用任何用户干预。如果希伯来语片段没有重叠和组合,则向用户询问准确的翻译。在尝试得到三个单词的英语串的适当翻译之后,继续处理四个及以上单词的串,尝试通过跨语言重叠自动地解析翻译的组合,直到被检查的片段(在此情况,为整个短语“Iwanttobuyacar”)完成。本发明的方法在通过此解析之后比较返回的翻译等价,消除重叠的片段中的冗余,并向用户输出翻译的短语。通过关联数据库和双重重叠方法进行文档翻译作为另一个首选实施例,本发明可以通过使用上述的跨语言数据库翻译第一种语言的文档为第二种语言的文档,以提供文档中的单词和单词串的单词串翻译,并使用上述的跨语言双重重叠方法组合第二种语言的重叠的单词串,以提供文档的翻译。例如,考虑数据库能够访问足够多的跨语言文档来解析下述以英语输入的句子的成分,并试图将其翻译为希伯来语“Inadditiontomyneedtobelovedbyallthegirlsintown,IalwayswantedtobeknownasthebestplayertoeverplayontheNewYorkstatebasketballteam.”。通过上述处理,处理方法可以确定短语“Inadditiontomyneedtobelovedbyallthegirls”是来自源文档的开始于源文档的第一个单词并存在于数据库中的最长单词串。它在数据库中和希伯来语单词串“benosafltzorechshelilihiotahuvalyedaykolhabahurot”关联。然后处理使用上述方法确定下面的翻译,即,来自要翻译的文本(且存在于数据库中)的最长英语单词串,此单词串和前面已识别的英语单词串有一个单词(或替换地有多个单词)重叠,且那些重叠的英语单词串的两个希伯来语翻译也有重叠的片段“lovedbyallthegirlsintown”翻译为“ahuvalyedaykolhabahurotbuir”,“thegirlsintown,Ialwayswantedtobeknown”翻译为“Habahurotbuir,tamidratzitylihiotyahua”;“Ialwayswantedtobeknownasthebestplayer”翻译为“tamidratzitylihiotyahuabettorhasahkanhachitov”;且“thebestplayertoeverplayontheNewYorkstatebasketballteam”翻译为“hasahkanhachitovshhaypaamsihekbekvutzathakadursalshelmedinatnewyork”。有数据库的这些返回,处理将以某种方式工作来比较重叠的单词和单词串并消除冗余。因此,“Inadditiontomyneedtobelovedbyallthegirls”翻译为“benosafltzorechshelilihiotahuvalyedaykolhabahurot”,且“lovedbyallthegirlsintown”翻译为“ahuvalyedaykolhabahurotbuir”。使用本发明的方法,系统将取英语片段“Inadditiontomyneedtobelovedbyallthegirls”和“lovedbyallthegirlsintown”并返回希伯来语片段“benosafltzorechshelilihiotahuvalyedaykolhabahurot”和“ahuvalyedaykolhabahurotbuir”并确定重叠。在英语中,这些短语为“Inadditiontomyneedtobelovedbyallthegirls”和“lovedbyallthegirlsintown”。去除重叠得到“Inadditiontomyneedtobelovedbyallthegirlsintown”。在希伯来语中,这些短语为“benosafltzorechshelilihiotahuvalyedaykolhabahurot”和“ahuvalyedaykolhabahurotbuir”。去除重叠得到“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir”。然后本发明处理下一个已解析的片段以继续此过程。在此例中,处理过程操作短语“thegirlsintown,Ialwayswantedtobeknown”。系统解析英语片段“Inadditiontomyneedtobelovedbyallthegirlsintown”和新的英语单词集合“thegirlsintown,Ialwayswantedtobeknown”。希伯来语的对应单词集合为“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir”及“habahurotbuir,tamidratzitylihiotyahua”。在英语中去除重叠的操作如下“Inadditiontomyneedtobelovedbyallthegirlsintown”和“thegirlsintown,Ialwayswantedtobeknown”成为“Inadditiontomyneedtobelovedbyallthegirlsintown,Ialwayswantedtobeknown”。在希伯来语中,重叠处理的操作如下“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir”和“habahurotbuir,tamidratzitylihiotyahua”产生“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir,tamidratzitylihiotyahua”。本发明对要翻译的文档中余下的单词和单词串继续进行此类操作。因此,在首选实施例的例子中,下一个英语单词串为“Inadditiontomyneedtobelovedbyallthegirlsintown,Ialwayswantedtobeknown”和“Ialwayswantedtobeknownasthebestplayer”。由数据库对这些短语返回的希伯来语翻译为“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir,tamidratzitylihiotyahua”和“tamidratzitylihiotyahuabettorhasahkanhachitov”。去除英语重叠得到“Inadditiontomyneedtobelovedbyallthegirlsintown,Ialwayswantedtobeknownasthebestplayer”。去除希伯来语重叠得到“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir,tamidratzitylihiotyahuabettorhasahkanhachitov”。继续此处理,下一个单词串是“Inadditiontomyneedtobelovedbyallthegirlsintown,Ialwayswantedtobeknownasthebestplayer”和“thebestplayertoeverplayontheNewYorkstatebasketballteam”。对应的希伯来语短语为“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir,tamidratzitylihiotyahuabettorhasahkanhachitov”和“hasahkanhachitovshhaypaamsihekbekvutzathakadursalshelmedinatnewyork”。去除英语重叠得到“Inadditiontomyneedtobelovedbyallthegirlsintown,IalwayswantedtobeknownasthebestplayertoeverplayontheNewYorkstatebasketballteam”。去除希伯来语重叠得到“benosafltzorechshelilihiotahuvalyedaykolhabahurotbuir,tamidratzitylihiotyahuabettorhasahkanhachitovshhaypaamsihekbekvutzathakadursalshelmedinatnewyork”,这是需要翻译的文档的译文。完成此处理时,本发明返回已翻译的最终文本并输出该文本。应注意,该返回是数据库根据上述处理返回重叠关联的最终结果。此系统,通过该处理,最终将不接受没有通过重叠自然地和连续的第二种语言片段连接的第二种语言的返回。若任何希伯来语返回和连续的希伯来语单词串关联没有精确的重叠,它会被拒绝并用和连续的希伯来语单词串重叠的希伯来语单词串关联来代替。程序3,在计算机程序清单附录中给出,是实现使用双重重叠方法进行手动数据库创建和翻译的实施例的程序的例子。程序3可以在现有技术中已知类型的计算机系统中执行。上述实施例使用跨语言关联数据库和跨语言双重重叠翻译方法的组合,它还有其他的可能应用,以提高尝试将信息从一种状态转换到另一种等价的状态的现有技术的质量,如现有技术中存在的语音识别软件及OCR扫描设备。可以用本发明的翻译方法来检查这些技术的系统的结果。当翻译不存在从而测产生了错误时,可以向用户告警并作出询问,或者可以对系统编程来查找数据库中对不重叠的翻译接近的其他选择,这些选择将产生重叠的翻译。当然,所有对用户的返回都能转换回原来的语言。本发明的另一个实施例提供在一种语言中创建关联数据库的方法和装置以及使用关联数据库向用户提出的查询或问题提供答案的方法和系统。在此实施例中,关联数据库可以组织并存储信息,以便能够确定和分析单词和单词串之间的关联。关联程序可以实现本发明的一些方法且可以用来构建本发明的数据库并分析存储在数据库中的信息以确定单词和单词串之间的关联。图3展示计算机系统200的存储器208,在其中存储了由处理器202访问的智能应用302、关联程序304、数据库306和操作系统308。关联程序304可以是独立的程序或可以构成集成在智能应用中的部分。关联程序304可以分析数据库306来确定单词关联以响应来自智能应用302的查询,或响应直接由用户通过输入设备提交的查询。所述系统和方法这样工作输入到系统中的文档的解析文本并创建频数关联数据库,在其中基于例如特定片段的出现频数和相对于文档的其他片段的位置相互关联已解析的文本片段。已解析的文本的片段可以包括单词和单词串。可以将本发明使用的文档存储在文档数据库中以有助于文档的访问、解析和分析。文档中经常彼此接近地出现的单词和单词串可以用在允许用户询问系统来回答问题或执行动作的人工智能或智能应用中。对智能应用使用本发明的关联数据库的目的是确定由智能应用选择的两个或多个单词或单词串之间的共有的第三单词或单词串的关联。用户可以将文档数据库中的范围定义为接近每个所选单词和/或单词串的每次出现的任何数量的单词和/或单词串。然后系统搜索范围共有的单词和/或单词串,这称为共有的第三单词或单词串。每个所选单词或单词串的范围内的共有的第三单词或单词串的出现频数可以存储在频数关联数据库中,如表3和4所示。替换地,在文档数据库中重现的单词的出现位置和频数可以存储在重现单词和单词串数据库中,该数据库在此亦称为重现数据库,表5中展示了它的一个例子。使用这些数据库,关联程序304可以建立分级最高的第三单词和单词串关系,此关系由智能应用202基于用户定义的权重或其他准则选择的两个或多个单词或单词串共享。在用户定义的范围内构建关联数据库所揭示的是构建一种在此称为频数关联数据库的关联数据库的方法,此数据库可以应用于一种语言的文档,以基于它们在文本中的彼此接近构建相关单词和单词串的数据库。频数关联数据库的一个例子在表3中展示。所述方法包括a.在“文档数据库”中聚集一种语言的大量文本,文本量越大越好。b.搜索每个单词或单词串在文档数据库中的多次出现。c.在要分析的单词或单词串的每一方建立用户定义数量的单词或单词串。这将作为范围使用。除了将范围定义为特定数量的单词,可以按用户对特定应用的定义将范围定义得宽一些(单词或单词串出现的特定文本中所有单词)或窄一些(在接近所分析的单词或单词串的确切位置的特定大小的单词串)。d.确定在正被分析的所选单词或单词串周围的范围中出现的每个单词和单词串频数,且,如果需要,它们对所选单词或单词串的接近程度。下面是在一种语言的大量文档之间构建关联的例子。句子1和句子2,如表2所示,它们是文档数据库的很多句子中的两个,当全面分析整个文本库时,所有的结果将被加到频数表中表2句子1“IwenttothedoctorandIwassneezingalotandhetoldmethatthecoldandthe第一种语言uaregoingaroundlikecrazyandIshouldrest,keeptakingVitaminC,andalittlechickensoupwouldn’thurt”句子2“Asadoctor,I’mconstantlyseeingsneezing,redeyedpatientsaskingwhattheycandototreatthe第一种语言u,towhichIreply,“theonlythingsthatreallyworkarerestandtime”系统将查找重现的单词或单词串。在两个句子之间唯一重现的单词和单词串是“I”、“to”、“the”、“doctor”、“and”、“sneezing”、“a”、“that”、“第一种语言u”、“are”、“rest”。如编号10/024,473的美国专利申请所示,系统可以对特定应用识别并丢弃普通单词,如“I”、“a”、“to”等等。然而,有时取决于对系统的特定应用的目标,那些普通单词将被考虑并包括在数据库中。如果丢弃了普通单词,将剩下“Doctor”、“sneezing”、“第一种语言u”和“rest”。如果范围定义为包括,例如,每一边最多30个单词,那么系统将记录每个单词和单词串在每个这些单词的30个单词内的出现频数。另外,系统也可以注意每个单词或单词串对被分析的单词或单词串的接近程度。由于每个这些单词都出现在两个句子中的每个或其他单词的30个单词范围内,如表3所示,每个单词将对每个其他单词有频数1,这展示了频数关联数据库的一个实施例表3单词/单词串关联单词/单词串频数doctorsneezing1第一种语言u1rest1Sneezingdoctor1第一种语言u1rest1第一种语言usneezing1doctor1rest1Restsneezing1doctor1第一种语言u1除了注意出现在被分析的单词和单词串的范围内的任何地方的单词和单词串的频数,也可以基于出现在离单词或单词串被分析的确切地有X单词远的位置的单词和单词串的频数构建关联数据库。在这样的情况下,范围将由应用的用户较窄地定义为对被分析的单词或单词串有确切的接近程度的特定大小的一个单词或一个单词串。例如,系统可以分析文档数据库中的可用文档从而确定它们包括短语“gotothegame”10,000次并可能发现“gotothegame”在“Jets”的20个单词的范围内出现87次。另外,系统可能确定“gotothegame”在单词“Jets”前面正好7个单词的位置出现了8次(从单词串的第一个单词“go”开始计数)。也可以基于它们之间的单词数记录单词和单词串的重现模式的任何组合。例如,数据库可以记录数据库中其中“Jets”出现在“gotothegame”的3个单词之前,当“tickets”出现在“gotothegame”的9个单词之后的句子数。该模式可能出现3次且可以由应用使用该单词模式在文本中的频数,该应用将推断概念的意义来帮助对用户提出的问题提供答案,或帮助执行用户做出的请求。基于表2的句子1和句子2,可以产生如表4所示的频数关联数据库。表4单词/单词串关联的单词/单词串频数确切地在4个单词之后的频数doctorsneezing11第一种语言ue10rest10sneezingdoctor10第一种语言u10rest10第一种语言usneezing10doctor10rest10restsneezing10doctor10第一种语言u10如表4所示,句子1和句子2的范围内重现的单词中,只有一个单词“sneezing”两次出现在被检查的单词中的一个确切地4个单词之后。这些表说明可以使用一系列较窄定义的范围基于由它们之间的单词数衡量的彼此接近程度单独产生文本中确切的重现单词模式。如果使用上述方法构建上述可用文本中的所有重现的单词模式之间的所有接近和频数关系的数据库,则可能需要大量的计算。作为这样的完整处理的结果构建的很多关系可能对应用来说都不需要。下面的方法包括编制重现单词串的索引,以避免用不到上面的处理。下面的索引处理可以用作上述用于自动地确定频数和接近关联的方法的替换处理,并基于特定单词或单词串在范围内的位置执行如上所述的一般范围频数分析和确切模式分析。本发明的这个实施例是构建重现单词和单词串数据库(或重现数据库)的方法,它包括文档数据库中的每个重现单词和单词串的位置,该方法如下1.搜索所有单词和单词串在可用文本中的重现。2.通过记录它在每个文档中出现的位置,在数据库中记录有多次出现的每个单词和单词串的“位置”,例如,通过识别串中的第一个单词的单词数,及文档数据库中的文档编号。另外,可以只存储单词或单词串所处的文档在文档数据库中的文档编号。在此情况,可以在响应查询时确定单词或单词串的位置。表5为重现数据库中的条目的例子。表5单词或单词串频数和位置“kidsloveawarmhug”20次(单词58/文档1678;单词45/文档560;单词187/文档45,231;单词689/文档123;...)“kidsloveicecream”873次(单词165/文档129;单词231/文档764,907;单词652/文档4,501;...)“kidsloveawarmhugbeforegoingtobed”12次(单词58/文档1678;单词45/文档560;单词187/文档45,231;...)“kidsloveicecreambeforegoingtobed”10次(单词765/文档129;单词231/文档764,907;...)“kidsstayinguplatebeforegoingtobed”17次(单词23/文档561;单词431/文档76,431;...)“beforegoingtobed”684次(单词188/文档28;单词50/文档560;单词769/文档129;单词436文档76,431;...)如所示,在文档数据库中出现不止一次的单词或单词串每次出现将被增加到频数计数中,且通过指定文档中的单词数位置和分配用于识别它在其中出现的文档的编号,或通过使用单词或单词串在文档数据库中的位置的任何其他标识符来标记其位置。如果对文档数据库中的所有文档完全并全面地生成了(包括单词数位置和文档编号)重现数据库,位置信息允许系统如上述计算所生成的任何一般频数关系,或所生成的任何特定单词模式频数关系。另外,如果重现数据库还未建立,系统可以对两个或多个范围即时执行频数分析。当系统通过分析文档数据库中的文档响应查询时,可以包括还未在重现数据库中的任何单词或单词串来直接补充重现数据库的分析。在通过直接分析文档数据库中的文档获取的信息已用于对其产生的特定任务之后,可以将信息存储在重现数据库中以便将来使用。系统是否使用重现数据库构建频数分析,或那些关系是否是即时创建的,结果都是单词和单词串关联的数据库,可以对其应用智能应用。现引用图3,在共有频数分析处理中,智能应用302可以通过关联程序304用两个或多个单词或单词串查询频数关联数据库或重现数据库,以建立和所提供的单词串的部分或所有频繁关联的其他第三单词或单词串。系统在执行共有频数分析(CFA)可以使用两种不同的方法或为1)独立共有频数分析,或为2)相关共有频数分析。另外,系统可以在使用两个处理之一之后通过扩展它们附加的轮次或多个轮次,或通过组合任何CFA的结果和/或片段用于进一步的CFA来进行进一步的统计分析。独立共有频数分析(ICFA)当智能应用302向关联程序304提供两个或多个单词和/单词串用于CFA时,系统可以使用本发明的关联数据库识别和所提供的单词频繁相关的所有单词和单词串。然后系统可以按各种用户定义的方法使用所提供的单词和/或单词串之间的共有关联。例如,系统可以通过加(或乘或任何其他用户定义的加权)所提供的单词和/或单词串在频数关联数据库中的普通、或第三单词或单词串关联频数来识别分级最高的共有关联。作为用户定义参数的另一个例子,可能需要所提供的单词和/或单词串的所有表上的最小频数(由总分级,原始数或任何其他度量衡量)。在使用重现数据库条目的例子中,系统可以确定“icecream”和“kidslove”在所有可用的文档中的用户定义范围内的频数作为一种分析,且系统可以记录“icecream”和“beforegoingtobed”一起出现的频数。每个独立关系的频数然后可以由将向彼此给出相对值的应用使用。这将基于“icecream”的频数在“kidslove”频数表和“beforegoingtobed”频数表两者在上分级有多高(根据用户定义为绝对或相对分级),或(如“icecream”)和单词或单词串(如,“kidslove”)一起出现相对于单词串(如“kidslove”)出现的次数总数的关联次数百分比。再次,制作“kidslove”和“beforegoingtobed”的频数表,基于它们和所选的单词串“kidslove”和“beforegoingtobed”的接近程度对第三单词或单词串在定义的范围内的出现进行分级。基于用户定义的值,此方法在分析“icecream”之后可以通过(基于用户定义的范围或应用的接近程度需求)在“kidslove”的频数表上定位它以搜索相关的频数并在“beforegoingtobed”的频数表上定位“awarmhug”来分析“awarmhug”。将比较(用户定义的)两个频数表上的所有其他频数关联,例如“stayinguplate”,并基于组合相关频数的用户定义值通过两个表来打分。将基于每个频数关联的用户定义权重通过系统产生分级最高的单词串。此分析的结果可能是系统将识别,虽然“kidslove”“icecream”胜过“warmhugs”,“kidslovewarmhugs”胜过“hidsloveicecaream”“beforegoingtobed”。另外一个例子是,如果向系统提供单词“kangaroos”及单词和单词串“find”和“inAmerica”用于独立共有频数分析,则用表6展示基于文档数据库中的文档编制出的频数表。表6关联“Australia”“theZoo”“NewZealand”“kangaroos”21,0007,0001,000“find”1,0002,000500“inAmerica”3005,000100总数22,30014,00016,00基于原始的累计关联总数,“Australia”分级最高。然而,用户定义的参数可以对相关的频数加权。一种可能方法的例子可以是最少出现的关联打分为1,然后较高关联的频数打分为该数量的倍数。表7“Australia”“theZoo”“NewZealand”“kangaroos”21(最低数的21倍)7(最低数的7倍)1(最低数)“wherecan241Ifind”“inAmerica”3501总数26613关联之间的相对权重展示出Zoo如何基于上述用户定义的参数得到这样的结果。通过乘特定的单词或单词串和每个查询关联的次数以对共有关联之间的相对平衡给出权重,可以获得类似的结果。在我们的例子中,结果将返回“theZoo”1.“theZoo”7,000×2,000×5,000=70,000,000,0002.“Australia”21,000×1,000×300=6,100,000,0003.“NewZealand”1,000×500×100=50,000,000可以使用其他用户定义的准则来分级和选择在两个或多个所提供的单词和/或单词串之间共有的关联。这可以包括对属于特定类别的特定关联加上高于其他类别的权重。例如,应用可以对“where?”问题(如“wherecanyoufindkangaroosinAmerica”)赋予“位置”关联(如,“inAmerica”)较高的值。相关普通频率分析(RCFA)除了找出两个或多个所提供的单词和/或单词串之间共有的独立关联,另一个实施例可以试图识别出现在用户定义的范围内单词和/或单词串在只包含两个或多个被分析的单词或单词串的那些文档中的频繁出现。本实施例使用下面的步骤a.从数据库中定位对两个或多个所提供的单词和/或单词串共有的所有文档编号。b.比较在所有提供的单词和/或单词串周围的用户定义范围中的每个单词和单词串并记录范围内所有重现的单词和单词串的频数。再次,可以缩小用户定义的范围并只包括和所提供的单词或单词串有特定接近程度的重现单词或单词串。作为例子,假设向系统提供两个单词串“kidslove”和“beforegoingtobed”以进行RCFA。如果数据库已包含对应于文档数据库中的文档内的短语的以下条目“kidsloveawarmhug”20次“kidsloveicecream”873次“kidsloveawarmhugbeforegoingtobed”12次“kidsloveicecreambeforegoingtobed”10次“kidslovestayinguplatebeforegoingtobed”17次“beforegoingtobed”684次重现数据库可以控制系统处理文档数据库中包含“kidslove”和“beforegoingtobed”的文档,因为它们有同样的文档数和它们关联。另外,如果需要,系统可以只定位那些文档,其中单词串在彼此的用户定义数量的单词之内,或互相之间有任何其他用户定义的限制接近程度。一旦系统已识别文档数据库中在对“beforegoingtobed”的指定接近程度之内包含“Kidslove”的所有文档,系统可以构建所有在用户定义范围内重现的单词和单词串的频数表。基于上述单词和单词串数据库的有限样本,我们知道“icecream”的频数至少为10,“stayingup”的频数至少为17,而“awarmhug”的频数至少为12。所有这些频数可能是高的多的,因为它们可以出现在靠近“kidslove”和“beforegoingtobed”的同一文本中,且并不仅仅是和它们直接邻接(如“kidsloveicecreamandothersweetsbeforegoingtobed”)。对查询“whatdokidslovebeforegoingtobed?”的响应有很多可能的“正确”答案。然而,大量文档反映各种代表性的观点,各较高的频数将反映对该问题的普遍观点,而较低频数将反映存在着的其他观点。例如,“hotshower”可能会在“kidslove”和“beforegoingtobed”的范围内出现3次,它表明一种不象其他观点那样普遍的偏好模式。作为本发明的替换实施例,对ICFA或RCFA,可以使用同义词库或任何其他确定的单词串等价来代替所搜索的单词和单词串,以在那些单词等价的范围周围中找出重现的单词和单词串。例如,系统也可以用“kidslike”、“kidsreallylove”、“kidsenioy”、“childrenenjoy”、“childrenlove”代替“kidslove”进行搜索。可以使用同样的方法以对系统已知的等价,如“beforebed”、“beforegoingto第二种语言eep”、“beforebedtime”代替“beforegoingtobed”。组合现有技术包含的单词同义词库和/或本发明的共有频数方法将产生大量的语义上等价的单词和单词串。现将对系统如何使用关联数据库和智能应用302通过普通频率分析检测语义上等价的单词串进行概括的解释。系统也可以对所提供的单词和单词串执行ICFA和RCFA并使用用户定义的权重组合结果。二级频数分析在另一个实施例中,系统可以执行频数分析,使用第一个或第二个单词或单词串与所选择的第三个单词或单词串之间的共有关联作为被分析的两个单词或单词串之间的共有频数,这将增加新信息到对应用执行的分析。例如,如果在“beforegoingtobed”(第一个)和“kidslove”(第二个)的共同范围内的所有单词和单词串的频数之间的所选共有关联是“icecream”(第三个),则此实施例产生“beforegoingtobed”(第一个)和“icecream”(第三个)或者“kidslove”(第二个)和“icecream”(第三个)之间的独立或相对的频数分析,并基于那两次频数分析选择关联。再者,可以使用同样的方法在按用户定义的任意多轮的任意多组合中分析任何两个或更多单词或单词串。特定的应用将使用自动化的分析,这将识别对每一轮的关联频数分析执行哪种普通频率分析。更复杂的应用将确定在组合使用两个或多个独立结果之前执行两种或多种频数分析。使用共有频数分析来确定单词功能或意义如编号10/024,473的美国专利所述,可以对人工智能应用使用在被分析的单词和单词串与它们范围之内、不是翻译但为密切相关的概念的单词和单词串之间构建的高频数关联。人工智能或智能应用是可以回答不一定在过去回答过的问题或执行不一定在过去执行过的任务的应用。本发明可以使用关联数据库来识别可以用作类别指示的单词和单词串的组成和/或模式,以识别和类别指示关联的其他单词或单词串的功能或目的。例如,特殊的单词模式通常会和个人姓名、食物类型,或动作这样的单词关联。使用CFA,本发明可以分析文档以揭示这些模式的存在及它们和其他单词或单词串关联。基于关联,系统可以对类似地和这些模式关联的其他单词进行分类,因为类似地关联的其他单词可能落在类似的类别中。因此,系统可以识别类别指示的出现并利用它们。这样的应用的一个例子是帮助本发明的翻译方法完成那些系统不能使用先前所述的处理进行解析的翻译。例如,假设系统接收要翻译为语言X的英语查询“IloveMoshe”。假设系统有单词串“Ilove”的翻译,但是没有“IloveMoshe”或“loveMoshe”的翻译。关联数据库有包含单词“Moshe”的单词串,如“mynameisMoshe”、“Mr.MosheFein”、“hisnameisMoshe”。可以使用CFA来识别这些单词串和名字Moshe之间的关系。然后用户可以向系统标识这些短语是和名字高度相关的,从而是名字指示,一种特殊类型的类别指示。一旦Moshe出现在用户定义数量(或百分比)的“名字指示”短语中,系统将以统计确定性确定“Moshe”是可能的名字,因为它出现在作为“名字指示”的文本中。虽然现有技术中已有的其他系统也包括这些名字指示,及对例如数字和其他特定的类的其他类别指示,本发明可以使用手动编码的指示,如指示名字的短语,来识别象Moshe这样的名字和其他已知的名字也出现在其中的所有其他短语。例如,用户可能没有想过增加名字指示“theguy’snameis”,但是本发明将使用此实施例提供它以及很多其他用户不会想到的指示。每个单词和单词串都有可能的替换单词或单词串的有限空间,可以在周围的单词和单词串之中找出此空间。此空间将包括准确表达它们所替换的概念的单词和单词串,且它的范围将从最初表达的概念到作为确切的反义概念。例如,如果检查短语“Ilovecholocate”,系统可以产生单词“love”的所有可能情况。系统将产生等价和近似等价,如“Ireallylovechocolate”、“Iadorechocolate”、“Ireallyenjoychocolate”,及非等价和其反义,如“Itoleratechocolate”和“Ihatechocolate”。使用独立(或替换地,相关实施例)共有关联频数分析,系统将不会找出未填充由单词“love”剩下的整个部分的单词的重现频数。例如数据库在分析中不会产生“Ifishchocolate”、“Iyouchocolate”、“Iwhochocolate”。一旦系统确认Moshe是名字且如果“Ilove”是名字指示(但我们中没人曾见过Moshe),那么如果翻译引擎有“Moshe”在语言B中的翻译,它能连接到“Ilove”在语言B中的翻译而没有重叠。如果没有“Moshe”在语言B中的翻译,可以使用从英语到语言B的直译功能来产生名字“Moshe”在语言B中的表示,并连接它到“Ilove”在语言B中的翻译而没有重叠。和作为名字的其他单词和/或单词串明显相关的名字是用户如何识别表示可以用一般意义分类以由智能应用使用的概念的单词串之间的共有统计关系的简单例子。此外,所有的单词串将和所有其他相关的思想和概念有动态关系,这由基于当用语言表达时它们互相密切接近的的频数列出相关概念的语言内的关联数据库展示。构成一致的概念的每个单词串将有这样的空间,所示空间为在文本中彼此有特定接近程度的频繁重现的模式中的相关概念的空间,以由系统抽取那些概念在任何给定的上下文中的可能意义。例如,如果翻译查询包括不是显然的名字的单词,可以在下一级的相邻单词和单词串上检查相关概念之间的频数,以提供进一步的上下文。例如,如果将被翻译为语言B的英语查询是“IloveFaith”,这有些模糊,因为Faith可以为名字,也可以为“相信而没有证明的感觉”。如果在完整翻译查询中靠近短语“IloveFaith”的其他相邻单词是“her”和“she”而不是“god”、“religion”、“church”等等,系统将对存在于数据库中的关联应用公式来加权频数、接近程度及其他类别指示,且“知道”选择“名字”Faith而不是“相信而没有证明的”Faith的翻译。其他相邻的单词和单词串和它们对其他概念的频繁关系集合将产生说话者意图的进一步的证据,直到统计显著性确定答案,或系统基于信息的缺少询问用户要求其进行说明。例如,如果整个查询是“IloveFaith”,那么这会发生。由于它有些模糊,甚至人类翻译者也会问“你的意思是单词Faith指一个人吗?”。在英语的情况下,由于多数首字母大写将指示可能是“名字”Faith。这是系统可以用来确定Faith可能是名字的另一个属性。很多基于非拉丁文字符的语言并没有大写/小写字母且因此这类问题将依赖于由在文本中频繁的彼此接近关联的单词串之间的纯粹的层上层关系,以及任何其他语言的表示(语音、记号、符号等等)。使用其有频数分析来定位语义上类似的单词一种语言中表示特殊概念的单词和单词串通常以模式出现。这些模式可以由出现在特殊单词的紧前面(在英语中,在特殊单词的左边)及跟着特殊单词(在英语中,在特殊单词的右边)的特定单词和单词串的频数表示。因此,表示类似概念的单词和单词串在它们之前和之后的单词和单词串的类型和顺序上有共同性。使用单词模式产生信息的另一个例子是创建完全的单词和单词串等价同义词库。如果要求系统识别和另一个单词意思相同或接近相同单词,即,在语法上类似的单词,系统可以找出和该单词关联的单词和单词串的频数并搜索那种语言中其关联频数最和它匹配的单词。通常两个单词和/或单词串之间的结构越接近,它们在意思上就越接近。有时,反义概念将有较高频数的共有关联,但对特定的重要定性关联会有很大区别,所述关联创建系统也可以对应用提供的“反义签名”模式。系统将揭示任何由单词或单词串表示的概念和任何其他由单词或单词串表示的概念之间的关联特性—关联签名”。系统使用关联数据库来检测用户定义范围内的特定单词构成,定制用户定义范围以检测概念周围的单词模式,单词模式定义该概念和与之关系上邻近的其他概念之间的关系。程序4,在计算机程序清单附录中给出,是使用共有频数分析来定位语义等价或类似的单词的程序的例子。例如,使用ICFA并使用单词或单词串周围的特定单词构成的一个实施例是识别在语义值(即,意义)上和任何单词或单词串等价或接近等价的单词和单词串。此实施例包括步骤1,接收请求要分析的单词或单词串(查询单词)的等价的查询,并使用ICFA返回最高频数出现的有用户定义大小的单词串(返回的单词)及返回的单词的出现频数,其中返回的单词在所有可用文档中都位于查询单词直接左边的位置。用户定义的单词串越长,最终结果越准确。步骤2,使用每个所分析的单词或单词串右边1个单词或单词串的范围(1个单词或单词串的范围意味着系统对步骤2中每个所分析的单词或单词串右边的重现单词和单词串分级最高),对步骤1得到的用户定义数量的分级最高结果中的每个执行ICFA。然后累加步骤2中产生的所有共有单词的频数。步骤3,使用用户定义数量的在查询直接右边的单词的范围(再次,通常为达到精度至少需要两个或多个单词)对该查询执行ICFA。步骤4对每个用户定义数量的从步骤3返回的分级最高的单词和单词串执行ICFA使用每个被分析的单词和单词串直接左边1个单词或单词串的范围(再次,在步骤4中,直接在被分析的单词或单词串左边的1个单词或单词串的范围的结果将用最经常出现在被分析的每个单词和单词串前面的单词和单词串的频数来分级)。然后累加步骤4中所有共有单词和单词串的结果频数。在步骤5中,识别由步骤2和4两者产生的每个单词或单词串。步骤2中每个返回的共有单词和单词串的频数和步骤4中产生的共有单词或单词串的频数相乘。基于它们的步骤2和步骤4结果的乘积分级最高的单词或单词串将是对查询语义上最等价或最类似的单词和单词串。实施例的一个例子是构建系统的文档数据库中所有单词和单词串的等价的同义词库,假设用户输入单词“detained”以确定其对系统已知的所有单词和单词串的等价。在步骤1中,仅取最高的三个(由用户定义)结果来简化说明,系统将首先确定“detained”直接左边最频繁出现的三单词(由用户定义)串,如下所示1.“thesuspectwas”2.“wasarrestedand”3.“continuedtobe”在步骤2中,系统找出跟在上述三个返回的单词串右边最频繁出现的单词和单词串,如下所示1.“thesuspectwas”a.“arrested”(240次)b.“held”(120)c.“released”(90)2.“wasarrestedand”a.“held”(250)b.“convicted”(150)c.“released”(100)3.“continuedtobe”a.“healthy”(200)b.“confident”(150)c.“optimistic”(120)然后,累加步骤2中共有返回的频数。步骤2中唯一的共有返回是a.“held”120+250=270b.“released”90+100=190在步骤3中,系统将在数据库的文档中确定三个(由用户定义)在所选择的查询“detained”直接右边最频繁出现的两单词(由用户定义)串1.“forquestioning”2.“oncharge”3.“duringthe”在步骤4中,系统将识别在步骤4中三个返回的结果直接左边最频繁出现的单词和单词串,如下所示1.“forquestioning”a.“held”(300)b.“wanted”(150)c.“broughtin”(100)2.“oncharges”a.“held”(350)b.“arrested”(200)c.“broughtin”(150)3.“duringthe”a.“beautiful”(500)b.“happy”(400)c.“people”(250)然后,累加步骤4的所有共有结果。此例中的两个共有结果是a.“held”300+350=650b.“broughtin”100+150=250步骤5,用步骤2和4的共有返回频数相乘产生返回,如下所示1.“held”650×270=175,5002.“arrested”200×240=48,000上述演示基于文档数据库中相对小数量的文档。文档数据库可以更大且可以包括可由系统通过如因特网这样的网络远程访问的文档。上述实施例是本发明使用ICFA(或替换地RCFA)来识别有关由单词和单词串表示的概念的特性及单词或单词串和任何其他单词或单词串之间的关系的特性的多种方法中的一种。可以基于相同的核心思想使用其他方法,即利用概念之间的关系来解决更复杂的问题,概念之间的关系由它们在语言中的频数和彼此接近程度及其他分类指示来定义。这可以包括对两个或多个片段集合执行共有频数分析并以用户定义的方式使用组合的结果。可以识别更复杂关系的一个例子是通过比较彼此为反义的单词或单词串的签名构成模式。为了识别此模式,用户将输入单词到系统中(如,“hot”)。然后系统将识别所有在此单词周围的重现单词和单词串的频数(这些产生了单词的“签名”)。接下来,用户将调用系统来识别所有在该单词或单词串周围表示反义概念(如,“cold”)的重现单词和单词串的频数。然后系统将查找单词“hot”左边和单词“cold”右边之间及单词“cold”左边和单词“hot”右边之间的重叠概念的共有模式。结果是通过比较两个签名构成的模式,系统可以用它来识别有通过比较它们的签名构成的类似模式的其他单词或单词串配对。因此,如果查询系统用单词或单词串以查找反义概念的方式,系统将(1)识别该查询周围的所有单词和单词串,(2)识别有类似于查询的签名但没有可以将它们标识为同义词的类似程度的单词和单词串的列表,(3)然后比较这些相关(但不同义)的单词和单词串和查询的签名,及(4)将步骤3中识别的比较和先前识别的反义单词或单词串配对的签名的比较进行比较。如果步骤3中产生的任何比较中有模式和由已知反义概念之间的签名比较构成的模式足够类似(由用户定义),那么系统将识别从步骤2得到的和查询对比来构成该模式并将其标识为查询的反义的单词或单词串。亦应注意,系统产生单词串等价(或任何其他关系)所用的用户定义参数可以包括和查询有任何紧密接近程度且并不和查询在左边或右边直接邻接的单词串。在其中语义的表达通常不太有效或结构不太常规(如,出现在因特网“聊天室”媒体的对话及其他类型的对话)的应用中,调整用户定义参数是需要的。在它的核心,关联数据库构建方法包括(i)取以线性或排序方式组织的分组数据的一个单元,(ii)将该组数据分解为整体的所有可能连续子集,及(iii)基于在分组数据的所有可用单元中频数重现(通常是紧密的)的彼此接近程度构建数据的所有子集之间的关系。在CFA的核心,系统向用户提供子集数据片段之间的频繁重现的接近关系,以帮助识别定义“数据签名”的特定重现模式,并提供和该一般“数据签名”相关的任何数据有关的一般化信息。因此,可以在数据库创建中使用同样的方法,且共有频数分析可以用在很多其他类型的数据挖掘、文本挖掘、目标识别及需要识别模式的任何其他应用中进行识别模式。如熟悉技术的人应理解,熟练的从业者可以对上述装置和方法做出很多改变而不偏离本发明的精神和范围。附录<-..<?$exclude_eng=array(′it,′its′,′a′,′is′,′was′,′for′,′do′,′of′,′s′,′the′,′and′,′to′,′in′,′if′,′or′,′that′,′this′,′inthe′,′are′,′ofthe′,′by′,′be′,′tothe′,′as′,′on′,′an′,′at′,′with′,′from′,′he′,′will′,′has′,′not′,′bythe′,′would′,′should′,′said′,′i′,′but′,′so′,′had′,′who′,′no′,′only′,′her′,′ofa′,′been′,′andthe′,′atthe′);$exclude_fre=array(′il′,′elle′,′son′,′sa′,′ses′,′un′,′une′,′est′,′etait′,′pour′,′faire′,′opA(c)rer′,′poser′,′de′,′le′,′la′,′les′,′et′,′A′,′en′,′si′,′que′,′qui′;celui′,′ce′,′ces′,′cet′,′cettes′,′dansle′,′dansla′,′sont′,′dela′,′du′,′prA″sde′,′de′,′daprA″s′,′par′,′Atre′,′Ala′,′au′,′aux′,′comme′,′si′,′enavant′,′sur′,′un′,′une′,′vers′,′avec′,′il′,′grA(c)′,′volontA(c)′,′devoir′,′AtreobligA(c)′,′disait′,′disais′,′disent′,′je′,′mais′,′si′,′ou′,′avait′,′avais′,′avaient′,′qui′,′que′,′non′,′seulement′,′elle′,′etle′,′etla′,′etles′,′des′,′dans′);$exclude_spa=array(′lo′,′ella′,′su′,′un′,′una′,′es′,′fue′,′fui′,′por′,′para′,′hacer′,′hacen′,′ellos′,′ellas′,′de′,′el′,′la′,′los′,′y′,′hasta′,′en′,′si′,′ese′,′que′,′aquello′,′aquella′,′este′,′esto′,′estA-′,′eres′,′son′,′del′,′cerca′,′allado′,′estar′,′ser′,′al′,′como′,′encendido′,′un′,′arroba′,′con′,′desde′,′A(c)l′,′voluntad′,′tiene′,′hay′,′deber′,′dijo′,′yo′,′pero′,′sino′,′asA-′,′tan′,′o′,′habA-a′,′quien′,′quiA(c)n′,′no′,′sA3lo′,′solarnente′,′la′,′hasido′);$dir=″hebfre″;$dirdone=″hebfredone″;$lang=″.eng″;$olang=″.fre″;$table=″hebfre″;$languagecount=″langcount″;$language=″lang″;$olanguagecount=″olangcount″;$olanguage=″olang″;#$debug=″true″;functiongetmicrotime(){list($usec,$sec)=explode(″″,microtime());return((float)$usec+(float)$sec);}$allstart=getmicrotime();$fp=fopen(″/usr/local/apache/log.txt″,″w+″);fputs($fp,″starting″.date(″H:i:s″).″<BR>\n″);<!--SIPO<DPn="41">--><dpn="d41"/>$filelist=file(″http//128.241.244.166/list.php?dir=$dir&amp;lang=$lang″);#change$temp=implode(″″,$filelist);$list=strtolower(trim($temp));$mainarray=explode(″\n″,$list);sort($mainarray);reset($mainarray);$filearray=array();$calc=0;for($t=0;$t<count($mainarray);$t++)#count($mainarray)change{if(file_exists(str_replace($lang,$olang,$mainarray[$t]))){$temp=$mainarray[$t];$temp1=file(″$mainarray[$t]″);unset($temp2);for($m=0;$m<count($temp1);$m++){if(strstr($temp1[$m],″....″))unset($temp1[$m]);$temp1[$m]=eregi_replace(″[[space]]+″,″″,strip_tags($temp1[$m]));$temp1[$m]=urldecode(str_replace(″&amp;htab;″,″″,$temp1[$m]));if($temp1[$m]!=″″)$temp2.=$temp1[$m];}$filearray[″$temp″]=utf8_encode($temp2);#######$temp=str_replace($lang,$olang,$mainarray[$t]);$temp1=file(str_replace($lang,$olang,$mainarray[$t]));unset($temp2);for($m=0;$m<count($temp1);$m++){if(strstr($temp1[$m],″...″))unset($temp1[$m]);$temp1[$m]=eregi_replace(″[[space]]+″,″″,strip_tags($temp1[$m]));$temp1[$m]=urldecode(str_replace(″&amp;htab;″,″″,$temp1[$m]));if($temp1[$m]!=″″)$temp2.=$temp1[$m];}$filearray[″$temp″]=utf8_encode($temp2);}}fputs($fp,date(″H:i:s″).″<BR>doneloadingfilesintoarray.\n″);$addwords=″true″;$ctodo=count($mainarray);$t=0;for($t=0;$t<$ctodo;$t++){if(file_exists(str_replace($lang,$olang,$mainarray[$t])))$filexist=″true″;elseunset($filexist);print″filee=$filexist-$mainarray[$t]\n″;<!--SIPO<DPn="42">--><dpn="d42"/>if($debug==″true″)$filexist=″true″;if($filexist==-″true″){if($mainarray[$t]&amp;&amp;$debug!=″true″){system(″mv$mainarray[$t]/usr/local/apache/$dirdone/″.str_replace(″/usr/local/apache/$dir/″,″″,$mainarray[$t]));system(″mv″.str_replace($lang,$olang,$mainarray[$t]).″/usr/local/apache/$dirdone/″.str_replace($lang,$olang,str_replace(″/usr/local/apache/$dir/″,″″,$mainarray[$t])));}$lng=$filearray[$mainarray[$t]];  $olng=$filearray[str_replace($lang,$olang,$mainarray[$t)];  $lngs=explode(″″,$lng);  for($i=0;$i<count($lngs);$i++)  {  if(!ereg(″[^a-zA-Z]″,$lngs[$i]))$lngs[$i]=strtolower($lngs[$i]);  }  $olngs=explode(″″,$olng);  for($i=0;$i<count($olngs);$i++)  {  if(!ereg(″[^a-zA-Z]″,$olngs[$i]))$olngs[$i]=strtolower($olngs[$i]);  }  $sume=count($lngs);  $sumh=count($olngs);  if($sume>$sumh){$margin=round($sume/($sume-$sumh));$action=″add″;}  elseif($sumh>$sume){$margin=(round($sumh/($sumh-$sume)));$action=″sub″;}  else{$margin=1;$action=″sub″;}  $number=count($lngs);  for($j=$t+1;$j<$ctodo;$j++)#mainloop,rotatebetweenthefilestobechecked.  {if(file_exists(str_replace($lang,$olang,$mainarray[$j])))#checkfilenamematch.{$file_start=getmicrotime();unset($array);  $array=array();  $lngtp=$filearray[$mainarray[$j]];  $olngtp=$filearray[str_replace($lang,$olang,$mainarray[$j])];  $lngstp=explode(″″,$lngtp);  for($i=0;$i<count($lngstp);$i++)  {  if(!ereg(″[^a-zA-Z]″,$lngstp[$i]))$lngstp[$i]=strtolower($lngstp[$i]);  }  $olngstp=explode(″″,$olngtp);  for($i=0;$i<count($olngstp);$i++)<!--SIPO<DPn="43">--><dpn="d43"/>  {  if(!ereg(″[^a-zA-Z]″,$olngstp[$i]))$olngstp[$i]=strtolower($olngstp[$i]);  }  $sumetp=count($lngstp);  $sumhtp=count($olngstp);  if($sumetp>$sumhtp){$margintp=round($sumetp/($sumetp-$sumhtp));$action=″add″;}  elseif($sumhtp<$sumetp){$margintp=(round($sumhtp/($sumhtp-$sumetp)));$action=″sub″;}  else{$margintp=1;$action=″add″;}  $numbertp=count($olngstp);  if($debug==″true″)printdate(″H-i-s″).″<BR>\n″;  for($i=0;$i<$number;$i++)#mainloop,coverseveryspace.  {  if($t=$j)$ni=$i+1;  else$ni=0;  for($n=$ni;$n<$numbertp;$n++)  {  unset($thesameh);  $p=0;  unset($theb);$langstart=getmicrotime();  while($p<15&amp;&amp;$lngs[$i+$p]=$lngstp[$n+$p]&amp;&amp;$lngstp[$n+$p]!=″″)#checkifthe$nwordsmatch.  {  $theb.=$lngs[$i+$p].″″;  $theb1=trim($theb);  if(!ereg(″[`~!@#$%^&amp;*()<>_+=-?.,;∧]″,$theb1)&amp;&amp;!ereg(″″,substr($theb1,0,1))&amp;&amp;!ereg(″^*$″,$theb1)  &amp;&amp;$theb1!=″″&amp;&amp;substr($theb1,0,1)!=″-″&amp;&amp;!ereg(″″,substr($theb1,-  1))  &amp;&amp;substr($theb1,-1)!=″-″&amp;&amp;substr($theb1,0,1)!=″&amp;&amp;substr($theb1,-1)!=″  &amp;&amp;$theb1!=″&amp;&amp;$theb1!=″″&amp;&amp;!in_array($theb1,$exclude_eng))  {  $temp=$array[$theb1][″hebrew_c″];  if(!$temp)#new,welcome  {  $array[$theb1][″hebrew_c″]=″,$i,″;  }  elseif(!strstr($temp,″,$i,″))#new,welcome  {  $array[$theb1][″hebrew_c″]=$temp.″$i,″;  }  $extra=floor($i/$margin);<!--SIPO<DPn="44">--><dpn="d44"/>  if($action=″add″){$extrasm=$i+$extra-45;$extralg=$i+$extra+45;  elseif($action=″sub″){$extrasm=$i-$extra-45;$extralg=$i-$extra+45;}  if($extrasm<0)$extrasm=0;  if($extralg>$sumh)$extralg=$sumh;$olangstart=getmicrotime();  for($e=$extrasm;$e<$extralg;$e++)  {  $extran=floor($n/$margintp);  if($action=″add″){$bot=$n+$extran-45;$top=$n+$extran+45;}  elseif($action=″sub″){$bot=$n-$extran-45;$top=$n-$extran+45;}  if($bot<0)$bot=0;  if($top>$sumhtp)$top=$sumhtp;  unset($tbc);  for($x=$bot;$x<$top;$x++)#checktheenglish,10backand10forward.  {  unset($teng);  if(($t=$j&amp;&amp;$x>$e)||$t!=Sj)#$n>$e&amp;&amp;  {  $a=0;  while($olngs[$e+$a]==$olngstp[$x+$a]&amp;&amp;$olngs[$e+$a]!=″″)  {  $teng.=″″.$olngs[$e+$a];  $teng=trim($teng);  if(!ereg(″[`~!@#$%^&amp;*()<>_+=-?.,;∧]″,$teng)&amp;&amp;!ereg(″″,substr($teng,0,1))&amp;&amp;!ereg(″^*$″,$teng)  &amp;&amp;$teng!=″″&amp;&amp;substr($teng,0,1)!=″-″&amp;&amp;!ereg(″″,substr($teng,-1))  &amp;&amp;substr($teng,-1)!=″-″&amp;&amp;substr($teng,0,1)1=″&amp;&amp;substr($teng,-1)!=″  &amp;&amp;$teng!=″&amp;&amp;$teng!=″″&amp;&amp;!in_array($teng,$exclude_fre))  {  $temparray=array_keys($array[$theb1]);  if(in_array($teng,$temparray))  {  $temp=$array[$theb1][$teng];  if(!strstr(″$temp″,″,$x,″))#&amp;&amp;!strstr(″$temp1″,″,$e,″))  {  $array[$theb1][$teng]=$temp.″$x,″;  }  }  else  {  $array[$theb1][$teng]=″,$x,″;  }<!--SIPO<DPn="45">--><dpn="d45"/>  }  $a++;  }#endofwhileloop  }  }#endofforloop.  }#endofnewloop$olangend=getmicrotime();$time1=$olangend-$olangstart;#fputs($fp,″Frenchwordnumber$nof$numbertptook$time1\n″);  }#endupto5hebrewtogether.  $p++;  }#endofwhileloop$p<15$langend=getmicrotime();$time2=$langend-$langstart;#fputs($fp,″Englishwordnumber$iof$numbertook$time2\n″);  }  }  if(count($array)>0)  {$dbstart=getmicrotime();  $stream=MYSQL_CONNECT(″127.0.0.1″,″root″);  $tempheb=array_keys($array);  for($i=0;$i<count($tempheb);$i++)  {  $lng=$tempheb[$i];  if(substr_count($array[$lng][″hebrew_c″],″,″)-1>0)  {  $lngc=substr_count($array[$lng][″hebrew_c″],″,″)-1;  $tempolng=array_keys($array[$lng]);  $n=1;  while($n<count($tempolng)&amp;&amp;count($tempolng)>1)  {  $olng=$tempolng[$n];  $olngc=substr_count($array[$lng][$olng],″,″)-1;  $query=″update$tablesettotal=total+1,$languagecount=$languagecount+$lngc,$olanguagecount=$olanguagecount+$olngc,article=concat(article,\″,$mainarray[$j]\″)where(articlenotlike′%$mainarray[$j]%′and$language=.addslashes($lng).and$olanguage=.addslashes($olng).)″;  MYSQL(″brain″,$query,$stream)ordie(″#2Can′t$query″.MYSQL_ERROR());  $num=MYSQL_AFFECTED_ROWS($stream);  if($num=0)  {  $query=″insertignoreinto$tablevalues(\″NULL\″,\″1\″,.addslashes($lng).″,″.addslashes($olng).,\″″.addslashes($lng).″\″,\″$lngc\″,\″″.addslashes($olng).″\″,\″$olngc\″,\″$mainarray[$j]\″)″;<!--SIPO<DPn="46">--><dpn="d46"/>  MYSQL(″brain″,$query,$stream)ordie(″#3Can′t$query″.MYSQL_ERROR());  }  $n++;  }  }  }   MYSQL_CLOSE($stream); $dbend=getmicrotime(); $time=$dbend-$db$tart; fputs($fp,″dbtook$time\n″);}$file_end=getmicrotime(); } } } } $allend=getmicrotime(); $time=$allend-$allstart; fputs($fp,″thewholeshittook$time\n″); fputs($fp,″final″.date(″Y-m-dH:i:s″).″-$calc-<BR>\n″); fclose($fp);  ?>  ??  ??  Footnotecontinuedfrompreviouspage  Footnotecontinuedonnextpage<!--SIPO<DPn="47">--><dpn="d47"/><?$word=″unitednations″;$engspa_t=″engspa″;$engfre_t=″hebfre″;$frespa_t=″frespa″;$c=1;MYSQL_CONNECT(″128.241.244.166″,″root″);$query=″selecttotal,lang,langcount,olang,olangcountfrom$engfre_twhereolang=′$word;$result=MYSQL(″brain″,$query)ordie(″Error#1-$query-.MYSQL_ERROR());$query1=″selectlangfrom$engspa_twhereolang=′$word;$result1=MYSQL(″brain″,$query1)ordie(″Error#2-$query1-″.MYSQL_ERROR());for($i=0;$i<MYSQL_NUM_ROWS($result1);$i++){list($lang)=MYSQL_FETCH_ROW($result1);$in.=″,.addslashes($lang).″;}$in=substr($in,1);$num=MYSQL_NUM_ROWS($result);print″$in<BR><BR>\n″;for($i=0;$i<$num;$i++){list($total,$lang,$langc,$olang,$olangc)=MYSQL_FETCH_ROW($result);print″$lang,″;$query2=″selectcidfrom$frespa_twhereolang=.addslashes($lang).andlangin($in)″;$result2=MYSQL(″brain″,$query2)ordie(″Error#3-$query2-″MYSQL_ERROR());if(MYSQL_NUM_ROWS($result2)>0){$res.=″$i-$total,$lang,$langc,$olang,$olangc<BR>\n″;$c++;}}print″<BR><BR>$res″;print″$c/″.MYSQL_NUM_ROWS($result);?>????FootnotecontinuedfrompreviouspageFootnotecontinuedonnextpage<!--SIPO<DPn="48">--><dpn="d48"/><?functionconvert($what,$olang){if($what==″)$what=″\;if($what==″\\″)return;$query=″selectsletterfrom″.$olang.″letterwherefletter=′$what;$result=MYSQL(″minibush″,″$query″)ordie(″*$what*-error#1$query-″.MYSQL_ERROR());if(MYSQL_NUMROWS($result)>0){list($sletter)=MYSQL_FETCH_ROW($result);return$sletter;}elsereturnstripslashes($what);}functionoverlap($s,$mm,$mean,$tos,$osmean,$max,$dictionary_t,$lang,$olang,$spaceaddress,$1ongestolang){$tempmax=$max;${$olang}=$osmean;${$lang}=$mean;$mean=explode(″″,$mean);$osmean=explode(″″,$osmean);for($m=$mm;$m<count($mean);$m++){unset($string);for($1=$m;$1<count($mean);$1++)$string.=$mean[$1].″″;$sm=$s+count($mean);unset($nextwordmatch);if($spaceaddress[$sm+1])$nextwordmatch=″$langlike.str_replace(″%″,″″,trim($string.$spaceaddress[$sm])).″%′or″;$query1=″select$lang,$olangfrom$dictionary_twhere$nextwordmatch$lang=.str_replace(″%″,″″,trim($string.$spaceaddress[$sm])).and$olang<>″orderby$langdesc,length($lang),$olangdesc,length($olang)desc″;  $result1=MYSQL(″minibush″,″$query1″)ordie(″can′terror#2-′$query1′″.MYSQL_ERROR());  $t=0;  while($t<MYSQL_NUMROWS($result1))#&amp;&amp;$tempmatchl=″yes″){list(${″temp″.$lang},${″temp″.$olang})=MYSQL_FETCH_ROW($result1);$tempmean=explode(″″,${″temp″.$lang});$tempomean=explode(″″,${″temp″.$olang});$tg=$m;$tm=0;unset($tempmatch);<!--SIPO<DPn="49">--><dpn="d49"/>  while($tg<count($tempmean)+$m)  {-  if(($spaceaddress[$s+$tg]==$tempmean[$tm])&amp;&amp;($tempmatch!=″no″))$tempmatch=″yes″;  else$tempmatch=″no″;  $tg++;  $tm++;  }  if($tempmatch=″yes″&amp;&amp;substr_count($longestresult,″)<=substr_count(${″temp″.$lang},″″))#checksifthenewoverlapismatchingthetranslationrequest.  {  $longestresult=${″temp″.$lang};  $omean=explode($tempomean,${$olang});  $to=count($omean)-1;  $tcheckb=substr(${″temp″.$olang},0,strlen($tempomean));  if($osmean[$tos]==$tempomean&amp;&amp;isset($osmean[$tos]))  {  if(count($mean)+count($tempmean)-1>$max)#singlewordoverlap  {  $max=$m+count($tempmean);  $ns=$m;  $tolang=${$olang}.substr(${″temp″.$olang},strlen($tempomean));  $overlap=″true″;  }  else$tempmatch=″no″;  }  elseif($osmean[($tos-1)]=$tempomean&amp;&amp;$osmean[$tos]==$tempomean[1]&amp;&amp;isset($osmean[($tos-1)]))  {  if(count($mean)+count($tempmean)-1>$max)#singlewordoverlap  {  $max=$m+count($tempmean);  $ns=$m;  $tolang=${$olang}.substr(${″temp″.$olang},strlen($tempomean.″″.$tempomean[1]));  $overlap=″true″;  }  else$tempmatch=″no″;  }  elseif($osmean[($tos-2)]=$tempomean&amp;&amp;$osmean[($tos-1)]=$tempomean[1]&amp;&amp;$osmean[$tos]=$tempomean[2]&amp;&amp;isset($osmean[($tos-2)]))  {  if(count($mean)+count($tempmean)-1>$max)#singlewordoverlap  {  $max=$m+count($tempmean);<!--SIPO<DPn="50">--><dpn="d50"/>  $ns=$m;  $tolang=${$olang}.substr(${″temp″.$olang},strlen($tempomean.″″.$tempomean[1].″″.$tempomean[2]));  $overlap=″true″;  }  else$tempmatch=″no″;  }  elseif(substr_count(${$olang},″″)=0&amp;&amp;$tcheckb=trim(substr(${$olang},1)))  {  if(count($mean)+count($tempmean)-1>$max)#singlewordoverlap  {  $max=$m+count($tempmean);  $ns=$m;  $olangminus=substr(${″temp″.$olang},strlen(${$olang}));  $tolang=${$olang}.″″.$olangminus;  $overlap=″true″;  }}elseif(substr_count(${$olang},″″)=0&amp;&amp;substr_count(${″temp″.$olang},″″)=0)#englishoverlaphebrewonewordonly.{  $max=$m+count($tempmean);  $ns=$m;  $tolang=${$olang}.″″.${″temp″.$olang};  $overlap=″true″;  }  else  {  $tempmatch=″no″;  }  if($overlap=″true″)  {  $mmean=explode(″″.$tempmean,${$lang});  $to=count($mmean)-1;  $ttos=count($mean)-1;  if($mmean[$to]&amp;&amp;$to>0)  {  $tcheck=substr(${″temp″.$lang},strlen($tempmean)+1);  if(subst($tcheck,0,strlen(trim($mmean[$to])))=trim($mmean[$to]))#overlapping  {  $tlang=${$lang}.substr($tcheck,strlen(trim($mmean[$to])));  }  }  elseif($mean[$ttos]=$tempmean&amp;&amp;$mean[$ttos])  {<!--SIPO<DPn="51">--><dpn="d51"/>  $tlang=${$lang}.substr(${″temp″.$lang},strlem($tempmean));  }-  else{print″BIGERROR″;exit;}  }  }  $t++;  }}if($overlap!=″true″)$overlap=″false″;if($tempmax=$max&amp;&amp;$overlap!=″true″)$max=0;$array=array(″s″=>″$s″,″mm″=>count($mean),″mean″=>$tlang,″tos″=>substr_count($tolang,″″),″osmean″=>$tolang,″max″=>″$max″,″tolang″=>″$tolang″,″overlap″=>″$overlap″,″longestolang″=>″$longestolang″);return$array;}functiontranslate($word,$lock,$tags,$baselang){global$id_t,$prefix_t,$dictionary_t;$oaselang=″hebrew″;if(!$word)return;if($transeng=″true″){if(ereg(″[a-zA-Z]″,$word))return$word;}if($baselang=″hebrew″){$spaceit=″true″;$emailend=″·o,f.ǒ.,″;}if($baselang=″japanese″){$dictionary_t=″dictionaryjap″;$spaceit=″false″;}if($baselang=″chinesesim″){$dictionary_t=″dictionarychnsim″;$spaceit=″false″;}MYSQL_CONNECT(″216.205.78.138″,″nobody″)ordie(″can′tconnect″.MYSQL_ERROR());$word=trim($word);if((strstr($word,hebrev($id_t.″,″)||strstr($word,hebrev($id_t.″″)||substr($word,strlen($word)-strlen($id_t))=hebrev($id_t))&amp;&amp;isset($id_)){$word=str_replace(hebrev($id_t,″″,$word);$systemsite=″true″;}if($word)#######################www.something#######################{###########################if(strstr($word,″http//www.inhebrww.co.il/nsia.html″)){$word=split(″=″,$word);$word=split(″&amp;″,$word[1]);return$word;<!--SIPO<DPn="52">--><dpn="d52"/>  }  #####################  if(strstr($word,″://″)){$temp=explode(″://,$word);$address=$temp[1];}  else$address=$word;  $address=explode(″/″,$address);  $addresscheck=$address;  if(!ereg(″[a-zA-Z...-f]″,$addresscheck))$addrescheck=$address[1];  if(ereg(″[a-zA-Z]″,$addresscheck))  {  $lang=″english″;  $olang=$baselang;  if(strtolower(substr($word,0,7))=″http//″){$word=substr($word,7);$pre=″,,SS“//″;}  if(strtolower(substr($word,0,8))=″https//″){$word=substr($word,8);$pre=″,,SS“a//″;}  if(strtolower(substr($word,0,6))=″ftp//″){$word=substr($word,6);$pre=″“S“//″;}  }  elseif($baselang=″hebrew″)  {  $lang=″hebrew″;  $olang=″english″  if(substr($word,0,8)==″,,SS“//*″){$word=substr($word,8);$pre=″http//″;$upper=″true″;}  elseif(substr($word.0.7)==″,,SS“//″){$word=substr($word,7);$pre=″http//″;}  elseif(substr($word,0,9)==″,,SS“¤//*″){$word=substr($word,9);$pre=″https//″;$upper=″true″;}  elseif(substr($word,0,8)==″,,SS“¤//″){$word=substr($word,8);$pre=″https//″;}  elseif(substr($word,0,7)==″“S“//*″){$word=substr($word,7);$pre=″ftp//″;$upper=″true″;}elseif(substr($word,0,6)=″“S“//″){$word=substr($word,6);$pre=″ftp//″;}  elseif(substr($word,0,1)=″*″){$word=substr($word,1);$upper=″true″;}  }  elseif($baselang==″japamese″)  {  $lang=″japanese″;  $olang=″english″;  }  elseif($baselang=″chinesesim″)  {  $lang=″chinesesim″;  $olang=″english″;  }  $s=0;  $tempreplace=strtolower($word);<!--SIPO<DPn="53">--><dpn="d53"/>while($s<strlen($tempreplace)){-if(!ereg(″[...-fa-zA-Z0-9\′\″]″,$tempreplace[$s])){$tempreplace=substr_reolace($tempreplace,″$tempreplace[$s]″,$s,1);$s=$s+2;}$s++;}$tempreplace=eregi_replace(″[[space]]+″,″″,$tempreplace);$spaceaddress=explode(″″,$tempreplace);$s=0;unset($space);$color=″red″;$counts=count($spaceaddress);$query=″select$lang,$olangfrom$dictionary_twhere$lang=″$tempreplace;$result=MYSQL(″minibush″,″$query″)ordie(″can′terror#0.1-′$query′″.MYSQL_ERROR());if(MYSQL_NUMROWS($result)>0){list(${$lang},${$olang})=MYSQL_FETCH_ROW($result);$space=${$olang};$counts=0;}while($counts>$s)#wordbetween..{$spaceaddress[$s]=trim($spaceaddress[$s]);if($tags==″true″){$open=″<fontcolor=\″$color\″>″;$close=″</font>″;if($color==″red″)$color=″blue″;else$color=″red″;}if(ereg(″[...-fa-zA-Z\′\″]″,$spaceaddress[$s])){unset($restofaddress);for($i=$s;$i<$counts;$i++)$restofaddress.=″″.$spaceaddress[$i];$restofaddress=trim($restofaddress);$query=″select$lang,$olangfrom$dictionary_twhere$lang=′$restofaddress;$result=MYSQL(″minibush″,″$query″)ordie(″can′error#0.2-′$query′″.MYSQL_ERROR());if(MYSQL_NUMROWS($result)=1){list(${$lang},${$olang})=MYSQL_FETCH_ROW($result);$space.=″″.$open.${$olang}.$close;<!--SIPO<DPn="54">--><dpn="d54"/>$space=trim($space);$counts=-0;}else{$n=$s+1;unset($nextwordmatch);if($spaceaddress[$n])$nextwordmatch=″$langlike.str_replace(″%″,″″,$spaceaddress[$s]).″″.str_replace(″%″,″″,$spaceaddress[$n]).″%′or″;$query=″select$lang,$olangfrom$dictionary_twhere$nextwordmatch$lang=′$spaceaddress[$s]′and$olang<>″orderby$langdesc,length($lang),$olangdesc,length($olang)desc″;$result=MYSQL(″minibush″,″$query″)ordie(″can′terror#1-′$query′″.MYSQL_ERROR());if($match=″yes″)unset($match);if((MYSQL_NUMROWS($result)>0)&amp;&amp;($match!=″no″)){$n=0;$maximum=0;$maximumr=0;unset($finals);unset($finalsr);unset($longestolang);unset($longestlang);while($n<MYSQL_NUMROWS($result))#&amp;&amp;($match!=″yes″)){list(${$lang},${$olang})=MYSQL_FETCH_ROW($result);$mean=explode(″″,${$lang});$osmean=explode(″″,${$olang});$tos=count($osmean)-1;$g=0;unset($match);while($g<count($mean)){if(($spaceaddress[$s+$g]=$mean[$g])&amp;&amp;($match!=″no″))$match=″yes″;else$match=″no″;$g++;}if($match=″yes″){if(strlen($longestolang)<strlen(${$olang}))$longestolang=${$olang};if(strlen($longestlang)<strlen(${$lang}))$longestlang=${$lang};unset($overlap);unset($max);<!--SIPO<DPn="55">--><dpn="d55"/>$array=array();$array=overlap($s,1,${$lang},$tos,${$olang},$g,$dictionary_t,$lang,$olang,$spaceaddress,$longestolang);$max=$array[″max″];$tolang=$array[″tolang″];if($tolang)$wasok=″true″;while($array[″overlap″]!=″false″&amp;&amp;count($spaceaddress)>$max){$array=overlap($array[″s″],Sarray[″mm″],trim($array[″mean″]),$array[″tos″],trim($array[″osmean″]),$g,$dictionary_t,$lang,$olang,$spaceaddress,$longestolang);if($array[″overlap″]==″true″){$max=$array[″max″];$tolang=$array[″tolang″];$wasok=″true″;}}if($max>$maximum&amp;&amp;$max>0){$maximum=$max;$finals=$tolang;}if($wasok!=″true″){if(strlen(${$lang})>$maximumr){$maximumr=strlen(${$lang});$gr=$g;$finalsr=${$olang};}}}$n++;}if($wasok=″true″){$match=″true″;if(!strstr($finals,$longestolang)&amp;&amp;$maximum<=(substr_count(″″,$longestolang)+1)){#print″*″;if($s=0)$space=$space.$open.$longestolang.$close;else$space=$space.″″.$open.$longestolang.$close;$s=$s+substr_count($longestlang,″″)+1;<!--SIPO<DPn="56">--><dpn="d56"/> } else- { if($s==0)$space=$space.$open.$finals.$close; else$space=$space.″″.$open.$finals.$close; $s=$s+$maximum; } unset($maximum);  unset($wasok); } elseif($finalsr)###testingnewthing,whathappenswhenapartialmachwasfound,(ieasomething,butaisnotinthesystem). { if($s==0)$space=$space.$open.$finalsr.$close; else$space=$space.″″.$open.$finalsr.$close; $s=$s+$gr, unset($maximumr); } else#stillistestphase. { if(ereg(″[a-zA-Z...-f]″,$spaceaddress[$s])$space=$space.″″.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close; else$space=$space.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;$spaceaddress[$s]=substr($spaceaddress[$s],1);if(!$spaceaddress[$s]||$spaceaddress[$s]==″0″)$s++;unset($match); } }  else{  if(ereg(″[a-zA-Z...-f]″,$spaceaddress[$s]))$space=$space.″″.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;  else$space=$space.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;  $spaceaddress[$s]=substr($spaceaddress[$s],1);  if(!$spaceaddress[$s]||$spaceaddress[$s]=″0″)$s++;  unset($match);  }  if(!$spaceaddress[$s]||$spaceaddress[$s]==″0″)$s++;  }  }  else  {  if(ereg(″[a-zA-Z...-f]″.$spaceaddress[$s])){$space=$space.″″.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;print″##″;}<!--SIPO<DPn="57">--><dpn="d57"/>  elseif(ereg(″[a-zA-Z...f]″,$spaceaddress[($s-1)]))$space=$space.″″.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;  else$space=$space.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;  $spaeeaddress[$s]=substr($spaceaddress[$s],1);  $s++;  unset($match);  }}#endofwordbetween..$url.=$space;unset($temp);$count++;#nextword.if(strstr($word,″@″)){$revid=hebrev($id_t);if(strstr($url,″.″))$url=ereg_replace(″([a-zA-Z0-9/-/_/])@([a-zA-Z0-9/-/_/]*)([/,])″,″\\1.\\2@inhebrew.co.il\\3″,″$url″);  else$url=ereg_replace(″([a-zA-Z0-9/-/_/])@([a-zA-Z0-9/-/_/]*)″,″\\1.\\2@inhebrew.co.il″,$url);  unset($systemsite);  }  if(strstr($word,″@inhebrew.co.il″))  {  $revid=hebrev($id_t);  $url=ereg_replace(″([...-f)]).([/-/...-f/-/]*)@$emailend″,\\1@\\2$revid″,$url);  }  if($systemsite=″true″&amp;&amp;!strstr(″$word″,″@″))  {  if($end)return″http//″.str_replace(″″,″″,$end).″.inhebrew.co.il/index.html?sub=″.substr{$end,1);  elsereturn″http//″.str_replace(″″,″″,$url).″.inhebrew.co.il″;  }  if(ereg(″inhebrew.co.il/([a-zA-Z0-9/-]*)/index.html″,$word)&amp;&amp;!strstr($word,″inhebrew.co.il/sample/″))  {  $end=substr($end,1);  if(strstr($end,″/″))  {  returneregi_replace(″[[space]]+″,″″,str_replace(″-″,″-,str_replace(″@″,″@″,($end))));  }  }  returneregi_replace(″[[space]]+″,″″,str_replace(″-″,″-″,str_replace(″@″,″@″,$url)));  }  }<!--SIPO<DPn="58">--><dpn="d58"/>?>  -????FootnotecontinuedfrompreviouspageFootnotecontinuedonnextpage<!--SIPO<DPn="59">--><dpn="d59"/>  -  >packageBrain;  >  >importjava.sql.*;  >importjava.util.Vector,  >importjava.util.Hashtable;  >importjava.util.Map;  >importjava.util.Comparator;  >importjava.util.Arrays;  >importjava.util.StringTokenizer,  >  >/**  >*@authorNischala  >*@version  >*/  >publicclassPhraseCollectBean{  >  >privateintmaxResults;  >privateStringreqPhrase1;  >privateStringreqPhrase2;  >privateStringreqPhrase3;  >privateStringreqPhrase4;  >privateintstartSelCount;  >privateintendSelCount;  >privateintstartMinWords;  >privateintendMinWords;  >privatebooleanisContentCreated=false;  >  >privateVectorstartPhrs;  >privateVectorendPhrs;  >privateHashtablestMidPhrs=newHashtable(10);  >privateHashtableenMidPhrs=newHashtable(10);  >privateHashtableuniqStPhrs=newHashtable(10);  >privateHashtableuniqEnPhrs=newHashtable(10);  >  >  >privateConnectiondbConnection=null;  >  >/**CreatesnewPhraseCollectBean  >*andinitiaslizeit′spropertiestodefaultvalues  >*/  >publicPhraseCollectBean(){  >maxResults=30;  >reqPhrase1=″″;<!--SIPO<DPn="60">--><dpn="d60"/>>reqPhrase2=″″;>reqPhrase3=″″;>reqPhrase4=″″;>startSelCount=4;>endSelCount=4;>startMinWords=1;>endMinWords=1;>dbConnection=Brain.getDBConnection();>}>>publicintgetMaxResults(){>returnmaxResults;>}>>publicStringgetReqPhrase1(){>returnreqPhrase1;>}>>publicStringgetReqPhrase2(){>returnreqPhrrase2;>}>>publicStringgetReqPhrase3(){>returnreqPhrase3;>}>>publicStringgetReqPhrase4(){>returnreqPhrase4;>}>>publicintgetStartSelCount(){>returnstartSelCount;>}>>publicintgetEndSelCount(){>returnenddSelCount;>}>>publicintgetStartMinWords(){>returnstartMinWords;>}>>publicintgetEndMinWords(){>returnendMinWords;>}><!--SIPO<DPn="61">--><dpn="d61"/>>publicString[]getPhrases(){>String[]arr=-{reqPhrase1,reqPhrase2,reqPhrase3,reqPhrase4};>returnarr;>}>>publicvoidsetMaxResults(intx){>maxResults=x;>}>>publicvoidsetReqPhrase1(Stringx){>reqPhrase1=x;>//System.out.println(″Newvalue-Ibeingset..″);>}>>publicvoidsetReqPhrase2(Stringx){>reqPhrase2=x;>//System.out.println(″Newvalue-IIbeingset..″);>}>>publicvoidsetReqPhrase3(stringx){>reqPhrase3=x;>//System.out.println(″Newvalues-IIIbeingset..″);>}>>publicvoidsetReqPhrase4(Stringx){>reqPhrase4=x;>//System.out.println(″Newvalues-IVbeingset.″);>}>>publicvoidsetStartSelCount(intx){>startSelCount=x;>}>>publicvoidsetEndSelCount(intx){>endSelCount=x;>}>>publicvoidsetStartMinWords(intx){>startMinWords=x;>}>>publicvoidsetEndMinWords(intx){>endMinWords=x;>}>>privateintgetPhraseId(Stringphr){<!--SIPO<DPn="62">--><dpn="d62"/>>if(phr==null)phr=″″;>try{->if(!(phr=″″)){>returnnewPhrase(phr).getId();>}elsereturn0;>}catch(Exceptione){>System.out.println(″ExceptionwhilegettingthephraseIDfrom>Brain.Phrase(PhraseCollectBean.getPhraseld)″+e);>errors=″ExceptionwhilegettingthephraseIDfrom>Brain.Phrase(PhraseCollectBean.getPhraseId)″+e;>return0;>}>}>>privateMap.Entry[]sortByValue(Hashtableht){>java.util.Setset=ht.entrySet();>Map.Entry[]entries=(Map.Entry[])set.toArray(new>Map.Entry[set.size()]);>Arrays.sort(entries,newComparator(){>publicintcompare(Objecto1,Objecto2){>Objectobj1=((Map.Entry)o1).getValue();>Objectobj2=((Map.Entry)o2).getValue();>return((Comparable)obj2).compareTo(obj1);>}>});>returnentries;>}>>publicStringgetAssocByJoins(){>logMsg=″″;>errors=″″;>PreparedStatementp2Stmt,p1Stmt;>ResultSetp2Result=null,p1Result=null;>stMidPhrs.clear();>enMidPhrs.clear();>uniqStPhrs.clear();>uniqEnPhrs.clear();>StringBufferresultStr=newStringBuffer(″″);>StringrelativeResult=″″;>startPhrs=newVector(startSelCount);>endPhrs=newVector(endSelCount);>>ConnectiondbConnection=null;>>intpid=0;>String[]phrases=getPhrases();<!--SIPO<DPn="63">--><dpn="d63"/>>StringinQry=″″;>for(inti=0;i″);>resultStr.append(″″+i+″″);>resultStr.append(″″+p1cnt+″″);>StringtempSt=p1Pr;>if(st=startMinWords)){>ihtp1id=getPhraseId(p1Pr);>if(p1id!=0){>startPhrs.addElement″″+p1id);>st++;>resultStr.append(″″+p1Pr>+″″);>}>}else{>resultStr.append(″″+p1Pr+″″);>}>resultStr.append(″″+(String)stMidPhrs.get(p1Pr)+>″″);>resultStr.append(″″);>resultStr.append(″″+(String)enMidPhrs.get(p2Pr)+>″″);>>StringtempEn=p2Pr;>if((en=endMinWords)){>intp2id=getPhraseId(p2Pr);>if(p2id!=0){>endPhrs.addElement(″″+p2id);>en++;>resultStr.append(″″+p2Pr>+″″);>}>}else{>resultStr.append(″″+p2Pr+″″);>}>resultStr.append(″″+p2cnt+″″);>resultStr.append(″n″);>i++;>}>m++;>}>>if(i>1){>createAssignedBin();>createDataBin(stEntries,enEntries,stMidPhrs,enMidPhrs);>isContentCreated=false;>}<!--SIPO<DPn="64">--><dpn="d64"/>>/**/>}catch(Exceptione){>resultStr.append(″Exceptionwhileretrievingtheresults>(PhraseCollectBean.getAssocByJoins)″+e+″.Checkthelogforerrors″);>//System.out.println(″Exceptionwhileretrievingtheresults>(PhraseCollectBean.getAssocByJoins)″+e);>errors+=″Exceptionwhileretrievingtheresults>(PhraseCollecttBean.getAssocByJoins)″+e;>e.printStackTrace();>}>retumresultStr.toString();>}>>publicStringgetRelatives(intmaxShow){>errors=″″;>logMsg=″″;>Stringstr1=″″,str2=″″,str3=″″;>PreparedStatementp1RelStmt=null;>intnewScore=0;>HashtableuniqMidPhrs=newHashtable();>Hashtablephr1Ids=newHashtable();>Hashtablephr2Ids=newHashtable();>StringBufferrelResultStr=new>StringBuffer(″CommonPhrasesbinsurrondingrelativelycommonmiddlephrase>S.NOTotalScorephrase2″);>intsno=1;>>try{>if(dbConnection=null){>//System.out.println(″DBConnisNullingetRelatives!″);>dbConnection=Brain.getDBConnection();>}>}catch(Exceptione){>//System.out.println(″Exceptionwhilegettingconnectionfrom>Brain″+e);>}>>if((startPhrs=null)||(startPhrs.size()=0)||(endPhrs=>null)||(endPhrs.size()=0))returnrelResultStr.toString();>StringstartCond=″(″;>for(inti=0;i″+sno+″″);>StringwinName=″newwin″+m;>relResultStr.append(″″+phrScore+″″+phrKey+″″);>sno++;>}>//System.out.println(″ISContentCreated??″+<!--SIPO<DPn="65">--><dpn="d65"/>>isContentCreated);>if((!isContentCreated)&amp;&amp;(maxShow!=50)&amp;&amp;(sno>1)){>createContentBin(entries);>}>}catch(Exceptione){>//System.out.println(″Exceptionwhileexecutingquery″+e);>}>returnrelResultStr.toString()+″″;>}>>privatevoidcreateAssignedBin(){>if(!assignedHash.isEmpty())assignedHash.clear();>assignedHash.put(″maxRes″,newInteger(maxResults));>StringphraseStr=″″;>String[]array=getPhrases();>for(inti=0;i权利要求1.一种关联语言中的单词的方法,其特征在于,所述方法包括提供文档的集合,所述集合包括至少一个文档;选择第一个单词或单词串及第二个单词或单词串;定位所述第一个单词或单词串和第二个单词或单词串在所述集合中的多次出现;在所述集合中定义第一组范围和第二组范围,其中第一组范围包括所述第一个单词或单词串,第二组范围包括所述第二个单词或单词串;搜索所述第一组范围和第二组范围以查找共有单词或单词串,其中所述共有单词或单词串出现在多个范围内;及基于共有单词或单词串分别在第一组范围和第二组范围内的出现频数,将所述第一个单词或单词串和第二个单词或单词串与共有单词或单词串关联。2.如权利要求1所述的方法,其特征在于,所述关联第一个单词或单词串和第二个单词或单词串由共有单词或单词串较大的出现频数加强。3.如权利要求1所述的方法,其特征在于,所述关联第一个单词或单词串和第二个单词或单词串由共有单词或单词串较小的出现频数加强。4.如权利要求1所述的方法,其特征在于,进一步包括用本质上在语义上等价的单词或单词串替换所述第一个单词和/或单词串。5.一种关联语言中的单词的方法,其特征在于,所述方法包括提供文档的集合,所述集合至少包括一个文档;选择第一个单词或单词串及第二个单词或单词串;使用有上限和下限的定义的接近程度范围,定位第一个单词或单词串在和第二个单词和/或单词串有所述定义的接近程度的范围内多次出现的所有文档;在所定位的文档中定义范围,所述范围包括第一个单词或单词串和第二个单词或单词串;搜索所述范围以查找共有单词或单词串;及基于共有单词或单词串在范围内的出现频数,将所述第一个单词或单词串和第二个单词或单词串与共有单词或单词串关联。6.如权利要求5所述的方法,其特征在于,所述关联第一个单词或单词串和第二个单词或单词串由共有单词或单词串较大的出现频数加强。7.如权利要求5所述的方法,其特征在于,所述关联第一个单词或单词串和第二个单词或单词串由共有单词或单词串较小的出现频数加强。8.如权利要求5所述的方法,其特征在于,有所述定义的接近程度的范围的所述上限和所述下限是相等的。9.创建一种语言内的关联数据库的方法,其特征在于,所述方法包括下面的步骤提供文档的集合,所述集合至少包括一个文档;选择第一个单词或单词串;定位所述第一个单词或单词串的多次出现;在所述集合内定义范围,所述范围相对于所述第一个单词或单词串的多次出现中的每一次出现;搜索所述范围以查找共有单词或单词串,其中所述共有单词或单词串出现在多个范围内;及基于共有单词或单词串在范围内的出现频数,将所述第一个单词或单词串与共有单词或单词串关联。全文摘要分析文档并从而确定一种语言的单词之间的关联的方法和装置。所述方法包括提供一组文档、选择出现在所述文档中的第一个单词或单词串及第二个单词或单词串。所述方法进一步包括基于共有单词或单词串在该范围内的出现频率将第一个单词或单词串及第二个单词或单词串与共有单词或单词串关联。文档编号G06F17/30GK1625739SQ0282813公开日2005年6月8日申请日期2002年9月18日优先权日2001年12月21日发明者埃里·阿博申请人:埃里·阿博
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1