首页> 中国专利> 分布式模型的编码和自适应、可扩展访问

分布式模型的编码和自适应、可扩展访问

摘要

用于以自动机器处理的方式访问分布式模型的系统、方法和装置,包括使用在机器翻译、语音识别和其他应用中的大型语言模型。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-09

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F17/28 变更前: 变更后: 申请日:20070216

    专利权人的姓名或者名称、地址的变更

  • 2013-04-10

    授权

    授权

  • 2009-04-08

    实质审查的生效

    实质审查的生效

  • 2009-02-04

    公开

    公开

说明书

本申请要求以下两个美国专利申请的权益,并通过引用将其全部公开包括在此:

2006年2月17日提交的No.60/774,790,名称为“Encoding andAdaptive,Scalable Accessing of Distributed Models”;以及

2006年2月21日提交的No.60/775,570,名称为“Encoding andAdaptive,Scalable Accessing of Distributed Models”。

技术领域

本申请的说明书涉及机器处理,其使用诸如计算机之类的机器来执行诸如机器翻译的处理任务。

背景技术

机器(诸如计算机和基于计算机的机器)被广泛使用,以使各种处理任务自动化。由于计算机信息技术和通信技术的进步,正进一步使过去机器很难处理的某些任务自动化。语言翻译和语音识别是两个正被自动化的机器处理任务的示例。

可以用各种方式将一种人类语言或自然语言(源自然语言)翻译成另一种自然语言(目标自然语言)。某人可以通过首先阅读并理解源自然语言(例如,中文)文本,并接着用目标语言(例如,英语)写下对应的文本,来人工翻译源自然语言的文本。这样的人工翻译质量很高,但价格昂贵且速度较慢。机器翻译使用计算机和其他机器来使部分或全部翻译过程自动化,以降低翻译成本并加快翻译过程。基于规则的机器翻译和统计(statistical)机器翻译是机器翻译技术的两个示例。机器翻译系统可易于使用:用户将源自然语言的数字文档发送到机器翻译系统;系统处理该文档并生成目标自然语言的翻译后文档。机器翻译在广泛的应用范围中正得到越来越多的使用。例如,在很多计算机网络(例如因特网)上可取得提供机器翻译的资源,以允许轻松地访问不同自然语言的信息。

然而,机器翻译系统的翻译质量可能比人工翻译要差,并且有时机器翻译的文本可能是令人难以或者无法理解的。已经开发了包括统计机器翻译技术在内的各种机器翻译技术,以提高机器翻译的不同方面,诸如翻译质量和翻译速度。

发明内容

本说明书描述了分布式机器处理系统、技术、方法、和装置,将其实现以使用资源分区、复制、和负载平衡来访问大型模型并提供可扩展和自适应的处理。基于上述技术可构建各种分布式机器处理系统,包括机器翻译系统、语音识别系统、垃圾邮件检测系统、光学字符识别系统、拼写校正系统、实体检测系统、信息提取系统等。

在一个方面中,一种系统被描述为包括计算机数据服务器,每个计算机数据服务器都存储并可操作性地提供数据集合的分区。各个分区共同构成了数据集合,并且每个分区都小于数据集合。该系统还包括处理服务器,其可操作性地从数据服务器获取数据,并使用所获取的数据来处理输入并生成输出。可将系统实现为对每个数据服务器包括一个或多个副本(replica)数据服务器。在一个实现方式中,数据集合是关于目标语言的语言模型的数据。语言模型包括目标语言中的n元模型(n-gram),以及关于n元模型每一元的统计数据。n元模型可以包括N-元,其中N大于3。处理服务器是可操作性地使用从语言模型中获取的数据,将输入中的源语言的文本翻译成目标语言的翻译服务器。可用各种配置来实现处理服务器,例如:语音识别服务器,其可操作性地使用从语言模型中获取的数据将输入中的目标(源?)语言的人类语音转换为目标语言的文本;拼写校正服务器,其可操作性地使用从语言模型中获取的数据对输入中的目标语言的单词的拼写进行校正;或光学字符识别服务器,其可操作性地使用从语言模型中获取的数据对输入中的所接收的文档图像中的文本进行识别。

在另一个方面中,一种用于机器翻译的系统可包括机器翻译资源服务器,以及至少一个翻译服务器。为将源语言翻译成目标语言,每个机器翻译资源服务器存储并可操作性地提供机器翻译资源数据集合的分区。各个分区共同构成了机器翻译资源数据的集合,并且每个分区都小于机器翻译资源数据的集合。翻译服务器可操作性地接收待翻译成目标语言的源语言的源文本,并且还可操作性地从机器翻译资源服务器中获取机器翻译资源数据,并使用获取的机器翻译资源数据来将源文本翻译成目标语言。

在另一个方面中,一种用于机器翻译的系统可包括翻译服务器,其可操作性地通过从在源语言和目标语言之间进行翻译的翻译模型中获取翻译模型数据、以及从目标语言的语言模型中获取语言模型数据,来执行机器翻译。翻译服务器还可操作性地使用所获取的翻译模型数据和语言模型数据,将源语言的文本翻译成目标语言。翻译服务器包括:请求队列,其可操作性地存储关于为了翻译源语言的片段而要获取的语言模型数据的请求;以及片段翻译服务器缓存,其可操作性地存储由翻译服务器的请求而获取的语言模型数据。

在另一个方面中,一种用于机器翻译的方法可将把源语言翻译为目标语言的机器语言翻译资源数据集合分割为分区,每个分区都小于机器语言翻译资源数据的集合。分区被分别存储在不同的计算机服务器上。为执行从源语言到目标语言的翻译,运行机器翻译服务器来访问并使用在不同计算机服务器上的机器语言翻译资源数据的集合。

在另一个方面中,描述了一种方法,其通过使用在源语言和目标语言之间进行翻译的翻译模型和目标语言的语言模型,将文本从源语言机器翻译为目标语言。该方法包括:将翻译模型分区为不同数据的分区,其中每个翻译模型分区小于翻译模型;将翻译模型分区存储在不同的翻译模型服务器上;将语言模型分区为不同数据的语言模型分区,其中每个语言模型分区小于语言模型;将语言模型分区存储在不同的语言模型服务器上;监视翻译服务器的工作负载,每个翻译服务器都可操作性地使用翻译模型和语言模型将源语言的文本翻译为目标语言;基于工作负载,将待从源语言翻译为目标语言的文本的片段从翻译服务器分配到一个或多个选定翻译服务器;对于待翻译的各个片段中的每个片段,运行每个选定的翻译服务器来访问翻译模型服务器和语言模型服务器,以取得期望的翻译模型数据和语言模型数据;并且以及将来自选定翻译服务器的已翻译片段进行汇编,以生成翻译后的文本。

在另一个方面中,一种计算机实现的方法可包括:接收待翻译为目标语言的源语言的客户文档;将客户文档分割为片段,以翻译每个片段;以及访问不同语言模型服务器之中的至少一个。不同的语言模型服务器共同地存储目标语言的语言模型,用来检索与翻译一个片段相关的选定语言模型数据。每个语言模型服务器存储并可操作性地提供语言模型的分区。该方法还包括:使用检索到的选定语言模型数据,将片段翻译为目标语言。

在另一个方面中,一种用于机器翻译的方法可包括:使用机器翻译系统接收来自客户的源语言的文本,并将该文本翻译为目标语言。在机器翻译系统中的翻译包括:选择一部分文本以较低翻译质量进行翻译以生成初步翻译后的部分,同时以较高翻译质量翻译选定部分;将初步翻译后的部分传递给客户,同时继续以较高翻译质量翻译选定部分;并且在以较高翻译质量将选定部分翻译为第二翻译后的部分之后,将较高翻译质量的第二翻译后的部分传递给客户,以自动替代初步翻译后的部分。

在另一个方面中,一种用于机器翻译的系统可包括语言模型服务器、翻译模型服务器和翻译服务器。每个语言模型服务器存储并可操作性地提供关于目标语言的语言模型的分区。各个分区共同构成了全部语言模型。翻译模型服务器存储并可操作性地提供在目标语言和源语言之间进行翻译的翻译模型。翻译服务器可操作性地从翻译模型服务器中获取翻译模型数据,从语言模型服务器中获取语言模型数据,并基于获取的翻译模型数据和语言模型数据,将源语言的源文本翻译为目标语言。

在另一个方面中,一种机器翻译的系统可包括翻译服务器模块和翻译缓存。翻译服务器模块可操作性地从在源语言和目标语言之间进行翻译的翻译模型中获取翻译模型数据,以及从关于目标语言的语言模型中获取语言模型数据。翻译服务器模块还可操作性地使用获取的翻译模型数据和语言模型数据,将源语言的文本翻译成目标语言。翻译缓存选定符号(token)和片段的翻译。每个片段包括从源语言到目标语言的符号的组合。对于待翻译的片段,翻译服务器模块可操作性地在翻译缓存中查找合适的翻译,当存在合适的翻译时,其检索合适的翻译而无需进一步继续处理该片段,并且无需获取用于翻译该片段的翻译模型数据和语言模型数据。

在另一个方面中,一种用于运行机器翻译系统的方法可包括:将待从源语言翻译为目标语言的源文本分割为片段;在翻译缓存中查找每个片段,该翻译缓存存储选定的符号和片段从源语言到目标语言的翻译,每个片段包括符号的组合;当待翻译片段的合适翻译存在于翻译缓存中时,使用该片段的合适翻译而无需进一步继续处理该片段;当待翻译片段的合适翻译不存在于翻译缓存中时,运行翻译服务器以对在源语言和目标语言之间进行翻译的翻译模型以及关于目标语言的语言模型进行访问,以获取用于翻译该片段的期望的翻译模型数据和语言模型数据;并且运行翻译服务器,以使用期望的翻译模型数据和语言模型数据来翻译该片段。

