多种语言的数据库创建系统和方法

文档序号:6435647阅读:361来源:国知局

专利名称::多种语言的数据库创建系统和方法
技术领域
:本发明涉及一种用于创建多种语言的数据库的方法和装置,该数据库可以被用来将内容从一种状态转换成另一种状态。背景已知一些设备和方法,它们可用于将文档从一种语言自动翻译为另一种语言。但是,这些设备和方法经常无法正确地将文档从一种语言翻译为另一种语言,会耗费大量的时间,并且使用起来会不方便。除了基于人的翻译者以外,其他已知设备包括可购买到的机器翻译软件。这些已知系统具有缺点,从而使它们容易出错、速度缓慢、不方便使用。已知的翻译设备和方法无法始终如一地返回关于文本输入的正确翻译,所以常常要求用户深入细致的介入,用于实行校对和编辑。与提供执行文档的逐词翻译的设备和方法相比,正确的机器翻译更加复杂。在这些逐词翻译的系统中,翻译时常令被翻译文档的读者弄不明白意思,因为这种逐词翻译的方法会导致错误的单词选择和不连贯的语法单元。为了克服这些缺点,已知翻译设备历经数十年,一直在尝试根据词汇、语形学、句法和语义规则的组合或集合而在句子的上下文内选择单词翻译。这些系统(在该
技术领域
中被称作“‘基于规则’的机器翻译(MT)系统”)有缺陷,这是因为对于这些规则而言有如此多的例外,以致它们无法提供始终正确的翻译。除了“基于规则的MT”以外,在前十年中,已开发了一种用于MT的新方法(被称作“基于例子”(EBMT))。EBMT使用用两种不同的语言而被存储在交叉语言数据库中的句子(或可能是句子的各个部分)。当翻译查询与该数据库中的句子相匹配时,通过使用这第二种语言的正确的翻译,该数据库可产生使用目标语言的该句子的翻译。如果翻译查询的一个部分与该数据库中的句子的一个部分相匹配,则这些设备尝试正确地确定被映射到该源语言句子的该句子的哪个部分是该查询的翻译。EBMT系统无法提供广泛语言的正确翻译,因为这些交叉语言句子的数据库是手动建立的,并且将始终显著地呈现为“不完善”。EBMT系统的另一个缺点是局部匹配没有得到可靠的翻译。一直在尝试通过使用各对用于EBMT中的被翻译文档来让交叉语言数据库的创建自动化。但是,在创建任何有效尺寸的有意义的、正确的交叉语言数据库方面,这些努力却一直没有获得成功。这些尝试没有使用从一对被翻译文档中可靠、正确地提取大量单词和词串的翻译的算法。一些翻译设备将“基于规则”的引擎和EBMT引擎组合起来。虽然这种途径组合可能会产生比单独的系统更高的准确率,但是,在没有重要的用户介入和编辑的条件下,这些结果仍然不适合使用。一般地说,在尝试将文档从一种语言翻译为另一种语言时所面临的这些问题会牵涉到将表示想法或信息的数据从一种状态(比方说,单词)转换成处于另一种状态的、表示这些想法的数据(例如,数学符号)。在这类情况下,必须咨询使处于一种状态的数据与处于这第二状态的相等的数据相关联的交叉想法关联数据库。所以,需要一种改进的、更有效率的方法和装置,用于创建将使用不同语言或处于不同状态的相等的想法(例如,单词、词串、声音、移动和类似物)联系起来的词典或数据库,并用于将使用一种语言或处于一种状态的、由文档传达的想法翻译或转换成使用另一种语言或处于另一种状态的、由文档表示的相同或类似的想法。本发明涉及使用交叉想法关联数据库来处理内容。特别是,本发明提供了一种用于创建关联想法数据库的方法和装置,并提供了一种用于利用那个数据库来将想法从一种状态转换成其他状态的方法和装置。在一个实施例中,举例来讲,本发明提供了一种用于创建语言翻译数据库的方法和装置——其中,两种语言构成该关联想法数据库。本发明也提供了一种用于利用那个语言数据库来将文档(表示想法)从一种语言转换成另一种语言(或者一般地说,从一种状态转换成另一种状态)的方法和装置。但是,本发明不局限于语言翻译,尽管将介绍那个较佳实施例。本发明的该数据库创建方面可以被应用于以某种方式相关的、但以不同状态来表达的任何想法,本发明的该转换方面可以被应用于将想法正确地从一种状态翻译为另一种状态。现在将描述本发明对于语言翻译实施例的应用。如这里所使用的,与转换、翻译和处理有关的这些术语按其最广义而被加以可交换的运用。发明概述本发明的一个目的是通过提供一种用于创建并补充交叉想法关联数据库的方法和装置,来促进文档从一种语言或状态到另一种语言或状态的有效率的翻译。这些数据库一般使表示特定想法或信息的、处于第一种形式或状态的数据与表示相同的想法或信息的、处于第二种形式或状态的数据相关联。本发明的另一个目的是通过提供一种方法和装置,来促进文档从一种语言或状态到另一种语言或状态的翻译,该方法和装置用于将包括采用第一种状态、形式或语言的数据的第一文档创建成包括采用第二种状态、形式或语言的数据的第二文档,其结果是这第一和第二文档实质上表示相同的想法或信息。本发明的另一个目的是通过提供一种方法和装置,来促进文档从一种语言或状态到另一种语言或状态的翻译,该方法和装置用于将包括采用第一种状态、形式或语言的数据的第一文档创建成包括采用第二种状态、形式或语言的数据的第二文档,其结果是这第一和第二文档实质上表示相同的想法或信息,并且,其中,该方法和装置包括使用交叉想法关联数据库。本发明的又一个目的是按实时方式来提供文档的翻译(从广义上说,是想法从一种状态到另一种状态的转换)。本发明通过提供一种用于创建交叉想法数据库的方法和装置,来实现这些和其他的目的。用于创建该交叉想法数据库的该方法和装置可以包括提供表示相同的一般文本(即文本(“并行文本”)或一般的相关文本(“可比较的文本”)的确切翻译)的、使用两种(或更多种)不同语言的一对或更多对文档。本发明至少选择多次以第一种语言出现在这些可用交叉语言文档中的所有单词和词串的第一和第二次出现。然后,它在该第二种语言文档中至少选择第一单词范围和第二单词范围,其中,这第一和第二单词范围对应于该第一种语言文档中的这个所选择的单词或词串的这第一和第二次出现。接下来,它将在第一单词范围内所找到的单词和词串跟在第二单词范围内所找到的单词和词串进行比较,从而对两个单词范围共有的单词和词串进行定位,并将那些被定位的共同的单词和词串存储在该交叉想法数据库中。然后,本发明在所述交叉想法数据库中将使用第二种语言的、这两个范围内的被定位的共同的单词或词串与使用第一种语言的这个所选择的单词或词串关联起来,它们由其关联频率(再现次数)来分等级,而在此之前,如这里所详述的那样来调整这些关联频率。通过测试“并行文本”或“可比较的文本”中的共同的单词和词串交叉语言,该数据库将解析更多的关联,因为更多的“并行文本”或“可比较的文本”变得可以使用各种不同的语言。本发明也通过提供一种用于将文档从一种状态转换成另一种状态的方法和装置,来实现这些和其他的目的。本发明提供了一种数据库,该数据库包括与使用第二种语言的数据段相关联的使用第一种语言的数据段(通过以上所描述的方法或手动地来创建)。本发明通过访问以上提及的数据库并识别存在于该数据库中的、将要被翻译的该文档中的最长的词串(由单词数量来加以测量)(始于该文档的第一个单词),来进行文本的翻译。然后,该系统从该数据库中检索与来自使用第一种语言的该文档的被定位的词串相关联的使用第二种语言的词串。然后,该系统选择该文档中的第二个词串,这第二个词串存在于该数据库中并具有与该文档中先前被识别的词串重叠的单词(或者作为选择,是词串);并且,该系统从该数据库中检索与使用第一种语言的第二个词串相关联的使用第二种语言的词串。如果使用第二种语言的这些词串关联具有重叠的一个单词(或者作为选择,是多个单词),则使用第二种语言的这些词串关联被加以组合(消除该重叠中的冗余),以形成译文;如果不是这样,则通过单词重叠来为组合而检索并测试与第一种语言词串的其他的第二种语言关联,直到获得成功为止。通过找到具有与该先前被识别的第一种语言词串重叠的一个单词(或者作为选择,是多个单词)的、该数据库中的最长的词串,来选择使用第一种语言的该文档中的下一个词串;以上过程继续进行,直到这整个第一种语言文档被翻译为第二种语言文档为止。附图简述图1表现了根据本发明的交叉想法数据库的实施例。本发明的详细说明本发明提供了一种方法和装置,可用于创建并补充交叉想法数据库,并用于使用交叉想法数据库来将文档从第一种语言或状态翻译为第二种语言或状态。如这里所讨论的文档是信息的收集,它们作为由被固定在某个介质中的符号和字符来表示的想法。例如,该文档可以是被存储在磁性介质或光学介质上的电子文档或纸制文档(例如,书籍)。文档中所包含的这些符号和字符表示意在让这些文档的用户理解的、使用一种或多种表达体系来加以表达的想法和信息。本发明处理处于第一种状态(即,包含一种表达体系中所表达的信息)的文档,以产生处于第二种状态(即,包含使用第二种表达体系来加以表达的实质上相同的信息)的文档。这样,本发明可以处理各种表达体系(例如,诸如英语、希伯来语和粤语等书面语言和口头语言)之间的文档,或将这些文档翻译为其他语言。现在将详细地描述本发明——包括该数据库创建方法和装置,以及该转换方法和装置。1.数据库创建方法和装置a.纵览本发明的该方法使用交叉想法数据库来进行文档内容处理。图1描绘了一种交叉想法数据库的实施例。交叉想法数据库的这个实施例包括列1和列2中的关联数据段清单。这些数据段是在表达体系中表示特定想法或信息的符号或字符编组。这样,列1中的“体系A片段”是在假设的表达体系A中表示各种想法和想法Da1、Da2、Da3和Da4的组合的数据段。列2中的“体系B片段”是在假设的表达体系B中表示各种想法和那些想法的部分组合的数据段Db1、Db3、Db4、Db5、Db7、Db9、Db10和Db12,它们通过与表达体系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”、“adangeroussport”、“thehighestpointintheworld”或“Mt.Everest”)。这些单词和词串(其被评定的等级将很有可能会低于“mountain”的翻译)可以由该用户按需要来进行处理。这样,本发明是自动化关联数据库创建者。就某种意义来说,这些最强大的关联表示“翻译”或“转换”,但其他频繁(但较弱)的关联表示与正在被检查的该想法密切相关的想法。所以,通过使用在该
技术领域
中众所周知的人工智能应用程序,系统可以运用这些数据库。那些系统当前使用不完善的、手动创建的想法数据库或关于应用程序的、作为“神经网络”的事物本体。本发明的另一个实施例利用计算设备(例如,原先
技术领域
中可用的那种类型的个人计算机系统)。虽然该计算设备通常是普通的个人计算机(单机或在联网环境中),但是,也可以同样设想诸如PDA、无线设备、服务器、大型机或类似的设备等其他的计算设备。但是,本发明的该方法和装置不需要使用这种计算设备,它可以通过其他方法(包括手动地创建这些交叉关联)来容易地加以实现。检查连续文档以便扩大文档的“样品”并创建该交叉关联数据库的方法有变化——通过自动馈送(例如,如原先
技术领域
中已知的自动纸张馈入器),或通过使用因特网上的搜索技术来自动找出这些有关的文档(例如,WebCrawlers),可以建立这些文档,用于分析和手动处理。注意,通过除了“并行文本”以外(或者甚至取代“并行文本”)还检查“可比较的文本”,本发明可以产生关联数据库。另外,当在一种语言内搜索重现的单词或词串时,该方法查看全体所有的可用文档。b.建立该数据库根据本发明,出于建立该数据库的目的而检查这些文档。在文档输入(再次关于表示使用两种不同语言的相同文本的一对文档)之后,使用这里所描述的各种方法和/或装置来开始该创建过程。为说明起见,假设这些文档包含使用两种不同语言的相同的内容(或者,就一般意义来说,是想法)。文档A使用语言A,文档B使用语言B。这些文档具有以下的文本本发明中的第一个步骤是计算单词范围,以确定关于任何给定的单词或词串的可能的关联的近似位置。由于光是交叉语言逐词分析将不会产生有构词能力的结果(即,文档A中的单词1将经常不会作为文档B中的单词1的照字面的翻译而存在),并且,一种语言的句子结构可能会在不同于另一种语言的、句子的位置(或顺序)处具有相等的想法,因此,本发明的该数据库创建技术将使用第一种语言的每个单词或词串与在第二种语言文档中的选择范围内找到的所有这些单词和词串关联起来。这也是很重要的,因为一种语言经常在比另一种语言更长或更短的词串中表达想法。通过检查这两个文档来确定该范围,并且,使用该范围来将第二文档中的单词和词串与第一文档中的单词和词串进行比较。也就是说,第二文档中的单词或词串范围被加以检查,作为关于第一文档中的每个单词和词串的可能的关联。通过对照范围来进行测试,该数据库创建技术能建立可以等同于并翻译为第一种语言单词和词串的许多第二种语言单词或词串。必须确定两个属性,以便在第二种语言文档中建立该范围——在其中,寻找关于第一种语言文档中的任何给定的单词或词串的关联。第一个属性是第二文档中的该范围的值或尺寸,它由该范围内的词数来加以测量。第二个属性是第二文档中的该范围的位置,它由该范围的中点的布置来加以测量。这两个属性是由用户定义的,但以下提供了较佳实施例的例子。在定义该范围的尺寸和位置的过程中,目的是确保“正在加以分析的第一种语言段的第二种语言单词或词串翻译将被包括在内”的高概率。可以使用各种技术来根据文档中的词数而确定该范围的尺寸或值(包括诸如钟形曲线的导出等普通的统计技术)。利用诸如钟形曲线等统计技术,该文档的开头和末尾处的该范围将小于该文档中间的该范围。关于该范围的钟形频率允许有执行该翻译的外推法的合理机会它是根据文档中的单词的绝对数量、还是根据文档中的某个百分比的单词来导出的。存在用于计算该范围的其他方法,例如“步骤”技术——其中,该范围为某个百分比的单词而存在于一个级别,为另一个百分比的单词而存在于另一个较高的级别,并且为最后的百分比的单词而存在于等于第一个级别的第三个级别。所有的范围属性又可以根据其他可能的参数来加以用户定义或建立,其目的是捕捉关于使用第一种语言的、正在被分析的该单词或词串的有用关联。第二种语言文档内的该范围的位置可能取决于这两个文档中的词数之间的比较。出于范围位置的目的而获得文档资格的是由用户来定义的,并且由新文章、书籍各章和其他任何可分离地加以识别的内容单元(由多个数据段组成)来作为例子。如果这两个文档的单词计数约略相等,则使用第二种语言的该范围的位置将与使用第一种语言的、正在被分析的该单词或词串的位置约略相符。如果这两个文档中的单词的数量不相等,那么,可以使用比率来正确地确定该范围的位置。例如,如果文档A有50个单词,文档B有100个单词,则这两个文档之间的该比率是1∶2。文档A的中点是词位置25。但是,如果文档A中的单词25正在被加以分析,那么,将这个中点(词位置25)用作文档B中的该范围的中点的布置是无效的,这是因为这个位置(词位置25)不是文档B的中点。而用于分析文档A中的单词25的文档B中的该范围的中点可以由这两个文档之间的单词比率(即,25×2/1=50)、由文档B的中点中的手动布置或通过其他技术来加以确定。通过查看该文档中的单词或词串的该位置并记录在如上所述的该范围以内的所有单词或词串,本发明的该数据库创建技术返回可以翻译为正在加以分析的第一文档中的每个单词或词串的第二种语言文档中的可能的单词或词串集。当利用本发明的该数据库创建技术时,获得可能的翻译资格的这个单词和词串集将会随着关联频率的发展而缩小。这样,在检查一对文档之后,本发明将创建关于使用一种语言的单词和词串跟使用另一种语言的单词或词串的关联频率。在根据本发明来检查许多文档对(并且因而创建大样品)之后,该交叉语言关联数据库创建技术将返回关于任何一个单词或词串的越来越高的关联频率。在足够大的样品之后,这些最高的关联频率会产生可能的翻译;当然,该关联频率在那里被认为是正确翻译的最终的点是用户定义的,并且使用其他解释翻译技术(例如,2001年3月16日提交的标题为《用于内容处理的方法和装置》的第60/276,107号临时申请中所描述的那些技术,该申请被包括于此,用作参考)。如以上所指出的,本发明不仅测试单词,而且测试词串(多个单词)。如所述,词串在出现时包括所有标点符号和其他标记。在分析使用第一种语言的单一单词之后,本发明的该数据库创建技术按递增的方式来分析两个单词的词串、然后是三个单词的词串,等等。通过这项技术,使用一种语言的单词或词串可以翻译为使用另一种语言的较短或较长的词串(或单词),这是经常发生的现象。如果单词或词串只在使用第一种语言的所有可用文档中出现一次,则该过程立即着手分析下一个单词或词串——在那里,该分析循环再次发生。当多次以第一种语言出现在所有可用的“并行文本”和“可比较的文本”中的所有单词或词串都已被分析时,该分析停止。在某种意义上,为了寻找单词或词串的重现,可以聚集任何数量的文档,并可以将这些文档视作一个单一的文档。本质上,对于将不会重复的单词或词串而言,它将必须在所有可用的“并行文本”和“可比较的文本”中只出现一次。此外,作为另一个实施例,可以检查与每个单词和词串相对应的该范围,而不管它在所有可用的“可比较的文本”和“并行文本”中是否出现一次以上。作为另一个实施例,可以通过解析是查询的一部分的特殊的单词和词串,来建立该数据库。当为翻译而输入单词和词串时,通过使用网络爬虫(web-crawlers)和其他设备来将交叉语言文本定位在因特网上,并且,最后通过要求该用户根据该查询的分析和充分可用的交叉语言材料的缺乏来提供缺少的关联,本发明可以寻找还没有被加以分析的、被存储在存储器中的交叉语言文档中的这些单词或词串的多次出现。这样,本发明按这种方式来进行操作,以便分析取决于(那个词串中的)单词的正确定位的词串;并且,本发明可以按这种方式来进行操作,以便说明单词选择的上下文以及语法特质(例如,措词、风格或缩写)。对于提供如这里所描述的该翻译过程的该双重重叠翻译技术而言,这些词串关联也有用。重要的是要注意本发明可以容纳这些情况——其中,较大词串的子集词或词串被始终如一地返回,作为关于该较大词串的关联。本发明通过处理该频率返回,来说明这些式样。例如,有时,固有名称被提出得很完全(如在“JohnDoe”中),按名或姓来缩写(“John”或“Doe”),或按另一种方式来缩写(“Doe先生”)。由于本发明将最有可能返回比词串返回更多的单独的单词返回(即,更多的返回是关于名或姓,而不是关于全名词串“JohnDoe”),并且,因为构成词串的这些单词将有必要加以单独的计数并成为该短语的一部分,因此,应该利用用于改变该等级的机制。例如,在任何文档中,名称“JohnDoe”可能会出现一百次,而“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”可能会再次产生关联。这将曲解该分析,并返回使用第二种语言的单词“love”(而不是使用第二种语言的“Iloveyou”),用于使用第一种语言的“Iloveyou”的翻译。所以,当为关于该较大词串的关联评定等级时,该系统再次从所有子集关联的频率中减去该较大词串关联的出现次数。在图1中,也反映了这些概念。此外,当计算关于单词和词串的关联频率时,可以指示该数据库忽略诸如“it”、“an”、“a”、“of”、“as”、“in”等普通单词或任何普通单词。这将会更正确地反映这些真实的关联频率数字,否则,它们将被作为任何给定范围的一部分的普通单词的众多次出现曲解。这允许本发明的该关联数据库创建技术防止普通单词曲解该分析,而无须进行过多的减法计算。应该注意,如果没有从该关联数据库中“减去”这些或任何其他的普通单词,则最终将不会批准它们为翻译(除非在适当的情况下),这是因为这里更详细地加以描述的该双重重叠过程将不会接受它。应该注意,可以进行用于调整这些关联频率的其他计算,以确保正确地反映单词和词串的共同出现次数。例如,当被分析的单词的这些范围重叠时,用于避免双重计数的调整可能是合适的。在这些情况下,需要进行调整,以建立更正确的关联频率。现在将把以上所述的这两个文档用作例子,来描述用于根据本发明来创建并补充交叉想法数据库的该方法和装置的实施例的例子——该表格被再创建如下再次注意虽然这个实施例着重于只在单一文档中再现单词和词串,但是,这主要是出于说明的目的。总的说来,将使用所有可用的“并行文本”和“可比较的文本”,来分析再现单词和词串。使用以上列出的这两个文档(A——第一种语言,以及B——第二种语言),该数据库创建技术可采用以下步骤。步骤1.首先,确定该范围的尺寸和位置。如所指出的,该尺寸和位置可能是用户定义的,或者可能通过各种方法来约计。这两个文档的词计数近似相等(文档A中有10个单词,文档B中有8个单词),所以,我们将定位该范围的中点,以便与文档A中的该单词或词串的位置相符。(注意由于这些文档之间的词计数比率是80%,因此,作为选择,可能已应用分数4/5来建立该范围的位置)。在这个例子中,3的范围尺寸或值可以提供最佳的结果,以约计钟形曲线;该范围将会是该文档的开头和末尾处的(+/-)1,以及中间的(+/-)2。但是,如所指出的,该范围(或被用来确定该范围的该方法)完全是用户定义的。步骤2.接下来,对照文档A来检查并测试文档A中的第一个单词,以确定那个单词在该文档中的出现次数。在这个例子中,文档A中的第一个单词是XX在文档A中出现三次——在位置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的下一个位置;但是,单词X不再出现在文档A中。这时,为使用语言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.范围递增(incrementation)的末尾由于关于单词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.由于“Y”不再出现在文档A中,因此,该分析在文档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.由于“YZ”不再出现在文档A中,因此,该分析在文档A中递增一个单词,并且,词串“YZX”被加以检查(文档A中的位置3处的单词Z后的下一个单词)。通过递增到下一个词串(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的关联频率。但是,这个关联没有被计数,因为已在以上Z2的关联中说明词位置8中的CC。当重叠的范围将使该过程对出现进行双重计数时,该系统可以降低该关联频率,以便更正确地反映真实的出现的次数。步骤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、BBCC、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,作为可能的关联;但是,由于CC表示通过分析位置8处的Z和位置10处的Z而达到的相同的词位置,因此,该关联被忽略不计。步骤21.通过递增一个单词,可产生词串ZX;这个词串不再出现在文档A中的(前面的)位置中,所以,该过程在文档A中的下一个单词——“X”处重新开始。单词X不再出现在文档A的(前面的)位置中,所以,该过程重新开始。但是,文档A的末尾已被达到,并且,该分析停止。步骤22.这个最后的关联频率被制成表格,从而将来自上文的所有这些结果组合起来,并扣除(subtractingout)如解释的复制品。可能会有不充足的数据,以返回关于文档A中的单词和词串的决定性结果。但是,当检查包含具有以上被检查的那些关联的单词和词串的更多文档对时,这些关联频率将变得在统计上更加可靠,以便语言A与B之间的单词或词串将建立关于单词和词串的可能的翻译的强大关联。该数据库创建方法的实施例的例子(结合该
技术领域
中已知类型的计算机系统来进行操作)是以下的程序$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′,′′,′poser′,′de′,′le′,′la′,′les′,′et′,′′,′en′,′si′,′que′,′qui′,′celui′,′ce′,′ces′,′cet′,′cettes′,′dansle′,′dansla′,′sont′,′dela′,′du′,′de′,′de′,′′,′par′,′′,′la′,′au′,′aux′,′comme′,′si′,′enavant′,′sur′,′un′,′une′,′vers′,′avec′,′il′,′′,′′,′devoir′,′,′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′,′′,′eres′,′son′,′del′,′cerca′,′allado′,′estar′,′ser′,′al′,′como′,′encendido′,′un′,′arroba′,′con′,′desde′,′′,′voluntad′,′tiene′,′hay′,′deber′,′dijo′,′yo′,′pero′,′sino′,′′,′tan′,′o′,′′,′quien′,′′,′no′,′′,′solamente′,′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(″His″).″<BR>\n″);$filelist=file(″http//128.241.244.166/list.php?dir=$dir&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(″&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(″&htab;″,″″,$temp1[$m]));if($temp1[$m]!=″″)$temp2.=$temp1[$m];}$filearray[″$temp″]=utf8_encode($temp2);}}fputs($fp,date(″His″).″<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″;if($debug==″true″)$filexist=″true″;if($filexist==″true″){if($mainarray[$t]&&$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++){if(!ereg(″[^a-zA-Z]″,$olngstp[$i]))$olngstp[$i]=strtolower($olngstp[$i]);}$sumetp=count($lngstp);$sumhtp=count($olngstp);if($sumetp>$sumhtp){$margintp=round($sumetp/($sumetr$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&&$lngs[$i+$p]==$lngstp[$n+$p]&&$lngstp[$n+$p]!=″″)#checkifthe$nwordsmatch.{$theb.=$lngs[$i+$p].″″;$theb1=trim($theb);if(!ereg(″[`~!@#$%^&*()<>_+=-?.,;/\]″,$theb1)&&!ereg(″″,substr($theb1,0,1))&&!ereg(″^*$″,$theb1)&&$theb1!=″″&&substr($theb1,0,1)!=″-″&&!ereg(″″,substr($theb1,-1))&&substr($theb1,-1)!=″-″&&substr($theb1,0,1)!=″′″&&substr($theb1,-1)!=″′″&&$theb1!=″′″&&$theb1!=′″′&&!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);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=$extradsm;$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&&$x>$e)||$t!$j)#$n>$e&&{$a=0;while($olngs[$e+$a)==$olngstp[$x+$a]&&$olngs[$e+$a]!=″″){$teng.=″″.$olngs[$e+$a];$teng=trim($teng);if(!ereg(″[`~!@#$%^&*()<>_+=-?.,;/\]″,$teng)&&!ereg(″″,substr($teng,0,1))&&!ereg(″^*$″,$teng)&&$teng!=″″&&substr($teng,0,1)!=″-″&&!ereg(″″,substr($teng,-1))&&substr($teng,-1)!=″-″&&substr($teng,0,1)!=″′″&&substr($teng,-1)!=″′″&&$teng!=″′″&&$teng!=′″′&&!in_array($teng,$exclude_fre)){$temparray=array_keys($array[$theb1]);if(in_arrray($teng,$temparray)){$temp=$array[$theb1][$teng];if(!strstr(″$temp″,″,$x,″))#&&!strstr(″$temp1″,″,$e,″)){$array[$theb1][$teng]=$temp.″$x,″;}}else{$array[$theb1][$teng]=″,$x,″;}}$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][″hebre_c″],″,″)-1>0){$lngc=substr_count($array[$lng][″hebrew_c″],″,″)-1;$tempolng=array_keys($array[$lng]);$n=1;while($n<count($tempolng)&&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]\″)″;MYSQL(″brain″,$query,$stream)ordie(″#3Can′t$query″.MYSQL_ERROR());}$n++;}}}MYSQL_CLoSE($stream);$dbend=getmicrotime();$time=$dbend-$dbstart;fputs($fp,″dbtook$time\n″);}$file_end=getmicrotime();}}}}$allend=getmicrotime();$time=$allend-$allstart;fputs($fp,″thewholetook$time\n″);fputs($fp,″final″.date(″Y-m-dHis″).″-$calc-<BR>\n″)fclose($fp);.?>如所展示的,这个实施例表示被用来创建关联的该技术。本发明的这些技术不需要局限于语言翻译。从广义上来说,这些技术将应用于可能有关联的相同想法的任何两种表达,因为外语翻译本质上只是作为不同的单词或词串所表示的相同想法的成对关联而存在。这样,本发明可以被应用于将数据、声音、音乐、视频或作为想法(包括可以表示任何感觉(声音、视觉、嗅觉等)体验的想法)而存在的任何广泛范围概念关联起来。所要求做的只是本发明分析两个实施例(在语言翻译中,这些实施例是文档;关于音乐,这些实施例可能是乐谱的数字表示和表示相同的乐曲作品的声音频率等)。在另一个实施例中,该
技术领域
中众所周知的基于某个规则的算法可以被并入该交叉语言关联,从而学习处理某些类别的文本,这些类别的文本为上下文和含义起见是可交换的(并且,有时可以具有潜在无限的词源)(例如,名称、号码和日期)。此外,如果可用的交叉语言文档不供应关于翻译的有重要统计意义的结果,则用户可以检查关于翻译和其他关联的这些可能的选择,并且批准合适的选择并为它们分等级。如所描述的,当为关联频率而分析被翻译的成对的更多文档时,这些关联频率在单词与词串之间变得更强大。当检查使用更多语言对的文档时,本发明的该方法和装置将根据具有与第三种语言的共同关联、但彼此没有直接的关联的那些语言,来开始填充各个语言对之间的“推导关联”。此外,当被翻译的文档使用多种语言时,可以跨越几种语言来分析共同关联返回,直到所有语言对之间只存在一个共同关联,它是该翻译。以下是一种计算机程序的例子,(当结合该
技术领域
中的已知类型的计算机系统来加以操作时)该计算机程序提供一种方法——其中,在本发明的实施例中利用使用这些语言的数据<prelisting-type="program-listing"><![CDATA[<?$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_twhereolanq=′″.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);?>]]></pre>当使用这些语言的文本共享使用第三种语言或各种语言的共同定义时,可以在使用一对语言的文本之间产生推导关联。该文本可以是将要被翻译的文档的一个部分或片段(例如,单词或短语)。例如,如表格1所示,如果没有充足的交叉语言文本来将语言A短语“aaddpz”直接翻译为语言B短语,则推导出关联可以包括将这个语言A短语与使用语言C、D、E和F的该短语的翻译进行比较,其中,有充足的交叉语言文本来执行这些翻译。然后,如表格2所示,如果有充足的交叉语言文本来执行这些翻译,那么,可以将使用语言C、D、E和F的“aaddpz”的这些译文翻译为语言B。推导出语言A短语“aaddpz”与使用语言B的短语之间的该关联进一步包括比较已从“aaddpz”的语言C、D、E和F译文被翻译的这些语言B短语。已从“aaddpz”的语言C、D、E和F译文被翻译的这些语言B短语中的部分短语可能是相同的,并且,在本发明的这个较佳实施例中,这些短语将表示语言A短语“aaddpz”的正确的语言B翻译。如表格2所示,到语言B的语言C、D和F翻译会产生相同的语言B短语,以产生正确的语言B翻译“UyTByM”。这样,可以在语言A短语与其正确的语言B翻译之间创建推导关联。变为语言B的语言E翻译会产生不相同的语言B短语ZnVPiO。这可能指出语言E短语“153”具有一种以上的含义,或者,语言B短语UyTByM和ZnVPiO是可交换的。表格1表格2在另一个实施例中,通过使用以上所描述的本发明的该方法和装置,可以改进该
技术领域
中已知的现存翻译系统的正确度。现存的翻译系统将产生从语言A到语言B的结果;可以将这个结果与来自语言A到其他语言(例如,语言C、D、E和F)的翻译(在原先技术的这些系统和装置中)的结果进行比较,随后与来自使用原先技术的系统和装置的、到语言B的那些翻译的结果进行比较。通过使用本发明的该方法和装置,可以比较这些不同的语言B翻译结果之中的这些翻译的合成的共同部分,以产生更正确的翻译。只要该翻译查询的每个片段具有最少的用户定义数量(至少是2个)的、被翻译为语言B的相同结果,就可以按正确的方式来翻译这整个短语。如果该用户定义的最少数量的、变成该目标语言的不同翻译没有验证翻译的任何部分,则可以为该用户加亮这些未决定的部分。这样,通过使用具有不同翻译引擎语言对的多种语言手段,最后产物的正确度可以得到引人注目的改进,并且,仍然未决定的部分可以被明确地加以识别。本发明及其对任何翻译引擎集的运用的实施例的例子如下所述(在这个例子中,将要被翻译的该短语是从语言A翻译为语言B的短语“zzpdlznzkixo”)首先,本发明使用任何现存的翻译系统来将该短语从语言A直接翻译为语言B,并且,该结果被存储,供以后处理。其次,本发明将使用语言A的该短语翻译为其他语言(出于这个例子的目的,利用语言C、D、E和F)。这样,通过使用现存的翻译系统,使用语言A的该已知短语被翻译为语言C,使用语言A的该已知短语被翻译为语言D,使用语言A的该已知短语被翻译为语言E,并且,使用语言A的该已知短语被翻译为语言F。不同的翻译系统和方法可以被用于这些不同的语言翻译;即,相同的翻译设备或系统不必始终如一地被用于从语言A到语言B、C、D、E和F的这些翻译。存储从语言A的这些翻译中的每个翻译的结果,供以后处理。再次,利用来自以上这些操作的结果,来将该短语从各种语言(在这个实施例中是语言C、D、E和F)翻译为语言B。通过使用原先技术的现存的翻译设备和系统,关于使用语言C的该短语的合成的译文(即,如这里所描述的那样被获得和存储的、从语言A到语言C的翻译的结果)使用该
技术领域
中已知的翻译系统或设备而被翻译为语言B。再有,在本发明中,不必要利用被用来将该短语从语言A翻译为语言C的相同的、已知原先技术翻译系统来同样地将使用语言C的这个合成的短语翻译为语言B。例如,可以使用翻译设备X来执行该短语从语言A到语言C的翻译,同时,可以使用翻译设备Y来执行该短语从语言C(是使用设备X的结果)到语言B的翻译。存储该合成的翻译(从语言C到语言B),供以后处理。该过程继续进行——来自该短语的语言A翻译的这些结果被应用于其他语言,以创建该短语的语言B翻译。这样,通过使用原先技术的现存的翻译设备和系统,关于使用语言D的该短语的合成的译文(即,如这里所描述的那样被获得和存储的、从语言A到语言D的翻译的结果)使用该
技术领域
中已知的翻译系统或设备而被翻译为语言B;从上述各项操作中获得和存储的、关于使用语言E的该短语的合成的译文被翻译为语言B,并且,最后,从上述各项操作中获得和存储的、关于使用语言F的该短语的合成的译文被翻译为语言B。以下的表格3和表格4中示出以上的各个步骤,以便使用不同语言的已知翻译系统来将短语“zzpdlznzkixo”从语言A(已知)翻译为语言B(目标)表格3表格4比较该直接的语言B翻译和这四个间接的语言B翻译的结果,跨越这些翻译而出现一次以上的片段是正确的确定性很高。二以上的每个1共同翻译结果甚至为这些结果的正确度提供更高的确定性·“ZwI”被从A(直接)、C、D和F的翻译验证·“LoL”被从C、D和F的翻译验证·“PzO”被从A(直接)、C、D和E的翻译验证·“KrL”被从A(直接)、C和E的翻译验证·“IoR”被从A(直接)和F的翻译验证通过使用以上所描述的该过程,可产生将会是“ZwILoLPzOKrLIoR”的结果合成翻译。被用于多种语言手段(被应用于其他翻译引擎)的语言数量是用户定义的。被用来验证词串或其他任何数据段的正确翻译的、通过其他语言的间接翻译越多,本发明将产生正确翻译的统计确定性就越大。此外,在另一个实施例中,当在从各种语言的翻译之间进行比较时,可以将词典加入该系统,以了解这些不匹配的片段中的任何片段是否是同义的,在这种情况下,这些同义词之一可以被批准或被加亮,作为同义词匹配。如果处于现存状态的表达被人为地认为与处于另一种状态的数据点有特殊的关联并在数据库中按目录来加以分类,则将可以在那两种状态之间实行转换。例如,如果使用某种形式、状态或语言来表示的每个“想法”被分配与电磁波(语调)的关联,则它将创建该想法的“电磁表示”。一旦已利用对应的电磁表示来为给定数量的想法编码,数据(采用想法的形式)就可以被转换成电磁波,并且立刻在常规的电信基础结构上被加以传送。当这些电磁波达到该目的机器时,该机器将这些波合成为单独的成分,并且,假设这些关联(连同排序指令、如这里所描述的该双重重叠技术的运用和/或其他可能的方法),则呈现这些电磁表示所表现的单独的想法。2.想法转换方法和装置本发明的另一个方面针对提供一种方法和装置,用于将包括使用第一种状态、形式或语言的数据的第一文档创建成包括使用第二种状态、形式或语言的数据的第二文档,其最终结果是这第一和第二文档表示实质上相同的想法或信息,并且,其中,该方法和装置包括使用交叉想法关联数据库。该翻译方法的所有实施例利用双重重叠技术来获得想法从一种状态到另一种状态的正确的翻译。对比而言,原先技术的翻译设备着重于单独的单词翻译,或者利用基于特殊规则的代码来促进从第一种语言到第二种语言的翻译。使用该重叠技术的本发明允许使用第二种语言的单词和词串被有机地连接在一起,并按用这第二种语言来书写那些单词和短语的确切的方式而成为其正确的上下文中的正确翻译。在本发明的实施例中,用于数据库创建的该方法和该重叠技术被结合起来,以提供正确的语言翻译。这些语言可以是任何类型的转换,并且不一定局限于口头/书面语言。例如,该转换可以包含计算机语言、特殊的数据代码(例如,ASCII)和类似物。该数据库是动态的;即,当内容被输入该翻译系统时,该数据库得到发展——使用在以前某个时间被输入的内容的该翻译系统有连续的迭代。本发明的该较佳实施例利用计算设备(例如,原先
技术领域
中的可用类型的个人计算机系统)。但是,该系统不需要使用这种计算设备,并且可以通过其他手段(包括该数据库的手动创建和各种翻译方法)来容易地实现。本发明可以被用于普通的计算机系统上,该普通的计算机系统至少具有显示工具、输入方法和输出方法以及处理器。该显示工具可以是原先
技术领域
中的可用的任何显示工具(例如,阴级射线终端、液晶显示器、平板显示器和类似的显示工具)。该处理器工具也可以是在计算环境中所具备的和所使用的任何处理器工具,以便该工具被提供用来允许该计算机进行操作,以执行本发明。最后,为了建立该交叉关联数据库,可利用输入方法来允许输入这些文档;如上所述,用于转换成数字方式的这种特殊的输入方法可以根据该用户的这些需求而发生变化。a.手动数据库创建和通过双重重叠技术的翻译现在将描述根据本发明的、用于将文档从第一种语言翻译为第二种语言的该方法和装置的实施例的例子,其中,通过向该用户查询单词和词串的翻译,并通过使用该双重重叠技术来自动生成片段翻译,可以制定该交叉语言数据库。为了描述该较佳实施例,将使用一个例子——其中,使用英语的数据被翻译为使用希伯来语的数据。这些选择只是出于描述的目的,而不是意在限制第一种和第二种语言的选择。根据本发明的较佳实施例,该计算机系统进行操作,以创建从英语到希伯来语的各个翻译之间的关联的数据库。该翻译方法至少包含以下步骤首先,将使用英语的数据输入该计算机系统。其次,先在逐词的基础上检查该英语输入的所有单词。该数据库将返回使用希伯来语的已知单词翻译。如果该翻译不被包括在该数据库中,那么,该计算机系统将按某种方式进行操作,以便向该用户查询,从而输入该合适的翻译。这样,如果该数据库不知道与输入的英语单词相等的希伯来语,则该计算机将要求该用户提供该合适的希伯来语相等物。然后,该用户将会返回该翻译,并将所述翻译输入该数据库。一经随后使用,该计算机系统就将按某种方式来操作该数据库,以便依靠该用户在早先的某个时刻的有关输入,来了解该翻译。这样,在第二个步骤中,以其分析状态(例如,逐词地)来检查该输入数据,并且,这些合适的翻译要么被返回(依靠该数据库的这项操作),要么被输入该数据库。再次,按某种方式来检查该输入数据,以便递增这些被分析的片段。例如,如果首先在逐词的基础上分析该数据,则本发明的该翻译方法接下来通过评估两个词串来检查该输入数据。再利用类似于以上所描述的方式的一种方式,该数据库可返回关于这两个词串的翻译(如果知道的话);如果不知道,则该翻译系统进行操作,来向该用户查询,以输入关于所有可能的两个词串的合适的翻译。然后,所有重叠的2个词片段被存储在该数据库中。例如,如果词串由四个单词组成,那么,该数据库进行核对,以了解它是否具有在存储器中被翻译的以下组合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”)。在经历该分析之后,本发明的该方法随后比较这些被返回的翻译相等物,消除这些被重叠的片段中的冗余,并将这个被翻译的短语输出给该用户。b.通过关联数据库和双重重叠技术的文档翻译作为另一个较佳实施例,通过使用如上所述的交叉语言数据库来提供该文档中的单词和词串的词串翻译,本发明可以将使用第一种语言的文档翻译为使用第二种语言的文档;然后,本发明可以使用以上所描述的该交叉语言双重重叠技术,来组合使用第二种语言的重叠的词串,以提供该文档的翻译。例如,考虑有权使用足够多的交叉语言文档的数据库,来解析用英语输入并且意在被翻译为希伯来语的以下句子的各个成分“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”,它是想要被翻译的该文本的译文。这个过程一完成,本发明就进行操作,以返回这个被翻译的最后文本,并输出该文本。应该注意,这些返回是该数据库的最终结果,该数据库根据以上所描述的该过程来返回重叠的关联。通过该过程,该系统最终将不会接受使用第二种语言的返回,该返回不具备与通过重叠的这些邻接的第二种语言片段的自然适合的连接。如果任何希伯来语返回都不具备与邻接的希伯来语词串关联的确切重叠,则它将会被拒绝并且由希伯来语词串关联来取代,该希伯来语词串关联与这些邻接的希伯来语词串重叠。本发明的较佳实施例的例子利用以下的计算机程序,该计算机程序结合该
技术领域
中的已知类型的计算机系统来进行操作&lt;?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,$longestolang){$tempmax=$max;${$olang}=$osmean;${$lang}=$mean;$mean=explode(″″,$mean);$osmean=explode(″″,$osmean);for($m=$mm;$m<count($mean);$m++){unset($string);for($l=$m;$l<count($mean);$l++)$string.=$mean[$l].″″;$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&lt;&gt;″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;$tempmatch!=″yes″){list(${″temp″.$lang},${″temp″.$olang})=MYSQL_FETCH_ROW($result1);$tempmean=explode(″″,${″temp″.$lang});$tempomean=explode(″″,${″temp″.$olang});$tg=$m;$tm=0;unset($tempmatch);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};$omaan=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)4count($tempmean)-1>$max)#singlewordoverlap{$max=$m+count($tempmean);$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(substrcount(${$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(substr($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]){$tlang=${$lang}.substr(${″temp″.$lang},strlen($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″);returnarray;}functiontranslate($word,$lock,$tags,$baselang){global$id_t,$prefix_t,$dictionary_t,$baselang=″hebrew″;if(!$word)return;if($transeng==″true″){if(ereg(″[a-zA-Z]″,$word))return$word;}if($baselang==″hebrew″){$spaceit=″true″;$emailend=″″;}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_t)){$word=str_replace(hebrev($id_t),″″,$word);$systemsite=″true″;}if($word)##################www.something##################{#####################if(strstr($word,″http//www.inhebrew.co.il/nsia.html″)){$word=split(″=″,$word);$word=split(″&amp;″,$word[1]);return$word;}#####################if(strstr($word,″//″)){$temp=explode(″//”,$word);$address=$temp[1];}else$address=$word;$address=explode(″/″,$address);$addresscheck=$address;if(!ereg(″[a-zA-Zà-ú]″,$addresscheck))$addresscheck=$address[1];if(ereg(″[a-zA-Z]″,$addresscheck)){$lang=″english″;$olang=$baselang;if(strtolower(substr($word,0,7))==″http//″){$word=substr($word,7);$pre=″_èè_//″;}if(strtolower(substr($word,0,8))==″https//″){$word=substr($word,8);$pre=″//″;}if(strtolower(substr($word,0,6))==″ftp//″){$word=substr($word,6);$pre=″_è_//″;}}elseif($baselang==″hehrew″){$lang=″hebrew″;$olang=″english″;if(substr($word,0,8)==″_èè_//*″){$word=substr($word,8);$pre=″http//″;$upper=″true″;}elseif(substr($word,0,7)==″_èè_//″){$word=substr($word,7);$pre=″http//″;}elseif(substr($word,0,9)==″//*″){$word=substr($word,9);$pre=″https//″;$upper=″true″;}elseif(substr($word,0,8)==″//″){$word=substr($word,8),$pre=″https//″;}elseif(substr($word,0,7)==″_è_//*″){$word=substr($word,7),$pre=”ftp//″;$upper=″true″;}elseif(substr($word,0,6)==″_è_//″){$word=substr($word,6),$pre=″ftp//″;}elseif(substr($word,0,1)==″*″){$word=substr($word,1);$upper=″true″;}}elseif($baselang==″japanese”){$lang=″japanese″;$olang=″english”;}elseif($baselang==″chinesesim″){$lang=″chinesesim″;$olang=″english”;}$s=0;$tempreplace=strtolower($word);while($s<strlen($tempreplace)){if(!ereg(″[à-úa-zA-Z0-9\′\″]″,$tempreplace[$s])){$tempreplace=substr_replace($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=″&lt;fontcolor=\″$color\″&gt;″;$close=″&lt;/font&gt;″;if($color==″red″)$color=″blue″;else$color=″red″;}if(ereg(″[à-úa-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′terror#0.2-′$query′″.MYSQL_ERROR());if(MYSQL_NUMROWS($result)==1){list(${$lang},${$olang})=MYSQL_FETCH_ROW($result);$space.=″″.$open.${$olang).$close;$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&lt;&gt;′′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($longeatolang);unset($longestlang);while($n<MYSQL_NDMROWS($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);$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″],$array[″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;}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à-ú]″,$spaceaddress[$s]))$space=$space.″″$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;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à-ú]″,$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à-ú]″,$spaceaddress[$s])){$space=$space.″″.$open.convert(substr($spaceaddress[$s],0,1),$baselang).$close;print″##″;}elseif(ereg(″[a-zA-Zà-ú]″,$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;$spaceaddress[$s]=substr($spadeaddress[$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(″([à-ú]).([/-/à-ú/-/]*)@$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)));}}?&gt;以上的实施例结合使用交叉语言关联数据库和该交叉语言双重重叠翻译技术,该实施例具有其他潜在的应用,以改进尝试使信息从一种状态到另一种状态保持相等的现存技术的质量(例如,语音识别软件,以及该
技术领域
中已知的OCR扫描设备)。这两种技术可以依照本发明的各种翻译方法来测试其系统的结果。当翻译不存在并因此假定错误时,可以警告并查询该用户,或者,可以为该系统编程,以便在该数据库中寻找关于未被重叠的翻译的接近的替换物(将产生被重叠的翻译)。当然,对该用户的所有返回将会被转换回到该原始语言。精通该
技术领域
的人将会理解在不脱离本发明的精神和范围的前提下,技术娴熟的专业人员可以执行以上所描述的该装置和方法中的许多变化。权利要求1.一种用于将使用第一种语言的文档片段翻译为使用第二种语言的文档片段的方法,其特征在于包括以下步骤使用现存的翻译系统,来提供使用第一种语言的该文档片段与使用多个第三种语言中的每个语言的文档片段之间的第一关联;处理该第一关联,以便使用现存的翻译系统来提供使用多个第三种语言中的每个语言的该文档片段与第二种语言之间的第二关联;使用所述第二关联,来将相同的至少两个样品片段识别为使用这第二种语言的推导关联片段;以及,将使用这第二种语言的该推导关联片段与使用这第一种语言的该文档片段关联起来。2.权利要求1的方法,其特征在于,这多个第三种语言至少包括一个第三种语言。3.权利要求2的方法,其特征在于进一步包括使用一种用于识别相等语义含义的片段的方法,来将不相同的样品片段识别为可交换的片段。4.一种包括处理器、被耦合到该处理器的存储器以及被存储在该存储器中的程序的计算机设备,其特征在于,该计算机被配置成执行该程序并执行以下步骤;使用现存的翻译系统,来提供使用这第一种语言的该文档片段与使用多个第三种语言中的每个语言的文档片段之间的第一关联;处理该第一关联,以便使用现存的翻译系统来提供使用多个第三种语言中的每个语言的该文档片段与第二种语言之间的第二关联;使用所述第二关联,来将相同的至少两个样品片段识别为使用这第二种语言的推导关联片段;以及,将使用这第二种语言的该推导关联片段与使用这第一种语言的该文档片段关联起来。5.权利要求4的计算机设备,其特征在于,这多个第三种语言至少包括一个语言。6.权利要求5的计算机设备,其特征在于进一步被配置成执行这个步骤通过识别相等语义含义的片段,来将不相同的样品片段识别为可交换的片段。7.一种其上存储有计算机处理器可执行的程序的计算机可读存储介质,其特征在于该程序用于执行以下步骤使用现存的翻译系统,来提供使用这第一种语言的该文档片段与使用多个第三种语言中的每个语言的文档片段之间的第一关联;处理该第一关联,以便使用现存的翻译系统来提供使用多个第三种语言中的每个语言的该文档片段与第二种语言之间的第二关联;使用所述第二关联,来将相同的至少两个样品片段识别为使用这第二种语言的推导关联片段;以及,将使用这第二种语言的该推导关联片段与使用这第一种语言的该文档片段关联起来。全文摘要一种方法和装置,用于将使用第一种语言(1)的文档片段翻译为使用第二种语言(2)的文档片段。文档片段可以是采用在文档中直接翻译(3)的单词的形式的文本。在没有充足的信息来将使用这第一种语言的该文档直接翻译为使用这第二种语言(3)的该文档的情况下,可以使用本发明。本发明包括提供使用这第一种语言(1)的该文档片段与使用多个第三种语言中的每个语言的文档片段之间的关联;提供使用这第二种语言(2)的各个样品片段之间的关联,其中的每个样品片段对应于使用这多个第三种语言中的每个语言的片段;将相同的至少两个样品片段识别为推导关联片段;以及,使该推导关联片段与使用这第一种语言(1)的该文档片段相关联。文档编号G06F17/27GK1620659SQ02828245公开日2005年5月25日申请日期2002年8月13日优先权日2001年12月21日发明者埃里·阿博申请人:埃里·阿博
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1