在又一个方面中,一种用于机器翻译的片段翻译设备可包括解码器,其可操作性使用在源语言和目标语言之间进行翻译的翻译模型以及关于目标语言的语言模型,将包括源语言的一个或多个符号的片段翻译为目标语言的翻译后的片段。在该设备中包括片段翻译服务器缓存,用来存储为了翻译该片段而从语言模型中检索的数据,并且将所存储的数据提供给解码器。解码器可操作性地与语言模型服务器通信,以请求关于该片段可能翻译的N元模型每一元以及相关统计数据的信息进行请求,语言模型服务器可分别存储全部语言模型的不同分区。

可将本公开和其他实施例实现为一个或多个计算机程序产品,即为了由数据处理装置执行或者控制数据处理装置的运行而编码在计算机可读介质上的计算机程序指令的一个或多个模块。可实施特定实施例以实现一种或多种优点,例如提高机器翻译质量、加快翻译速度、增强系统的可扩展性、和增加用于处理对机器翻译的大量请求的能力。在附图和以下说明中阐述了上述系统、技术和装置的一个或多个实施例的细节。与上述系统、技术和装置相关的其它特征、方面、优点将从说明书、附图和权利要求书中变得明显。

附图说明

图1示出了分布式机器翻译(DMT)系统100,用分区、复制、和负载平衡的特定示例进行说明,这可以用本说明书中描述的分布式机器处理技术来实现。

图2示出了图1的分布式机器翻译系统100的一种实现方式。

图3A示出了翻译缓存,其可以被连接到图1或2所示类型的系统中的翻译前端,并且被其共享。

图3B示出了可在翻译缓存中使用的数据结构的示例。

图3C示出了翻译缓存操作的示范方法。

图4示出了可连接到负载平衡器的翻译缓存的示例。

图5示出了可由片段翻译服务器共享的片段翻译服务器缓存的示例。

图6示出了具有翻译解码器、LM查找请求队列、和本地缓存的片段翻译服务器的示例。

图7示出了翻译解码器的一个示范性操作。

图8示出了翻译解码器的处理步骤的示例。

图9A和9B示出了翻译解码器的替代性操作。

图10是具有高层缓存而没有低层缓存的片段翻译服务器的一个示范性处理流程的流程图。

图11A和11B示出了片段翻译服务器的另一示范性处理流程。

图12示出了分布式处理系统的示例,可将其配置为基于大型语言模型来提供语言处理功能。

图13示出了提供分布式处理的通信网络中的示例计算机系统。

在各个附图中的相同的标记数字和名称指示相同的元件。

具体实施方式

在本说明书中描述的自动机器处理技术和系统可被实现为利用大量资源来运行,以提高例如处理的质量和速度的处理性能。自动机器处理的示例包括机器翻译、语音识别、垃圾邮件检测、光学字符识别、拼写校正、实体检测、以及信息提取。为响应大量的自动处理请求,也可将上述自动机器处理技术和系统实现为具有足够的处理能力。在自动处理的这些和其他实现方式中,可使用分布式设计来实现系统资源或系统处理能力。

分区和复制是可用于实现分布式设计的技术的两种示例。

在分区中,将在自动处理系统中的特定项目分割或分区为不同的分区,分区物理上位于例如计算机的不同机器上。每个分区都小于整个项目,并且在一些实现方式中不同的分区可以彼此不同,而在另一些实现方式中可具有某种程度的重叠。例如,主要存储数据的数据库服务器或主要执行在自动处理系统中的一个或多个处理任务的处理服务器可以是被分区的项目。分区允许在系统中实现较大的项目,而不用受单个机器的能力的限制。不同的分区位于不同的机器之上,因此可对其分别访问。所以,在其他有益特性中,可使用分区来处理高负载,并允许可扩展性和可靠性。分区的大小和其他特性将根据特定自动处理系统中的需求和约束而改变。例如,可能很难在单个机器(例如数据库服务器)中存储大型数据库,或者可能使用单个昂贵的机器来存储大型数据库是不经济的。因此,可将大型数据库分区为多个较小的数据库分区,以使得多个选定的机器中的每个具有足够的存储器来存储每个数据库分区。对于访问数据库的客户,不同的机器可组成网络来以“虚拟”单个数据库的形式运行。类似地,也可将处理服务器分区为不同的分区处理服务器,其中每个分区处理服务器提供原处理服务器的处理功能的一部分,并且设计不同的分区处理服务器来分区绝大多数不同的处理功能。

复制是与分区不同的用于分布式设计的另一种技术。在复制中,将该系统中例如数据库服务器或处理服务器的特定项目复制或者克隆在一个或多个诸如计算机的副本机器上。每个副本可以与被复制的项目在功能和其他方面基本相同。可用复制来提高被复制项目的功能的可用性或能力,减少在访问被复制项目的功能时的等待时间或延迟,并为项目功能提供冗余。由于单个项目通常具有有限的能力,所以例如当同时做出来自客户的多个请求或不同请求的处理和服务在时间上有重叠时,复制使得被复制的项目的功能对这样的请求可用。在具有复制冗余的系统中,如果用于已复制项目的一个机器发生故障,可以使用于该项目的一个或多个其他复制机器可用来替代发生故障的机器,由此减少机器故障对系统所造成的影响。注意,复制的大小和其他特性将根据特定自动处理系统中的需求和约束而改变。例如,可以将使用频繁的数据库复制在不同的数据库服务器上。作为另一示例,可将处理服务器复制为一个或多个副本(replica)处理服务器,这些副本服务器可彼此并行的运行。与分区类似,可以将复制实现为对访问系统的客户来说是不可见的,因为对于访问数据库的客户,可以将复制同一处理服务器的不同机器组成网络来以“虚拟”单个处理服务器的方式运行。

当复制设计被实现时,可合并有负载平衡机制,以监视用于复制的不同机器的工作负载,并且基于工作负载来管理输入工作负载或将输入工作负载分配到不同的机器。根据特定自动处理系统的需求和约束,可以用不同的负载平衡策略来实现该负载平衡机制。作为一个示例,可实现负载平衡机制,以通过将新请求导向低负载运行的复制机器,来减少访问系统的已复制部分中的特定功能或信息片段的延迟。

负载平衡机制可扩展为管理不同机器的运行,这些不同机器相互之间并非是如上所述的完全一样的副本。例如,负载平衡机制还可管理存储不同语言模型的服务器。对另一示例,多个处理服务器(例如机器翻译服务器)可基于使用相同机器翻译方案的不同语言翻译资源(例如所有都是统计机器翻译(SMT)服务器)而运行。一些SMT服务器可以较低的速度生成高质量的翻译,而另一些则以较高的速度生成低质量的翻译。基于一种或多种考虑,例如质量和时间的需求和约束,可将负载平衡机制实现为控制客户文档的不同片段或者不同客户文档的翻译任务。在该示例中,尽管负载平衡机制的名字仍旧表示了一些“负载”平衡运行的含义,但是,该负载平衡机制也对不同机器的工作负载并不必要的事物进行平衡。所以,在本说明书中使用的术语“负载平衡”不限于平衡负载。而是将术语“负载平衡机制”、“负载平衡器”、和“负载平衡模块”、以及“负载平衡服务器”一般用于指示:管理和分配在不同机器上的通信流量、请求或任务,并同时将与机器的运行和情况相关的特定因素、请求或任务的特性、以及系统的其他部分的情况进行平衡的平衡机制。

在一些实现方式中,将负载平衡机制实施为与主要被设计用于与负载平衡机制不同的功能机器附接或与其通信的组件,或者在平衡机制可能处理到一些机器的大量流量的情况下,可将负载平衡机制实现为单个机器。另外,当需要时,用于本说明书的分布式机器处理的分区和复制可应用于具有不同机器的负载平衡机制,以使得将负载平衡机制分区或复制到不同机器上。

响应于特定系统的具体需求和约束或者系统的运行或情况,可以用自适应、动态、高效、容错、可扩展的方式,单独或组合地使用分区、复制和负载平衡,来构建、运行、和管理分布式机器处理。作为一个示例,,可将基于分区、复制、负载平衡机制的分布式机器处理和其他机制配置并实现为解决充满挑战性、不稳定、和动态的计算机网络环境中的自动处理中的各种问题。具体说来,可将本说明书中的自动机器处理技术和系统用于各种在线机器处理,诸如机器翻译、语音识别、垃圾邮件检测、光学字符识别、拼写校正等。

为了说明分布式机器处理中的各种技术、设备、设计、和控制,下述分布式机器处理的具体实现方式将机器翻译用作为自动机器处理的示例。

在一些实现方式中,基于分布式机器处理的机器翻译系统包括机器翻译资源服务器以及至少一个翻译服务器。为从源自然语言翻译成目标自然语言,每个机器翻译资源服务器存储并可操作性地提供机器翻译资源数据的集合的分区。各个分区共同构成了机器翻译资源数据的集合,并且各个分区的每个都小于机器翻译资源数据的整个集合。翻译服务器可操作性地接收待翻译为目标语言的源语言的源文本,并且还可操作性地从机器翻译资源服务器中获取机器翻译资源数据。接着,翻译服务器使用获取的机器翻译资源数据,将源文本翻译为目标语言。

作为这样的实现方式的示例,图1示出了分布式机器翻译(DMT)系统100。可以是计算机服务器的多个翻译前端110逻辑上彼此并行排列,并且被用于接收客户对于翻译客户文档102的请求,并且将翻译后的文档103传递给客户101。客户101可通过诸如因特网的计算机网络连接到DMT系统100。DMT系统100包括片段翻译服务器130,片段翻译服务器130从翻译资源服务器140中检索翻译资源数据,并且使用所检索的数据执行翻译任务。负载平衡服务器120连接在分段翻译服务器130和翻译前端110之间,用来监视、管理和控制在翻译前端110和片段翻译服务器130之间的交换和流量、以及翻译前端110和片段翻译服务器130的运行。负载平衡服务器120可以被复制到一个或多个副本负载平衡器服务器上。服务器130、120和110共同形成翻译服务器,该翻译服务器通过使用翻译资源服务器140和其副本141上的翻译资源数据来执行客户文档102的翻译。

翻译前端110彼此之间互为副本,并且彼此之间并行运行。片段翻译服务器130彼此之间也互为副本,并且并行运行。资源服务器140是分区服务器,其存储用于片段翻译服务器130执行翻译任务的全部翻译资源数据以及其他资源和信息的分区。将每个资源服务器140示为具有一个或多个副本资源服务器141。资源服务器140中的翻译资源数据以及其他资源和信息可包括:用于一种或多种不同目标自然语言的一个或多个语言模型,用于在一种或多种不同的源自然语言和一种或多种不同的目标自然语言之间进行翻译的一个或多个翻译模型,在一种或多种源自然语言和一种或多种目标自然语言之间的一个或多个音译(transliteration)字典以及其他字典。片段翻译服务器130可实现相同或不同的机器翻译解码方案,诸如基于规则的MT和统计MT解码器。

在运行中,每个翻译前端110接收待由系统100翻译的客户文档102,并且在从系统100的后端接收翻译后的客户文档103之后,将翻译后的客户文档103发送给客户101。一旦接收到客户文档102,接收翻译前端110将客户文档102分割为多个更小的片段,其中每个片段包括一个或多个符号。片段的一个示例是段落中的句子。在不同实现方式中,片段的内容可能不同,并且其范围可从几个词到多个句子。翻译前端110可将所有的片段导向到负载平衡器120,以将片段分配给片段翻译服务器130,并且片段翻译服务器130处理所分配的片段,并通过使用来自一个或多个资源服务器140的期望的翻译资源数据来翻译所分配的片段。接着,每个翻译后的片段通过负载平衡器120被发送回最初请求翻译前端110。在接收到所有返回的翻译后的片段之后,最初请求翻译前端110将翻译后的片段组合为翻译后的客户文档103,并且将翻译后的客户文档103发送给客户101。在一些实现方式中,翻译前端110可首先确定在系统100中是否可取得片段的合适翻译,并且将该翻译检索为翻译后的片段,而不用将该片段发送给负载平衡器120。可通过使用翻译缓存来实现该替代,并在本说明书的稍后部分中对其详细描述。

DMT系统100具有关于每个分区资源服务器140的副本服务器141。所以,可在资源服务器140和141以及片段翻译服务器130之间实现与负载平衡器120不同的附加负载平衡机制,作为后端负载平衡机制。在该后端负载平衡机制的一些实现方式中,每个片段翻译服务器130可包括作为服务器的一部分的片段负载平衡器,以控制、管理和分配从该片段翻译服务器130到资源服务器140和141的请求。全部片段负载平衡器一起构成后端负载平衡机制。在一些实现方式中,每个片段负载平衡器可以是分离的机器,并且如果需要,可以被复制或分区。

每种负载平衡机制(例如前端负载平衡器120和后端负载平衡机制)可包括监视机制,以监视在该负载平衡机制的运行中涉及的各种机器的活动、情况和运行。这可以用各种方式来实现。例如,可使用通信协议来提供对在负载平衡机制和每个被监视的机器之间的通信进行的监视。

图2示出了图1的分布式机器翻译系统100的一种实现方式200。该系统200使用统计机器翻译(SMT)技术,以基于源目标翻译模型和目标语言模型来执行从源自然语言到目标自然语言的翻译。在很多翻译应用中,源语言和目标语言可以是两种不同的自然语言,诸如中文和英语。在一些应用中,源语言和目标语言可以是同一自然语言的两种不同书写格式或表达,例如简体中文和繁体中文。使用计算机服务器210来存储目标语言模型,并使用计算机服务器220来存储源-目标翻译模型。在一些实现方式中,单个翻译模型服务器210可能足以存储和提供全部翻译模型。系统200中的服务器210和220是图1的系统100的资源服务器140和141的示例,并且翻译和语言模型是图1的系统100中的机器翻译资源数据的示例。在至少某些片段翻译服务器130中可实现SMT解码器,以通过使用在服务器210和220中的翻译和语言模型来执行每个片段的翻译。

在该系统200中,翻译模型包括在源语言和目标语言之间的映射信息以及与每个映射相关联的评分(scoring)信息。映射信息可包括在以下两者之间的关系:(1)源语言的一个或多个符号和(2)目标语言的一个或多个符号。在一个实现方式中,例如,源语言和目标语言之间的映射信息是在目标和源语言之间的语言串的所有可能配对。评分信息可包括关于在源语言和目标语言之间的每个映射的统计数据,诸如在目标和源语言之间的一对语言串的概率。也可将其他统计数据用作为评分信息的一部分。语言模型包括目标语言的可能语言串的集合,以及关于每个串的对应的语言模型评分信息。串包括一个或多个语言符号。符号是系统处理的最小的语言单位。每个串是n元模型,该n元模型是目标语言的n个符号的序列,其中n是正整数。可使用各种符号化技术来从包括语言中的发音符号和标点符号、字母、和字符的一个或多个记号和标志中构建符号。语言模型评分信息可包括关于语言模型中的每一个串或n元模型的统计数据。统计数据可包括与目标语言文本的语料库(corpus)中各个n元模型中的每一个的各自的发生频率相关的信息,诸如与目标语言文本的语料库中各个n元模型中的每一个的各自的发生频率相关的概率、平滑概率、或平滑系数。语言模型评分信息还可包括除统计数据以外的信息。

在运行中,片段翻译服务器130中的SMT解码器在接收到待解码的片段之后,首先从服务器220中的翻译模型中检索需要的信息,并接着基于来自翻译模型的信息而从语言模型210请求需要的数据。SMT解码器根据目标语言的符号的各种排列来计算所有可能翻译的统计,并搜索最佳翻译。各个片段翻译服务器130通过负载平衡器120将从SMT解码器输出的翻译发送给最初翻译前端服务器110。

通常可通过提高系统的翻译模型(TM)和语言模型(LM)中的一个或二者的大小来提高统计机器翻译(SMT)系统的翻译质量。因此,部分因为单个机器内受限的存储器容量,所以在实际实现中,系统200可能具有需要分区的大型翻译和语言模型。作为一个示例,英语的大型语言模型可从大约2000亿个词派生为8万亿个词,并且其大小从大约1T字节派生到4T字节。大型TM的数量级可能为2亿个单词左右或更大规模。随着更多文档变得在线可用,LM在大小上可以进一步增长。所以,分区通过使用分布式机器处理提供了对于高质量MT系统的有效方法。在基于大型语言和翻译模型的这种DMT系统和其他MT系统中,也可使用复制和负载平衡。

语言模型服务器210包括多个分区服务器,这些分区服务器存储和提供语言模型的不同分区。P+1个分区的示例如图2所示,其中P是整数。每个分区服务器存储并可操作性地提供关于目标语言的语言模型的分区,并且在这些分区服务器上的各个分区共同构成全部语言模型。各个分区服务器的每个都可以包括满足分区标准的语言模型中的所有n元模型。例如,各个分区服务器的每个可存储和提供分区,所述分区包括在预定位置具有共同符号的语言模型中的所有n元模型。对另一示例,各个分区服务器的每个可存储并提供具有共同符号的语言模型中的所有n元模型,该共同符号可能在每个n元模型的预定位置上,或可能是n个符号序列中的最后两个符号。n元模型中的符号可以是目标语言的文本单词或是目标语言的记号。另外,如图2所示,每个语言模型分区可以被复制到一个或多个其他副本服务器上。

与此类似,翻译模型服务器220包括多个分区服务器,所述分区服务器存储并提供翻译模型的不同分区。K+1个分区的示例如图2所示,其中K是整数。各个分区服务器共同构成了整个翻译模型,并且每个分区都小于整个翻译模型。另外,如图2所示,每个翻译模型分区可以被复制到一个或多个副本服务器上。

除了LM和TM服务器210和220以外,图2还示出了用于其他翻译资源和数据的一个或多个服务器230。本特征可以是进一步改进系统200的各种属性的可选特征。例如,可将一个片段翻译服务器130设计为使用服务器230中的其他翻译资源和数据,以利用或不利用基于语言和翻译模型的SMT处理对片段进行翻译。在图11A和11B中示出的实现方式是其中将使用其他资源和数据的翻译与使用语言和翻译模型的SMT处理的翻译合并在一起的一个这样的示例。用于其他翻译资源和数据的一个或多个服务器230的示例包括:在目标和源语言之间的音译字典服务器;基于规则的机器翻译服务器;音译处理服务器,其实现基于规则的算法以生成音译数据以及有助于从源语言翻译为目标语言的其他资源。

系统200是使用语言和翻译模型的MT系统的一个示例。该类系统可包括:语言模型服务器至少一个提供翻译模型的翻译模型服务器、以及翻译服务器,所述翻译服务器可操作性接收待翻译为目标语言的源语言的源文本。每个语言模型服务器存储并可操作性地提供关于目标自然语言的语言模型的分区,并且各个分区共同构成了全部语言模型。翻译服务器通过从翻译模型服务器中获取翻译模型数据,并从语言模型服务器中获取语言模型数据,而可操作性地执行机器翻译。

作为如图2所示的该类系统的具体示例,使用语言和翻译模型的MT系统可包括语言模型服务器210,其分别存储并可操作性地提供关于特定目标语言的语言模型的不同分区。各个分区共同构成了整个语言模型,并且每个分区都小于整个语言模型。对于每个语言模型服务器210,可包括一个或多个副本语言模型服务器。该系统还可包括翻译模型服务器220,翻译模型服务器220分别存储并可操作性地提供在目标语言和源语言之间进行翻译的翻译模型的不同分区。各个分区共同构成了整个翻译模型,并且每个分区都小于整个翻译模型。对于每个翻译模型服务器220,可包括一个或多个副本翻译模型服务器。可在系统200中提供翻译前端110以与客户进行接口,并且每个翻译前端110可操作性地将源文本分割为片段。该系统可包括片段翻译服务器130,每个片段翻译服务器130可操作性地通过从翻译模型服务器220和副本翻译模型服务器中获取翻译模型数据、从语言模型服务器210和副本语言模型服务器中获取语言模型数据来执行机器翻译。还可包括负载平衡模块120,并且基于片段翻译服务器130上的翻译负载,负载平衡模块120可操作性将片段选择性分配到一个或多个段翻译服务器130以进行翻译。

图2中的系统200还可包括在目标语言和第二源语言之间提供自动翻译的资源。对于在目标语言和第二源语言之间进行翻译的第二翻译模型,在系统200中可包括一个或多个翻译模型服务器。因此,包括多个第二翻译前端,并且其每个都可操作性地将第二源文本分割为第二源语言的片段;提供了多个第二片段翻译服务器,其每个执行第二源语言的所分配片段的机器翻译。基于在第二片段翻译服务器上的翻译负载,还包括第二负载平衡模块,以将该片段分配到一个或多个第二片段翻译服务器上进行翻译。可以由翻译源语言的片段翻译服务器130和翻译第二源语言的第二片段翻译服务器来共享存储和提供目标语言模型的语言模块服务器210。

在上述图1和2中示出的系统中,将待翻译的每个片段从系统的前端(翻译前端服务器110)导向到后端,以由片段翻译服务器130进行翻译,并且接着由后端再导向到前端。该过程涉及通过负载平衡器120进行的处理、通过片段翻译服务器130服务器210和220的访问、以及通过片段翻译服务器130执行翻译,并且将翻译后的片段路由回前端服务器110。该过程花费时间并使用系统中的资源。对于经常被翻译的片段,可将各个翻译存储在存储单元中,诸如可由翻译前端110访问的翻译缓存,从而可避免用于在系统后端翻译这样的片段的例行过程。在运行中,在翻译前端110处将客户文档102分段之后,翻译前端110首先在翻译缓存中查找已存储的翻译,并仅将在翻译缓存中没有翻译的片段发送到后端进行翻译。这种翻译缓存的使用释放了系统资源、减少了在MT系统的前端和后端之间的流量、并且对于提供大量翻译请求的MT系统(诸如用于流行网站的MT系统)来说是有益的。

图3A、3B和3C示出了翻译缓存的示范实现方式的特征。翻译缓存310存储选定片段的翻译,并且还可以存储符号和诸如比片段小但是比符号大的短语符号的串的翻译。图3A示出了翻译缓存310,其连接到图1或2的系统中的翻译前端110,并由该翻译前端110共享。可以使用翻译缓存310中的翻译来提供对片段的翻译,而不用经过片段翻译服务器上的例行机器翻译过程和负载平衡过程。所以,可实现翻译缓存310来减少翻译等待时间、释放翻译资源、并加速翻译过程。可以像诸如语言模型和翻译模型服务器的资源一样,对翻译缓存310进行分区或复制。翻译缓存310可存储不同种类的翻译,例如人工翻译和机器翻译。

图3B示出了可在翻译缓存310中使用的数据结构。一个或多个源语言仓320存储源语言的片段(S0、S1、S2等),并且一个或多个目标语言仓330存储目标语言的翻译后的段(T0、T1、T2等)。将源语言的片段和对应的目标语言的翻译后的片段链接以用于查找和访问。翻译缓存310还可包括其它与每个所缓存的翻译相关联的信息,诸如关于以下方面的信息:所存储的翻译的质量、翻译的时间戳、翻译已被使用的次数的计数、翻译上次被使用的时间等。可使用这样的信息来确定特定翻译对于待翻译的片段来说是否是合适的翻译。例如,可使用翻译缓存中的质量信息来选择具有期望质量水平的合适翻译。在一些应用中,可使用较低质量但易于获取的翻译后的片段来提供初步翻译,之后用较高质量的翻译来更新该初步翻译。翻译缓存310还可包括关于其中翻译在文档中出现的上下文的信息。例如,关于翻译后的片段的上下文信息可包括翻译后的片段的两侧的符号、短语、或片段。这样的上下文信息可帮助系统基于上下文中的翻译的可能意思来确定特定翻译是否是合适的翻译。上下文信息还可包括关于源语言的片段的上下文。

图3C示出了翻译缓存310运行的示范方法。该示例使用质量信息作为选择参数来说明运行。还可使用一个或多个其他参数(例如上下文信息)来为片段选择合适的翻译。翻译前端110接收待从源语言翻译为目标语言的客户文档102,并将文档102中的源文本分割为片段(步骤341)。接着,翻译前端110在翻译缓存中查找每个已分割的片段,以确定是否存在翻译(步骤342和343)。翻译缓存310存储选定符号和片段的从源语言到目标语言的翻译。对于在翻译缓存310中存在的翻译,翻译前端110还确定翻译的质量是否令人满意(步骤344)。这可以例如通过使用在翻译缓存310中存储的质量信息来完成。当在翻译缓存310中存在待翻译段的合适翻译时,翻译前端110使用该片段的合适翻译而无需进一步处理该片段(步骤346)。当在翻译缓存310中不存在待翻译的片段的合适翻译时,接着进一步处理和翻译该片段(步骤345)。可以通过例如以下步骤来获得该进一步处理:使用片段翻译服务器130访问用于在源语言和目标语言之间进行翻译的翻译模型以及关于目标语言的语言模型,以获取用于翻译该片段的期望的翻译模型数据和语言模型数据,并且使用期望的翻译模型数据和语言模型数据来翻译该片段。完成一个片段之后,翻译前端110移动至待处理的下一个片段,直到处理完所有的已分割的片段(步骤347和348)。

图4示出了翻译缓存310的不同实现方式。与图3A中的设计不同,在图4中的设计中,负载平衡器120与翻译缓存310交互。在运行中,在负载平衡器120从翻译前端110接收到用于翻译的片段之后,负载平衡器120在把任何接收到的片段分配到片段翻译服务器130之前,首先在翻译缓存310中查找关于每个接收到的片段的合适的已有翻译。当在翻译缓存310中找到关于特定片段的合适的已有翻译时,负载平衡器120从翻译缓存310检索该已有翻译,并将该翻译发送到相应发起翻译前端110,而无需将片段发送到片段翻译服务器130进行翻译。如果在翻译缓存310中没有不存在片段的对应翻译,则负载平衡器120将片段发送到选定的翻译服务器130以进行翻译。对每个翻译前端110而言,负载平衡器120的这方面的运行与图3中的运行类似。

使用存储在缓存中的翻译后的片段来减少MT系统中的处理和通信流量的这种概念可被扩展到MT系统的后端以由片段翻译服务器130访问。图5示出了由图1或2的片段翻译服务器130共享的片段翻译服务器缓存510的示范实现方式。一旦从负载平衡器120接收到待翻译的片段,片段翻译服务器130首先在片段翻译服务器缓存510中查找关于该片段的已有翻译。当在片段翻译服务器缓存510中找到合适的翻译时,片段翻译服务器130从片段翻译服务器缓存310中检索该翻译,并将该翻译发送到负载平衡器120,负载平衡器120将该翻译导向到相应发起翻译前端110,并移动以处理下一个待翻译的片段。如果在片段翻译服务器缓存510中不存在该片段的对应翻译,则片段翻译服务器130继续翻译该片段。

在上述MT系统中的片段翻译服务器130可包括:解码器,其通过使用在源语言和目标语言之间进行翻译的翻译模型以及关于目标语言的语言模型来翻译片段;以及本地缓存,其可操作性地将从语言模型检索到的数据进行存储,并将存储的数据提供给解码器。解码器与语言模型服务器210进行通信,以请求关于该片段的可能翻译的每个n元模型和相关统计数据的信息。

图6示出了具有翻译解码器610、LM查找请求队列620、和本地缓存630的片段翻译服务器130的示例。在该示例中的本地缓存630包括高层本地缓存631和可选的低层缓存632。高层缓存631和低层缓存632可以被用来存储选定的LM数据,以供片段翻译服务器130使用,而不用访问LM服务器210。高层缓存631可被配置为存储在翻译片段期间获得的选定的LM数据,以使得在片段翻译服务器130中可获得当前片段所需的所有n元模型。

在运行中,可以用某种方式来清空高层缓存631,以使得所存储的LM数据不会积累得超过某一界限。在一些实现方式中,片段翻译服务器130定期删除高层缓存631中的内容。作为此定期删除的具体示例,在翻译片段之后,可删除高层缓存631。在另一实现方式中,可将高层缓存631中所存储的LM数据标记为“old(旧)”,并且当高层缓存631没有空间存储从语言模型中获取的新LM数据时,如果在翻译新的片段时不再重复使用这类“old(旧)”数据,则可将其删除。

低层缓存632可被实现为片段翻译服务器130中的可选特征,用来存储频繁使用的LM数据。一般说来,在翻译每个片段之后不清空低层缓存632中的数据,且其被保留比高层缓存631中的数据更长的时间段。所以,低层缓存632中的LM数据相对长久,而高层缓存631中的LM数据相对短暂。

在其它实现方式中,可使用单个本地缓存,以具有分别对应于分离的高层缓存和低层缓存的高层缓存部分和低层缓存部分。

当处理片段时,可使用LM查找请求队列620来暂时存储来自解码器610生成的语言模式的对于选定LM数据的请求。接着将排队的请求向外发送到一个或多个LM服务器210,例如,按先入先出方式排序。LM查找队列620允许在不同时间做出请求并由LM服务器210对其进行服务,以减少解码器610的等待时间。并且,排队请求和发送排队的请求可共同显著减少与联系LM服务器210相关联的开销。本地缓存630和LM查找请求队列620可联合运行,以高效地处理每个片段。可用不同的技术来运行解码器610和队列620。以下描述两个示例。

在一个示例中,解码器610按两阶段(two-pass)处理方案运行。首先,在接收到请求的LM数据之前,解码器610对片段进行处理,而不需来自语言模型的所有需要的LM数据。可使用哑(dummy)查找模型,以允许解码器610在等待请求的LM数据时对片段进行处理。这是处理的第一阶段。在接收到所有请求的LM数据之后,然后解码器610使用接收到的LM数据来结束处理。

在另一示例中,当正在对到LM服务器210的请求进行服务时,解码器610可使用与LM服务器210中的大型语言模型不同的粗糙的、较小型的语言模型或其它翻译资源,例如图2中的资源服务器230。解码器610进行的处理使用粗糙LM并生成初步翻译结果。在从LM服务器210接收到请求的LM数据之后,解码器610接着通过使用接收到的LM数据来继续更新所述初步翻译结果。

在实现上述两个示例的技术中,在将对数据的请求向外发送到LM服务器210之前,解码器610可预处理待翻译的片段,以删除对该片段不太可能的翻译,从而减少对LM服务器210做出的请求的数量,并减少用请求的LM数据进行处理的量。在预处理中,解码器610使用与LM服务器210中的大型语言模型不同的、或相较LM服务器210更易取得的翻译资源,诸如粗糙的、较小型的语言模型来处理该片段,以生成初步结果,例如,关于对该片段的最佳可能翻译路径的上限(upperbound)。接下来,解码器610通过使用以上两种处理技术之一,利用初步结果来生成对所需LM数据的请求,并且在接收到对所有请求的响应之后,完成该片段的翻译。

图7示出了翻译片段701期间图6中的片段翻译服务器130的翻译解码器610的一个示范性运行。开始,解码器从TM服务器请求并检索与待翻译的片段的翻译相关联的TM数据,例如,所有可能的目标语言的短语或扩展部分的翻译(步骤710)。扩展部分通过可能由先前使用的短语给出的一个短语来扩展候选的翻译。当正在检索请求的TM数据时,解码器对将要从LM模型查找的每个n元模型的值设置为某个初始值,例如,随机值或恒定值。作为一个示例,可以将候选翻译设置为0(步骤720)。当处理每个片段中的不同的可能短语时,解码器进行短语迭代,以从该片段的一端到另一端搜索最佳的短语,在此期间,访问LM多次。在每次迭代中,解码器执行如下两阶段处理。首先,计算候选翻译的当前设置的所有可能扩展部分,以及对可能扩展部分的可能扩展翻译模型分值(步骤730)。在从LM服务器210接收到请求的LM数据之前,首先使用可用的信息来获取对可能扩展部分的语言模型分值(步骤740)。例如,可使用分配给哑查找表中的n元模型的预定值以及存储在本地缓存(包括高层缓存和低层缓存)之中的语言模型分值(步骤740)。这是处理该片段内的每个短语中的第一阶段。接着,通过使用从LM服务器接收到的语言模型数据,来更新所获取的可能短语的语言分值(步骤750)。这是处理每个短语中的第二阶段。基于更新的分值,解码器去掉具有较低分值的翻译(步骤760),并且进一步确定是否到达当前片段的末尾(步骤770)。如果当前片段仍有待处理的一个或多个扩展部分,则解码器重复上述过程。否则,解码器提取片段的最佳翻译,并将翻译后的片段702发送到负载平衡器120。

图8示出了在所请求的LM数据对解码器可用之前,图7中的处理步骤(步骤740)的示例。对于待翻译的片段的来自翻译模型的每个可能的短语或扩展部分,解码器首先在高层缓存中查找对每个可能翻译的目标语言中的任何可能n元模型及相关的统计数据(步骤810和820)。当该信息在高层缓存中可得时,解码器使用该信息完成翻译,以生成翻译后的片段(步骤830)。当该信息在高层缓存中不可得时,解码器接着查找低层缓存(步骤840和850)。如果该信息在低层缓存中存在,则解码器标记该状态(步骤860),并继续使用在高层缓存和低层缓存二者中的信息来完成翻译(步骤830)。当该信息在低层缓存中不存在时,解码器在LM查找请求队列中请求来自语言模型的数据(步骤870)。将接收到的LM数据放置在高层缓存和低层缓存之中(步骤880),并且完成翻译(步骤830)。

在翻译每个片段时的短语迭代期间,两阶段处理(图7的步骤730、740和750)可使用系统中的其他语言模型资源来执行初步翻译,并接着使用该语言模型来更新并最终完成翻译。例如,这样的语言模型资源的一个示例是第二语言模型,该第二语言模型比存储在语言模型服务器210上的语言模型要小。

片段翻译服务器130(图6)可以用其它配置运行。例如,图9A和9B示出了图6的系统的替代运行,其中在对片段进行翻译的过程中访问语言模型一次,并且片段翻译服务器130包括高层缓存631和低层缓存632两者作为本地缓存630的一部分。

在从负载平衡器120接收到待翻译的片段之后,片段翻译服务器130从存储在服务器220上的翻译模型请求并检索该片段的目标语言的所有可能的翻译(步骤910)。基于从翻译模型接收的可能翻译,片段翻译服务器130生成对于来自存储在语言模型服务器210上的语言模型的该片段的每个可能翻译的目标语言中的所有可能n元模型以及相关统计数据的请求(步骤920)。在将请求发送到语言模型服务器210之前,片段翻译服务器130首先搜索本地缓存630,以查看是否存在请求中的任何语言模型数据,并且如果本地缓存630不具有该数据,则将生成的请求发送到语言模型服务器210。首先,片段翻译服务器130在高层缓存631中查找对每个可能翻译的目标语言中的任何可能n元模型以及相关的统计数据(步骤930)。片段翻译服务器130查找高层缓存631,以确定是否存在所有可能的n元模型(步骤940)。如果存在,则片段翻译服务器130完成对该片段的翻译,而无需将生成的请求发送到语言模型服务器210(步骤950)。

否则,片段翻译服务器130执行额外处理(步骤960A)。对于用语言模型在高层缓存631中未发现的任何n元模型,片段翻译服务器130在低层缓存632中搜索语言模型数据(步骤961和962)。如果关于一个可能n元模型和统计数据的请求信息在低层缓存631中存在,则片段翻译服务器130标记关于该特定n元模型的该存在,从而相应生成的请求(步骤920)不会被向外发送到语言模型服务器210(步骤963)。另外,对于在高层缓存631中最初找到的n元模型,对此特定n元模型的请求也不会被向外发送到语言模型服务器210。如果片段翻译服务器130在两个缓存中都不能找到关于n元模型的任何信息,则然后将生成的请求放置在LM查找队列620中,并且向外发送给语言模型服务器210(步骤964)。根据各个n元模型的属性,将从语言模型服务器210接收的语言模型数据存储在一个缓存中(步骤965)。对于频繁使用的n元模型,可将其语言模型数据存储在低层缓存632中。对于在翻译当前片段中使用的、但是在目标语言中不大可能被频繁使用的n元模型,可将接收到的数据存储在经常被清空的高层缓存631中。此时,用于翻译该片段的所有可能n元模型的语言模型数据在本地缓存630中的某处。因此,片段翻译服务器130基于语言模型数据来完成该片段的翻译(步骤950)。

图10示出了仅具有高层缓存631而不具有低层缓存632的片段翻译服务器130的示范运行。初步处理(步骤1010到1040)与刚描述过的初步处理(步骤910到940)类似。如果在高层缓存631中找不到关于任何可能n元模型的语言模型数据,则然后生成的对该n元模型的请求被放置在LM查找队列620中,并且被向外发送给语言模型服务器210(步骤1060)。从语言模型服务器210接收到的语言模型数据被存储在高层缓存631中(步骤1070)。对其语言模型信息最初不在高层缓存631中的所有n元模型都执行将生成的请求放置在LM查找请求队列620中并将接收到的语言模型数据存储在高层缓存631中的这种处理。在接收到所有的所请求的语言模型数据之后,片段翻译服务器130基于语言模型数据来完成对该片段的翻译(步骤1050)。

图11A和11B示出了图6的系统中的片段翻译服务器的另一示范处理流程,其中在正在对队列620中的排队的请求进行服务的同时,片段翻译服务器130使用来自另一可用翻译资源的语言数据来处理对该片段的翻译。对每个待翻译的片段,片段翻译服务器130使用解码器610来从TM服务器220请求并且检索与待翻译的片段的翻译相关的TM数据,例如所有可能的目标语言的短语或扩展部分的翻译(步骤1110)。接着,片段翻译服务器130生成对于来自语言模型的每个可能翻译的目标语言中的所有可能n元模型以及相关统计数据的请求(步骤1120)。片段翻译服务器130确定所请求的LM数据是否在片段翻译服务器130中(步骤1130)。如果是,则片段翻译服务器130使用所获得的LM数据来执行翻译,以生成翻译后的片段(步骤1140)。如果该信息不在片段翻译服务器130中,则片段翻译服务器130将关于每个缺失的n元模型和统计数据的请求放置在LM查找请求队列620中(步骤1150),并在等待对请求的响应的同时继续处理翻译(步骤1160)。在此时间段期间,片段翻译服务器130使用来自另一可用翻译资源(例如图2的资源服务器230)的语言数据来处理对该片段的翻译(步骤1161)。片段翻译服务器130继续使用来自其他可用翻译资源的数据进行处理,直到获得所有请求的LM数据为止(步骤1162)。在接收到所有请求的LM数据之后,片段翻译服务器130使用来自LM服务器210的最新获得的数据来更新通过使用其他资源初步生成的处理结果,以生成最终翻译(步骤1163)。

在以下部分中提供对于自动机器翻译的上述各种特征和其它特征的进一步细节。

编码和访问分布式语言模型

本部分描述用于将文本和文档从一种自然语言(诸如中文)翻译为另一种自然语言(诸如英文)的MT系统的方面。可以使用这里的示例来解决在翻译过程期间如何高效处理所使用的大型语言模型以提供关于各种语言短语发生的频率的统计的问题。如果系统能够利用更大型的语言模型,诸如n大于3的n元模型,则通常可改进翻译的质量。

作为翻译处理的一部分,统计翻译系统需要关于各种单词、短语、或单词的序列在目标语言中发生的频率的顺序的信息。此信息被用来选择更易理解的目标语言翻译。通常通过计算在大型训练文档语料库中的单词序列发生的频率来收集语言模型信息。作为一个示例,收集这样的数据可产生以下信息:

(″is″,″the″,″only″,″person″)->发生9234次

(″is″,″the″,″only″,″person″,″that″)->发生173次

(″is″,″the″,″person″,″only″,″that″)->发生1次

其中左边的单词串表示各种可能的单词序列,而右边的数字表示在训练文档语料库中发生的次数。语言模型数据的一般形式可以是映射到值的单词序列,该值可以是任何的任意字节序列,并且在一些常见MT系统中,可以是整数或浮点数值。通过利用n元语言模型,可使用大型模型来保持长度达到n的所有单词序列的信息。多种机器翻译系统在其语言模型中使用n值相对较小的n元模型,例如2元语言模型或3元语言模型,以使得语言模型可足够小到存储在单个机器上。

此处描述的机器翻译技术可用于机器翻译系统和其他系统中的超大型翻译模型,该其他系统可以有利地使用大型语言模型,诸如自动语音识别系统。一种方法是在跨越多个机器的分布式语言模型服务器集上将语言模型数据进行分区,可能对每个语言模型状态的分区片段都进行复制。大型语言模型具有n大于3(例如,n=4,5,6等)的n元模型,并且可以被用于提高机器翻译的质量。图1和2示出了这样的系统的示例,其中语言模型可包括n大于3的大型n元模型。在运行中,一个或多个翻译服务器接收将特定文本片段从源语言翻译为特定目标语言的请求。通常,请求的粒度是单个句子。翻译服务器从语言模型服务器中检索合适的语言模型数据部分。从执行实际翻译工作的处理(例如图2中的片段翻译服务器130)到语言模型处理(例如图2中的LM服务器210)的网络远端过程调用(RPC)可用于请求和检索LM数据。

可使用离线处理来构建语言模型数据结构,其具有被分区为k个部分的各种(n-gram->value)关键字/值对。将n元模型进行分区通常是有用的,从而使得n元模型的值很可能是作为处理位于同一分区的相同或类似翻译请求的一部分所需的。这倾向于最小化翻译服务器所需访问的不同分区的数量。一种实现此的方法是通过n元模型中的第一或最后M个单词进行分区,例如由n元模型的最后两个单词进行分区。

在每个服务器内,对分区内的n元模型值的查找应当被配置为是高效的。这是因为翻译可能需要每个分区被用于每秒进行大量数十万次的查找。同时,紧凑地表示语言模型数据也是有用的,从而减少了需要保存语言模型的存储器的总量。因此,可减少分区的数量,并且也可减少需要提供语言模型的机器数量。

一种用于对n元模型数据进行编码的技术是对每个词分配一个唯一的整数ID,对更常用的单词分配较小的数。在语言模型的构建阶段期间进行该ID分配。考虑以下来自文档语料库的训练数据:

(″is″,″the″,″only″,″person″)->发生9234次

(″is″,″the″,″only″,″person″,″that″)->发生173次

(″is″,″the″,″person″,″only″,″that″)->发生1次

相同的数据可用ID数以以下简化形式来表示:

13  3  53  1037->9234

13  3  53  1037  73->173

13  3  1037  53  73->1

其中“13”是单词“is”的ID数,“3”对应“the”,“53”对应“only”,“1037”对应“person”,而“73”对应“that”。ID数的这种使用压缩了语言模型的数据的大小,并且对于超大型语言模型来说,效果可以变得显著。以下是被分组为一组块的语言模型的n元模型的示例,所述块以有序的次序示出了n元模型的序列和相关的值:

1388>6                   [Bob]

1388 2->5                [Bob</S>]

1388 3->3                [Bob,]

1388 3 2->6              [Bob,</S>]

1388 3 4->2              [Bob,the]

1388 3 4 11->3           [Bob,the″]

1388 3 4 11 2454->1      [Bob,the″grand]

1388 3 4 11 7379->1      [Bob,the″Father]

1388 3 4 11 20940->1     [Bob,the″sailor]

1388 3 4 11 38117->1     [Bob,the″Dude]

1388 3 4 53->3           [Bob,the more]

1388 3 4 53 587->1        [Bob,the more low]

其中,从左到右,是ID数、发生的次数、和对应的文本。

在一些实现方式中,语言模型数据在存储器中进行缓冲以添加到块中,直到看到所有的256个唯一的单词识别符,或者对该块的数据已经积累了n元模型的最大数量(例如,1024个n元模型的最大值)为止。本格式使用一词库,该词库将高达256个唯一的单词ID映射到范围为0到255的本地ID集合中。可以使用任何方便的方法对该词库进行编码。接着,根据本地ID将实际的n元模型数据进行编码。对特定n元模型的查找首先将期望的单词ID翻译为本地ID,并接着对本地ID的合适序列执行快速扫描,以找到正确的值。

如果给出块中的n元模型,则可以计算出由块中的所有n元模型所共享的共享前缀长度。在块中,将所有的条目分割成不同的n元模型长度,并根据本地ID进行重写。语言模型数据的实际块格式是:

shared prefix_size:byte

value length:byte

# of entries in lexicon:varint32

N word ids(lexicon):N values

#entries table:pairs repeated each distinct n-gram length in the block

K            :byte

# of entries of length K:varint32

″0″        :byte  (literal 0 marking end of table)

对于块中的每个不同长度的n元模型,上述数据块后面跟随有分离部分。共享前缀P的块的K元模型部分中的每个条目被表示为K-P字节的序列,以表示K元模型的尾部K-P个本地单词ID的后面跟随着作为“value_length”字节序列的值。

对每个块给定一个关键字,该关键字是存储在块中的最后一个n元模型的串表示。块内容被编码为sstable中的值,并且该关键字被用作为稳定的关键字。这确保了查找。此处是一示例:

Shared prefix length:1

Length of values in this block:1

Lex:1388 2 3 4 11 2454 7379 20940 38117 53 587

nwords:<1,1>

nwords:<2,2>

nwords:<3,2>

nwords:<4,2>

nwords:<5,5>

″0″

1-gram section:

[]:6

2-gram section:

[001]:5

[002]:3

3-gram section:

[002 001]:6

[002 003]:2

4-gram section:

[002 003 004]:3

[002 003 009]:3

5-gram section:

[002 003 004 005]:1

[002 003 004 006]:1

[002 003 004 007]:1

[002 003 004 008]:1

[002 003 009 010]:1

在找不到更长的n元模型的情况下,使用机器翻译的语言模型经常需要系统查找较短的n元模型。较短的n元模型可用于退避(backoff)和平滑。可通过将单词从一端(n元模型的前端或末端)进行剥离来生成更短的n元模型。作为一个示例,请求机器翻译的客户可能要求序列“A B C D E”,并且要求从序列的前端进行剥离,其中每个字母代表一个单词。如果在服务器上未找到完整的n元模型,则客户需要序列″B CD E″。如果这个较短的序列仍然未找到,则需要甚至更短的序列″C DE″,等等。最短的序列是“E”,如果不能找到比其更长的序列的话。为了进行高效的搜索,可利用其最后一个单词将n元模型分区。在上述示例中,可以将所有以“E”结尾的n元模型分组为同一分区,并存储在同一机器上。这样,可在单个服务器上对较短的n元模型的进行退避,而不用对不同的服务器做出新的请求。

用最后一个单词进行分区可能导致非常不平衡的分区。通过基于最后两个单词或甚至长度为S的更长序列进行分区,可增进平衡。为了确保那个较短的n元模型在同一服务器上,可在所有的分区上复制单元模型(unigram)(或长度S-1和更短的序列)。在所有分区上复制较短的n元模型的替代是在需要长度为S-1或更短的n元模型的情况下发出第二次请求。

通过将对语言模型的质量仅有最小影响的特定条目从语言模型中去除,可以显著减少语言模型的大小,并且分区的大小可以变得更加均匀。一种方法是将末尾是频繁使用的较短n元模型的较长n元模型进行去除。例如,假设“D E”是频繁使用的2元模型。则可去除所有以“D E”结尾的4元和5元模型(例如,n元模型“A B C D E”),而仅保持3元模型(例如,“C D E”)。模型可存储具有“C D E”的标记,或采用其他手段来通知已去除特定的n元模型。

在一些语言模型的实现方式中,客户代码使用允许请求特定n元模型的值的简单接口。在内部,存储语言模型数据的客户库决定所请求的n元模型驻留的分区,并对要发送到该分区的n元模型的请求进行排队。当排队的请求的数量超过阈值时,大部分查找请求被发送到负责该分区的服务器。客户机可使用用户级“Wait()”操作,以强制将所有待定的查找都发送到合适的服务器。在返回到调用者之前,该操作一直等待到这些都完成。

片段翻译服务器(客户库位于其中)也可实现简单的基于哈希表的n元模型->值映射的缓存,避免了为了经常需要的n元模型而与语言模型服务器进行通信的需要。该缓存的一个示例是低层缓存632(图6)。由于很难确定特定翻译迭代所需的n元模型值的集合,所以可将翻译系统构建为以两个阶段来运行每次迭代。第一阶段是用哑语言模型来运行,该哑语言模型对被查找的每个n元模型返回恒定值(或不返回值、或随机值),但是也用语言模型服务器使查找排队,以取得真正的n元模型的值。首先用哑语言模型运行翻译迭代,接着调用“Wait()”以确保完成所有的待定语言模型查找。在这点上,所有的语言模型值在翻译服务器自身的内部都可用,所以用真正的语言模型再次运行翻译处理,并且使用来自分布式语言模型的值来确定哪个候选翻译在下次迭代中值得考虑。可使用第二缓存(例如高层缓存631(图6))来跟踪为翻译特定句子而请求的所有n元模型,并且确保当正处理该句子时,该概率是可用的。翻译器用信号通知句子的结束,在此时清空高层缓存。

在一些实现方式中,哑语言模型可使用单个服务器上的小型非分布式语言模型作为粗糙LM,以在等待提供LM数据的时间段期间对翻译进行处理或者在请求LM数据之前对翻译进行处理,并且基于使用粗糙LM的初步翻译结果来生成请求。在一些实现方式中,哑语言模型通过例如存储存在于分布式语言模型中的每个单词的最高概率而返回概率的上限而不是实际概率,以生成单词。为了允许对语言模型的高效访问,将从分布式语言模型请求概率的次数维持得较小,以减少访问和搜索时间。所以,如果在翻译搜索处理中的给定点,系统知道某个假设扩展部分需要语言模型概率,但是如果语言模型概率小于X,则删除该假设扩展部分,于是实际返回概率上限的哑语言模型使得可以对到分布式语言模型的请求进行删除。

可以以不同的粒度等级来实现每次解码器迭代的两阶段语言模型访问,并可将其集成进不同的搜索结构。例如,可在每次片段翻译进行一次两阶段处理。在一些情形中,在第一阶段期间,用哑语言模型来完全翻译句子。第一阶段可生成搜索空间的有效删除后的表示。然后,第二阶段使用从分布式语言模型请求的概率对搜索空间的表示重新评分。在另一示例中,可在片段的翻译期间执行多次两阶段处理。对于通过由添加可能扩展部分的有限集合而迭代地扩展假设集合中的每个假设从而构造搜索空间的解码器,可以在每当扩展假设集合时发出哑请求。

在已分区的系统中,不同的分区服务器可具有不同的处理速度。于是,可在不同的时点返回向不同机器请求的语言模型。在片段翻译服务器中使用的Wait()操作必须等候最慢的分区。如果该最慢的机器具有不能被快速校正的问题(例如断电或网络问题),则等待时间将会延长并令人不可接受。一种处理该问题的方法是具有用于Wait()的超时,并返回概率估计,例如由哑语言模型或不同的小型存储器内的语言模型所分配的概率。另一种减轻该问题的方法是在不同的机器上将相同的语言模型分区复制多次,以使得在该分区的最初服务器超时之后,可用不同的副本来获取语言模型数据。另外,可将请求同时发送给语言模型的同一分区的所有不同副本,并且选择最先返回的数据用于翻译。

在翻译服务器中的Wait()调用可用来实现对于不同服务器翻译同一段的请求的同步。一种减少等待时间的方法是将语言模型请求的不同迭代进行交织。所以,系统不用语言模型概率就可对假设进行评分或可使用分值的估计,而不是在返回所有的概率之前一直等待,并且系统可以在语言模型概率到达时立即更新假设的分值。在这种运行模式中,每个语言模型概率请求应当存储指向所需要的搜索假设的指针,或者每个翻译假设应具有指向缺失的语言模型概率的指针。在该变体中,居中的假设分值常常是近似的。一旦需要精确的分值,则应当发出Wait()。

翻译服务器(例如片段翻译服务器)可被配置为保存n元模型历史的记录,并接着估计所根据的n元模型的不同延续。例如,历史可能是“A B C D”,接着所研究的延续可能是“A B C D E”、“A B C D F”等。语言模型客户用整数来表示这些历史,并且在句子的开始或者其他翻译单元中开始列举它们。与所有可能的n元模型(1020和更多)相对,翻译单个句子通常需要相对较小数量的不同历史,例如数千或数百万,所以对整数来说只要几个字节就足够了。可使用该技术来使得翻译机的行为独立于历史的长度,并且由于历史可能会变长,所以该技术还可节省存储空间。客户可使用哈希函数在整数和历史之间进行映射,可使用整数作为进入n元模型阵列的索引,或使用其他方式来保持历史记录。

以自适应和可扩展方式进行的机器翻译

可由大量用户(诸如因特网上的用户)访问的翻译系统可能在不同时间经历不同的负载量。例如请求数量的变化、请求难度的变化、对不同语言对的请求的比例的变化等可造成这样的变化。本部分描述了为解决由系统中的这些或其他变化所造成的负载量的变化并减轻服务质量的劣化,在自动机器翻译系统中的特征。

为了扩大自动翻译系统的容量,系统的底层翻译技术应当能够在翻译速度和翻译质量之间的不同权衡点上运行,并且整个系统应当能够适应负载的变化。例如,可将系统配置为以高翻译质量、低处理速度(例如10个单词/秒)翻译;以中等翻译质量、中等处理速度(例如20个单词/秒)翻译;或以低翻译质量、高处理速度(例如100个单词/秒)翻译或者短语对短语或单词对单词的译注来进行翻译。为了获得高质量翻译,翻译服务器或引擎(例如片段翻译服务器130(图2))可能需要多个其它后端或用于提供翻译服务器或引擎在翻译过程中使用的信息的服务器。示例包括翻译短语字典服务器、语言模型服务器、音译服务器等。从这些后端资源获取信息要花费一定量的时间。在一些低质量翻译模型中,翻译服务器可跳过这些后端资源中的某些的使用,从而以降低翻译质量为代价来减少翻译时间。

例如,翻译服务器可跳过音译资源的使用,并以其他方式来处理应当被音译的单词,例如忽略该单词、或者将原始单词保留在翻译之中。另一示例是跳过语言模型的使用,并仅使用其他翻译信息(例如短语表和重新排序概率)来导出翻译。翻译服务器还可选择对语言模型做出更少的请求而不是完全跳过组件,从而减少通信量并加快翻译。所以,翻译服务器可决定从语言模型仅请求3元模型或4元模型而不是5元模型。可以通过将前端翻译服务器和各种后端服务器二者上的计算并行化,减少所有质量水平的端到端等待时间,在等待诸如LM服务器的后端资源服务器期间,翻译服务器可执行不依赖于后端结果的计算部分。通过在后端资源服务器(例如LM服务器)的等待时间内,并行进行前端计算,后端的等待时间不会对整体的翻译等待时间造成影响,除非后端服务器的等待时间比在本地计算上花费的时间要长。可通过将跨越多个物理机器的数据进行分区来减少后端等待时间本身,翻译服务器将该多个物理机器作为单个虚拟服务器来访问。

相反地,一个已分区的虚拟服务器可提供多个后端数据资源。例如,翻译系统可具有在不同数据资源上受训的多个基于短语的翻译词典。由单个已分区的虚拟服务器来提供这些多个模型,并且将其在翻译引擎的客户侧上重新分区。这允许从单个已分区的服务器提供复杂的多部分翻译模型。

为了减少翻译处理,自动机器翻译系统可包括用于存储翻译后文本和文档部分的缓存。文档部分可以是单词、短语、句子片段、句子、段落、整个文本/文档等。如图3B所示,缓存可将源语言部分映射到一个或多个目标语言部分。利用关于其翻译质量水平的信息来标记每个目标语言部分。这样,缓存可包含不同翻译质量水平的翻译。缓存还可包含由人类进行的人工翻译,其通常具有较高的翻译质量水平并且是在独立过程中取得的。

自动机器翻译系统可包括:翻译前端的已复制集合,例如翻译前端翻译服务器110(图1和2);负载平衡组件,例如负载平衡器120(图1和2);翻译缓存,例如翻译缓存(图3A、4、或5);翻译引擎,例如片段翻译服务器130(图1和2);以及翻译引擎后端,例如语言模型服务器、翻译短语字典服务器、和音译服务器。前端接收文本或文档翻译请求。将待翻译的文本或文档分割为部分或片段。可在翻译缓存中查找片段的翻译,该翻译缓存可输出特定翻译质量的翻译。如果在缓存中不存在翻译或者质量水平不足够高,则将对片段进行翻译的请求传达到负载平衡组件。负载平衡组件维护关于整个系统负载和片段翻译服务器的负载的某些信息。使用该信息以及关于可用容量的信息,负载平衡组件应用负载平衡策略,以确定如何处理部分翻译请求。如果负载水平足够高,则可使用来自缓存的低质量翻译,或者可将待翻译的片段发送到翻译后端,以特定的质量水平进行翻译。负载平衡逻辑还可以考虑其它因素。例如,可用较高质量水平对取自位于网页上部或者文档的前部的部分的片段(用户对其会更加关注)进行翻译。并且,可对这些部分给与较高的优先级,以使得首先对其进行翻译,并且可将待翻译网页或其他文档的第一部分尽快返回给用户。

另外,可将自动机器翻译系统设计为对网页或文档的某些部分(例如网页下部的文本)快速生成较低质量的翻译,并将翻译后的内容传递给用户,同时在后台处理网页或文档的同一部分,以进行较高质量的翻译。当可获得更高质量的翻译时,系统可将已传递给用户的较低质量的翻译用更高质量的翻译进行替换。当在后台生成更高质量的翻译时,可以以动态方式来部分或全部替换先前翻译的页面。这可以通过不同机制来进行,包括使用诸如JavaScript的客户侧脚本语言来更换已经发送给客户计算机的翻译后的文档。

可用多种方式来确定要以较高质量翻译的网页或文档内的部分或节。一种策略是将文档的开头部分以高质量进行翻译,因为用户很可能会仔细检查该部分,或者该部分可能是用户仅会阅读的部分。另一策略是基于文档结构或HTML标记(例如部分的标题、更大字体的部分、或者每个段落中的主题句)来确定网页或文档的区域的重要性。

例如翻译前端服务器130(图1或2)的系统将翻译后的片段进行组合,以形成返回给请求者的翻译后的文本或文档。在对应于图1并用翻译缓存实现的系统中,具有不同质量水平的翻译的翻译缓存如何与负载平衡器120进行交互可能存在变型。例如,可把系统设计为在缓存中查找每个片段,将所有的片段都发送给负载平衡器,并由负载平衡器来确定是否使用该缓存条目或是否将该片段发送给翻译引擎。替代地,可把系统设计为仅将某些片段发送给负载平衡器。可以存在多种负载平衡策略。在系统中可以存在多于一种类型的翻译引擎(例如片段翻译服务器130),并且这对负载平衡提供了额外的灵活性。例如,可使用具有低翻译质量的快速片段翻译服务器和具有高翻译质量的低速片段翻译服务器。

在自动机器翻译系统中组合人工和自动翻译

本部分描述了在自动机器翻译系统中组合人工翻译和自动翻译,以提供各种翻译选项的技术。可使用以下过程来构建用于人工翻译的数字库,并在自动机器翻译期间使用该库。可使用在本申请中描述的系统来实施这些特征。其他MT系统也可实施这些特征。

首先,对用户请求进行机器翻译的大范围文档进行分析,以确定哪些翻译将由人工执行。该过程可包括分析先前翻译后的文档,以确定所分析的文档中的哪些部分频繁出现,并且这些频繁使用的部分可以被作为人工翻译的候选。所分析的文档中的部分可包括:单词、短语、句子、段落、嵌入文档、嵌入网页等。另外,还可对所分析的文档的内容和其他特征进行分析,以确定人工翻译的附加候选。示例包括报纸的大字标题、文章中的标题和副标题、来自网络搜索的频繁使用的单词和短语、以及来自网页的重要导航短语。

第二,获取人工翻译的已确定的候选的人工翻译,并且将人工翻译存储在翻译数据库中,例如,如图3A、4和5所示的翻译缓存中。然后,可在自动机器翻译系统中使用该人工翻译的数据库。可将每个存储的人工翻译标记为高翻译质量,以使得系统(例如图1或2的系统)可使用质量标记来选择片段的翻译。

自动机器翻译系统中的人工翻译的数据库可被更新或修改。可通过从运行中的机器翻译系统获取的信息中,自动导出由人来对附加材料进行翻译的请求。例如,关于机器翻译活动的系统统计数据可被用于提取关于频繁翻译的文本部分的信息以及可确定需要人工翻译的文本部分的其他信息。系统可定期或持续地监视这样的系统统计数据,以生成需要人工翻译的最新确定的文本部分的列表。获取最新确定的文本部分的人工翻译,以更新人工翻译的现有数据库。

获取所确定的文本部分的人工翻译的过程包括在网络或其他在线仓库上人工或自动搜索已有的翻译。可检索这样的已有翻译,并将其显示给请求翻译的客户,而不用使用系统的翻译资源来生成翻译。例如,可以获得以数种语言的同一突发新闻,系统可使用目标语言的新闻报道来获取翻译。并且,公司和组织可使得以数种语言的同一信息在线可用,并且可由系统对这样的在线文档进行搜索以获取已有的翻译。

某些人工翻译可能仅在特定上下文中合适。例如,可能“home(主页)”的特定翻译对具有到网站主页的链接标记的网页才有意义。人工翻译数据库可包括该类型的信息,并且翻译系统在翻译网页期间使用该信息。在一些实现方式中,用户可提供用于特定翻译请求的特定翻译数据库。

机器翻译之外的自动处理系统中的分布式模型的应用

用于基于分区、复制和负载平衡、以访问大型模型并提供可扩展和自适应处理的自动机器翻译的上述和其他的分布式系统设计可被应用于机器翻译之外的其他自动处理系统。也可在自动语音识别、垃圾邮件检测、光学字符识别、拼写校正以及其他自动语言处理应用中使用大型语言模型。例如图1、2、3A、3B、4、5和6所示的系统的用于上述机器翻译的系统可适于实现除机器翻译之外的自动处理。

例如,可基于上述系统设计来构建用于将文档图像转换为文本的光学字符识别(OCR)系统,其中可使用字符的语言模型来替换机器翻译中的单词的语言模型;自动拼写校正系统可使用语言模型来高效地寻找遵循特定n元模型的最可能的单词,并校正单词的拼写。另外,自动语音识别系统可使用语言模型来预测单词的概率以及在发音词典的真实表示中的节点(node)的概率的上限,并将接收到的语音翻译为语音内容的文本。另外,在垃圾邮件过滤应用中,可使用大型语言模型来基于电子邮件的内容对电子邮件进行过滤。在这些和其他自动语言处理应用中,可实施分区和复制,以提供对不能置于单个机器之内的大型语言模型进行访问,并且以可扩展和自适应的方式来处理大量请求。

图12示出了分布式处理系统1200的示例,其可被配置为基于大型语言模型来提供语言处理功能。系统1200的处理功能可以与机器翻译不同。该系统1200包括大型语言模型,该大型语言模型在多个语言模型服务器1240上被分区和复制。系统1200还包括:多个前端1210,用来传送输入1201和输出1202;以及多个处理服务器1230,用来处理输入1201并生成输出1202。在接收到输入1201之后,每个前端1210将输入1201分割为片段,以由处理服务器1230进行处理。负载平衡器1220基于处理服务器1230上的工作负载来管理去往不同处理服务器1230的工作流。每个处理服务器1230可操作性地访问LM服务器1240以获取LM数据,并在处理输入1201的期间,使用所获取的LM数据。该系统1200可以是语音识别系统,其中每个处理服务器1230是语音识别服务器。输入1201是来自人的输入语音,并由语音识别服务器1230使用LM数据进行处理。输出1202是输入语音1201的录音脚本的文本。还可将处理服务器1230实施为:用于OCR应用的OCR服务器、用于拼写校正应用的拼写校正服务器、以及用于垃圾邮件过滤应用的垃圾邮件过滤服务器。

可以以数字电子电路、或以计算机软件、固件或硬件来实现在本说明书中描述的本公开和其他实施例以及功能性操作,包括在本说明书公开的结构及其等价结构、或它们中的一个或多个的组合。可将所公开的和其他实施例实现为一个或多个计算机程序产品,即为了由数据处理装置执行或者对数据处理装置的运行进行控制而编码在计算机可读介质上的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储器设备、机器可读存储器衬底、存储器设备、影响机器可读传播信号的组合物、或它们中的一个或多个的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备、和机器,包括诸如可编程处理器、计算机或者多个处理器或计算机。除硬件以外,装置可包括创建用于讨论中的计算机程序的执行环境的代码,例如,组成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如,机器生成的电、光或电磁信号,生成该信号来编码用于传输到合适的接收器装置的信息。

可以任何编程语言的形式来编写计算机程序(也称为程序、软件、软件应用、脚本、或代码),包括汇编或解释性语言,并且可以用任何方式对其进行布署,包括作为单机程序或作为模块、组件、子程序、或其它适于在计算机环境中使用的单元。计算机程序不必必须与文件系统中的文件对应。程序可以被存储在保持其它程序或数据(例如以标记语言文档存储的一个或多个脚本)的文件的一部分中、被存储在专用于讨论中的程序的单个文件中、或被存储在多个协同文件中(例如存储一个或多个模块、子程序、或代码部分的文件)。可以把计算机程序布署为在一个计算机上执行或者在位于一个站点上或在跨越多个站点且通过通信网络互联的多个计算机上执行。

可以经由一个或多个可编程处理器来执行本说明书中描述的过程和逻辑流程,所述一个或多个可编程处理器执行一个或多个计算机程序,以通过运行输入数据并生成输出来执行功能。还可通过专用逻辑电路(例如FPGA(现场可编程门阵列)或ASIC(特定用途集成电路))来执行过程和逻辑流程和实现装置。

适合于执行计算机程序的处理器包括诸如通用或专用微处理器以及任何类型的数字计算机的任何一个或多个处理器。一般说来,处理器从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的基本单元是用于执行指令的处理器和用于存储指令和数据的一个或多个存储设备。一般说来,计算机还包括一个或多个用于存储数据的诸如磁、磁光盘、或光盘的海量存储器设备,或可操作地耦接到这些设备,以从其接收数据或向其传递数据,或既接收又传递。但是,计算机并不需要具有这类设备。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失存储器,媒体和存储设备,包括:诸如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,诸如内部硬盘或可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充也可以被合并到专用逻辑电路。

为了提供与用户的交互,可以使用具有用于将信息显示给用户的例如CRT(阴极射线管)或LCD(液晶显示器)监视器以及用户通过其可以将输入提供给计算机的键盘和诸如鼠标或轨迹球的指示设备的计算机来实现所公开的实施例。也可用其它种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈、或触觉反馈;并且可以用任何形式接收来自用户的输入,包括声音、语音、或触觉输入。

计算系统的组件可以通过数字数据通信的任何形式或介质相互连接,例如通信网络。通信网络的示例包括局域网(LAN)和例如因特网的广域网(WAN)。可用于实现上述分布式处理的通信网络可使用各种通信链路来传输数据和信号,诸如电导体线缆、光纤链路以及无线通信链路(例如RF无线链路)。

图13示出了提供分布式处理的通信网络中的示范性计算机系统。该系统包括通信网络1300,其使得连接到网络1300的通信设备(例如计算机)能够通信。例如,通信网络1300可以是单个计算机网络(诸如在企业内部的计算机网络)或是互连计算机网络的网络(诸如因特网)。一个或多个计算机服务器1310连接到通信网络1300,以形成分布式处理系统,诸如图1、2或12所示的系统。计算机服务器1310可位于同一位置或位于不同的位置。在运行期间,一个或多个客户计算机(例如客户1301和1302)可使用通信网络1300来对分布式处理系统1310进行远程访问,以请求系统1310提供的机器翻译服务或其他服务。例如,客户1301可将翻译文档的请求发送给系统1310。客户1301将文档发送给系统1310。在接收到文档后,系统1310执行所请求的处理。然后,来自系统1310的输出被发送给客户1301,或者使其在系统1310中可用以可被客户1301访问。系统1310可同时为多个客户服务。

尽管本说明书包含了很多细节,但是不应将其解释为对权利要求书或可能要求的权利的范围的限定,而是应当将其理解为是对特定实施例的特定特征的描述。在本说明书中,在分离的实施例的上下文中描述的特定特征,可以在单个实施例中以组合形式实施。反过来,在单个实施例的上下文中描述的各种特征也可在分离的多个实施例中分别实施或在任何合适的子组合中实施。另外,尽管以上或许把特征描述为以特定组合进行操作,或者甚至最初要求是这样,但是可以在某些情况下从组合中去除来自所要求的组合的一个或多个特征,并且所要求的组合可以转化为子组合或是子组合的变体。

与此类似,尽管在图中以特定顺序示出了操作,但是不应将其理解为:为了获得所期望的结果而需要以示出的特定次序或顺序次序来执行这样的操作,或者是需要执行所有所示出的操作。在特定情形中,多任务和并行处理可能是有益的。另外,不应当将在上述实施例中的各种系统组件的分离理解为在所有实施例中都要求这样的分离,并且应当理解一般可将所述程序组件和系统在单个软件产品中集成在一起,或是打包进多个软件产品中。

这样,已经描述了特定的实施例。其它实施例在落入下面的权利要求书的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号