发明内容
本申请所要解决的技术问题是提供一种基于双数组搜索树的机器翻译方法,用以解决现有技术中由于翻译记忆库的存储数量海量导致的翻译效率较为低下且占用计算机存储资源的技术问题,进一步的,还能满足用户在特定领域的翻译需求。
本申请还提供了一种基于双数组搜索树的机器翻译装置,用以保证上述方法在实际中的实现及应用。
为了解决上述问题,本申请公开了一种基于双数组搜索树的机器翻译方法,包括:依据翻译记忆库构造翻译记忆单元,所述翻译记忆库包括互为翻译对的源语言句子和目标语言句子,并依据所述翻译记忆单元中的源语言句子建立双数组检索树,所述双数组检索树的每个节点对应一个所述源语言句子中的源语言词语;该方法包括:
接收待翻译的初始源语言句子;
依据所述初始源语言句子在所述双数组搜索树中查询满足编辑距离的候选源语言句子;
从所述翻译记忆单元中获取与所述候选源语言句子对应的候选目标语言句子;
按照预设的展示条件将所述候选目标语言句子发送至客户端进行展示。
优选的,所述依据翻译记忆库构造翻译记忆单元,具体包括:
对翻译记忆库的源语言句子按顺序进行分词,得到源语言词语;
对所述源语言词语按顺序进行编码,得到与源语言词语一一对应的源词语编码;
对所述目标语言句子进行编码,得到与所述目标语言句子一一对应的目标句子编码;
将所述源语言词语编码和目标句子编码对应保存为翻译记忆单元中。
优选的,所述依据翻译记忆单元建立双数组检索树,具体包括:
按照所述源语言词语的编码顺序,对所述翻译记忆单元中的源语言句子进行排序;所述排序的规则为:首先根据源语言句子的第N个词语编码进行升序排序,在所述第N词语编码相同的情况下,按照第N+1个词语编码进行升序排序,其中,所述N为大于或等于1的自然数;
将所述源语言句子中的首层词语集按照排序结果分别作为所述双数组检索树的根节点的第一级孩子结点;其中,所述首层词语集即是各个源语言句子的第一个词语的集合;
参考源语言句子的每个句子中词语出现的顺序,对应为所述第一级孩子节点确定下级所有的第N级孩子结点;其中,N大于或等于2;
在每个源语言句子对应的最后一级孩子节点后设置当前句子的结束标识,以生成双数组检索树。
优选的,所述依据所述初始源语言句子在所述双数组搜索树中查询满足编辑距离的候选源语言句子,具体包括:
依据预设的编辑距离确定所述双数组搜索树中符合条件的目标源语言句子的长度集合;
选择所述长度集合中最小的长度值作为当前长度值,并依据所述当前长度值从所述双数组检索树中确定所述源语言句子对应的目标源语言句子的子集合;
判断所述长度集合中是否存在未确定子集合的其他长度值,如果是,则按照从小到大的顺序获取次小的长度值作为所述当前长度值,并执行所述依据所述当前长度值从所述双数组检索树中确定所述源语言句子对应的目标源语言句子的子集合的步骤,直至所述长度集合中的所有长度值都确定子集合;
将所述源语言句子对应的目标语言句子的所有子集合确定为所述候选源语言句子。
优选的,所述从所述翻译记忆单元中获取与所述候选源语言句子对应的候选目标语言句子,具体包括:
依据所述候选源语言句子确定与其对应的候选源语言词语编码;
依据所述候选源语言词语编码确定对应的候选目标语言句子编码;
获取所述候选目标语言句子编码对应的候选目标语言句子。
优选的,所述将所述候选目标语言句子发送至客户端进行展示,具体包括:
从所述候选目标语言句子中确定与所述初始源语言句子最匹配的精确目标语言句子;
将所述精确目标语言句子发送至客户端以向用户进行展示。
本申请公开了一种基于双数组搜索树的机器翻译装置,包括:
构造翻译记忆单元模块,用于依据翻译记忆库构造翻译记忆单元,所述翻译记忆库包括互为翻译对的源语言句子和目标语言句子;
建立双数组检索树模块,用于依据所述翻译记忆单元中的源语言句子建立双数组检索树,所述双数组检索树的每个节点对应一个所述源语言句子中的源语言词语;
接收源语言句子模块,用于接收待翻译的初始源语言句子;
查询候选源语言句子模块,用于依据所述初始源语言句子在所述双数组搜索树中查询满足编辑距离的候选源语言句子;
获取候选目标语言句子模块,用于从所述翻译记忆单元中获取与所述候选源语言句子对应的候选目标语言句子;
发送展示模块,用于按照预设的展示条件将所述候选目标语言句子发送至客户端进行展示。
优选的,所述构造翻译记忆单元模块具体包括:
分词子模块,用于对翻译记忆库的源语言句子按顺序进行分词,得到源语言词语;
词语编码子模块,用于对所述源语言词语按顺序进行编码,得到与源语言词语一一对应的源词语编码;
句子编码子模块,用于对所述目标语言句子进行编码,得到与所述目标语言句子一一对应的目标句子编码;
保存子模块,用于将所述源语言词语编码和目标句子编码对应保存为翻译记忆单元中。
优选的,所述建立双数组检索树模块具体包括:
排序子模块,用于按照所述源语言词语的编码顺序,对所述翻译记忆单元中的源语言句子进行排序;所述排序的规则为:首先根据源语言句子的第N个词语编码进行升序排序,在所述第N词语编码相同的情况下,按照第N+1个词语编码进行升序排序,其中,所述N为大于或等于1的自然数;
确定第一级孩子节点子模块,用于将所述源语言句子中的首层词语集按照排序结果分别作为所述双数组检索树的根节点的第一级孩子结点;其中,所述首层词语集即是各个源语言句子的第一个词语的集合;
确定第N级孩子结点子模块,用于参考源语言句子的每个句子中词语出现的顺序,对应为所述第一级孩子节点确定下级所有的第N级孩子结点;其中,N大于或等于2;
设置结束标识子模块,用于在每个源语言句子对应的最后一级孩子节点后设置当前句子的结束标识,以生成双数组检索树。
优选的,所述查询候选源语言句子模块具体包括:
确定长度集合子模块,用于依据预设的编辑距离确定所述双数组搜索树中符合条件的目标源语言句子的长度集合;
确定子集合子模块,用于选择所述长度集合中最小的长度值作为当前长度值,并依据所述当前长度值从所述双数组检索树中确定所述源语言句子对应的目标源语言句子的子集合;
判断子模块,用于判断所述长度集合中是否存在未确定子集合的其他长度值;
触发子模块,用于在所述判断子模块的结果为是的情况下,按照从小到大的顺序获取次小的长度值作为所述当前长度值,触发所述判断子模块;
确定候选源语言句子的子模块,用于将所述源语言句子对应的目标语言句子的所有子集合确定为所述候选源语言句子。
优选的,所述获取候选目标语言句子模块具体包括:
确定候选源语言词语编码的子模块,用于依据所述候选源语言句子确定与其对应的候选源语言词语编码;
确定候选目标语言句子编码的子模块,用于依据所述候选源语言词语编码确定对应的候选目标语言句子编码;
获取子模块,用于获取所述候选目标语言句子编码对应的候选目标语言句子。
优选的,所述发送展示模块,具体包括:
确定精确目标语言句子的子模块,用于从所述候选目标语言句子中确定与所述初始源语言句子最匹配的精确目标语言句子;
发送子模块,用于将所述精确目标语言句子发送至客户端以向用户进行展示。
与现有技术相比,本申请包括以下优点:
在本申请实施例中,由于基于双数组检索树来实现翻译记忆库中源语言句子的存储,所以在检索与初始源语言句子相似的候选源语言句子的时候,可以比现有技术更快的确定候选源语言句子,并且因为双数组检索树在存储时也比数据表更节省空间,从而实现即能提高检索效率又能节省计算机存储资源的目的。
同时,本申请应用于电子商务领域时也能够满足用户在电子商务领域的特殊翻译需求。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请的主要思想之一可以包括,先依据翻译记忆库构造包括互为翻译对的源语言句子和目标语言句子翻译记忆单元,并依据所述翻译记忆单元中的源语言句子建立双数组检索树,该双数组检索树的每个节点对应一个所述源语言句子中的源语言词语,因此,针对待翻译的初始源语言句子,可以依据该初始源语言句子在双数组搜索树中查询满足编辑距离的候选源语言句子,并从所述翻译记忆单元中获取与候选源语言句子对应的候选目标语言句子,再按照预设的展示条件将所述候选目标语言句子发送至客户端进行展示。可见,由于本申请中将源语言句子构造成了双数组检索树,所以在检索与初始源语言句子相似的候选源语言句子的时候,可以比现有技术更快的确定候选源语言句子,并且因为双数组检索树在存储时也比数据表更节省空间,从而实现即能提高检索效率又能节省计算机存储资源的目的。
参考图1,示出了本申请一种基于双数组搜索树的机器翻译方法实施例的流程图,可以包括以下步骤:
步骤101:依据翻译记忆库构造翻译记忆单元,所述翻译记忆库包括互为翻译对的源语言句子和目标语言句子。
在本申请实施例中,翻译记忆用来表示平行的双语中互为翻译的两种语言语句形成的一个句对,翻译记忆库则是保存了这些句对的数据结构;而源语言句子表示翻译记忆中的某一种语言的句子,也表示用户在翻译过程中输入的需要翻译的语句;目标语言句子是相对于源语言句子而言的,表示翻译记忆的另一种语言的句子,也表示用户在翻译过程中希望得到的翻译结果语句。
在本实施例中,需要依据翻译记忆库中互为翻译对的源语言句子和目标语言句子构造翻译记忆单元,其中,翻译记忆单元是包括源语言词语编码和目标句子编码的数据结构,具体的,参考图2所示,为在实际应用中所述步骤101的流程图,本步骤101具体可以包括:
步骤201:对翻译记忆库的源语言句子按顺序进行分词,得到源语言词语;
首先,按照翻译记忆库中源语言句子出现的顺序,可以对源语言句子中的词语依次进行分词,从而得到有顺序的源语言词语。假设存在表1所示的简单的翻译记忆库:
表1
I like you |
我喜欢你 |
She is a girl |
她是一个女孩 |
I love you |
我爱你 |
在表1中每行的句对互为翻译对,可以指定左侧的英文句子为源语言句子,右侧的汉语句子为目标语言句子。当然,本领域技术人员也可以根据需要指定表1中右侧的汉语句子为源语言句子,而左侧的英文句子为目标语言句子,根据实际场景可以自主选择。
步骤202:对所述源语言词语按顺序进行编码,得到与源语言词语一一对应的源词语编码;
再对步骤101中进行分词得到的源语言词语进行顺序编码,对于表1所示的翻译记忆单元来讲,其中源语言句子共包含8个英文单词,而根据源语言句子在翻译记忆单元出现的顺序,可以构建如表2所示的词典:
表2
word |
word_id |
I |
1 |
like |
2 |
you |
3 |
She |
4 |
其中,在词典中源语言词语用字符串表示,其对应的源语言词语编码可以用1个32位无符号整数类型表示,最多可以表示232-1个词语,完全可以容纳自然语言的词语数量。
需要说明的是,本申请实施例中可以设置过滤那些使用频率极高的词,例如英语的“the”,这些词可以设定其包括在人工设定的停用词表中,而对于停用词表中出现的词语,从源语言句子中删除,而不加入词典。同样,对于用户查询的源语言句子,也同样删除出现在停用词表中的词语,因此本申请实施例不考虑前述停用词表中的词语。
可以理解的是,如果本申请实施例应用于电子商务中,由于电子商务语料中存在大量包含数字的词语,例如型号等,为了减少词典的大小以及缓解语料的稀疏,可以用“#digit#”表示包含数字的词语并统一以1编码。例如对于源语言句子“I have 12 apples”,可以表示为“I have#digit#apples”。因此,其他的源语言词语的编码从2开始,对于词典中已经存在的词语不再重新编码,而是使用词典中已经存在的该词语的编码。
步骤203:对所述目标语言句子进行编码,得到与所述目标语言句子一一对应的目标句子编码;
再按照翻译记忆单元中目标语言句子的出现顺序对其进行编码,针对表1所示的翻译记忆单元,可以得到如表3所示的目标句子编码:
表3
另外,在翻译记忆库中可能会存在多个源语言句子对应一个目标语言句子的情况,为了避免出现重复的翻译结果,在构建翻译记忆单元的过程中,对于已经出现的目标语言句子不再重新编号,而是使用已有的编号进行构建翻译记忆单元。
例如,假设上面的翻译记忆库中增加一条如表4所示的翻译记忆:
表4
因为由于目标语言句子“她是一个女孩”在翻译记忆库中已经存在,因此对该条翻译记忆构建得到的翻译记忆单元如表5所示:
表5
步骤204:将所述源语言词语编码和目标句子编码对应保存为翻译记忆单元中。
于是,根据前述得到的源语言词语编码和目标语言句子编码,可以将翻译记忆单元的源语言句子转换为编码序列,而目标语言句子也转换为编码序列,从而针对表1所示的翻译记忆单元,可以得到如表6所示的翻译记忆单元:
表6
1 2 3 |
1 |
4 5 6 7 |
2 |
1 8 3 |
3 |
步骤102:依据所述翻译记忆单元中的源语言句子建立双数组检索树,所述双数组检索树的每个节点对应一个所述源语言句子中的源语言词语。
在建立翻译记忆单元之后,需要依据翻译记忆单元中的源语言句子建立双数组检索树,检索树Trie是哈希树的一种变种,可以建立有效的数据检索组织结构,最大限度地减少的字符串比较。
参考图3所示,为在实际应用中所述步骤102的流程图,具体可以包括:
步骤301:按照所述源语言词语的编码顺序,对所述翻译记忆单元中的源语言句子进行排序;所述排序的规则为:首先根据源语言句子的第N个词语编码进行升序排序,在所述第N词语编码相同的情况下,按照第N+1个词语编码进行升序排序,其中,所述N为大于或等于1的自然数;
需要说明的是,在本申请实施例中,为了解决双数组检索树在动态插入新的节点时产生的冲突,可以构建静态的双数组检索树,即是根据源语言句子的源词语编码顺序对翻译记忆单元进行升序排序。其中,排序的基本原则是首先根据源语言句子的第一个词语编码按升序排列,在第一个词语编码相同的情况下,再依据第二词语编码的顺序进行升序排列,以此类推。此外,对于这一个句子是另一个句子前缀的情况,长句将排在短句的前面,假设对表6所示的翻译记忆单元进行排序,可以得到如表7所示的排序后的翻译记忆单元:
表7
1 2 3 |
1 |
1 8 3 |
3 |
4 5 6 7 |
2 |
步骤302:将所述源语言句子中的首层词语集按照排序结果分别作为所述双数组检索树的根节点的第一级孩子结点;其中,所述首层词语集即是各个源语言句子的第一个词语的集合;
在本申请实施例中,双数组检索树中的节点(node)结构可以如表8所示:
表8
其中,word_id用来对应的翻译记忆单元中源句子的词语编码,在司机应用中可以占用1个32位无符号整数类型;depth用来表示源语言词语在源语言句子中的位置,也即在双数组检索树中的深度,可以占用1个32位无符号整数类型;left和right表示该节点在双数组检索树中的孩子节点在同层节点的起止范围,分别占用1个32位无符号整数类型。参考图4所示,为表7所示的翻译记忆单元所对应的双数组检索树的结构示意图,在图4所示的双数组检索树中,节点“I”的孩子节点为“like”和“love”,因此其left为0,right为2;而节点“She”的孩子节点为“is”,其left为2,right为3。
针对表7所示的翻译记忆单元,假设初始的根节点为root,其节点结构如表9所示:
表9
word_id |
depth |
left |
right |
0 |
0 |
0 |
2 |
在本申请实施例中,在构建双数组检索树的过程中,首先需要通过双数组检索树的根节点获得其第一级孩子节点集,即翻译记忆单元中源语言句子的首层词语集。假设仍以表7示意的翻译记忆单元中为例,其中源语言句子的首层共有2个单词,编码分别为1和4,则得到根节点的孩子节点集为{1,4},如表8所示:
表8
word_id |
depth |
left |
right |
1 |
1 |
0 |
2 |
4 |
1 |
2 |
3 |
步骤303:参考源语言句子的每个句子中词语出现的顺序,对应为所述第一级孩子节点确定下级所有的第N级孩子结点;其中,N大于或等于2;
在往双数组检索树插入一个源语言句子时,先插入根节点的第一级孩子节点,接着再插入该第一级孩子节点的次级孩子节点,依次类推,直到按照翻译记忆单元中的源语言句子的顺序将所有的源语言句子都插入至双数组检索树中;
步骤304:在每个源语言句子对应的最后一级孩子节点后设置当前句子的结束标识,以生成双数组检索树。
当完成每一个源语言句子对应的最后一次词语的插入时,可以为该源语言句子设置当前句子的结束标识,例如,在其后面形式上添加一个符号“#”表示结束,生成与翻译记忆单元对应的双数组检索树。
需要说明的是,步骤101~步骤102是生成双数组检索树的流程,即是相当于预处理过程,在实际应用中,需要先执行步骤101~步骤102来实现双数组检索树,但是该两个步骤只需要执行一次即可生成双数组检索树,而步骤103~步骤106可以反复执行以实现不同的初始源语言句子的机器翻译,而无需执行多次双数组检索树的生成过程。
步骤103:接收待翻译的初始源语言句子。
接收用户提交的待翻译的初始源语言句子,在实际应用中,初始源语言句子是相对于目标语言句子而言的,翻译记忆单元中的两种语言均可以作为源语言句子。
步骤104:依据所述初始源语言句子在所述双数组搜索树中查询满足预设的编辑距离的候选源语言句子。
在本申请实施例中,编辑距离(Edit Distance)用来计算从原字符串s转换到目标字符串t所需的最少编辑操作次数,其中,允许的编辑操作包括将一个字符替换成另一个字符,插入一个新的字符,以及删除一个已有字符共3种操作。例如将字符串kitten转成字符串sitting,需要如下操作:sitten(用s替换k);sittin(用i替换e);以及,sitting(在结尾插入g)。共需3次操作,因此字符串kitten和字符串sitting之间的编辑距离为3。
具体的,参考图5所示,为所述步骤104在实际应用中的流程图,步骤104具体可以包括:
步骤501:依据预设的编辑距离确定所述双数组搜索树中符合条件的目标源语言句子的长度集合;
在本实施例中,假设预设的编辑距离k为1,而初始源语言句子的长度(即是该源语言句子共包括几个源语言词语)为6,那么候选源语言句子的长度集合则满足[6-1,6+1],即长度分别为5,6,7的源语言句子,而其他长度的源语言句子不可能与查询的源语言句子的编辑距离在k的范围内;
在实际应用中,还可以采用其它的度量方法替代前述的编辑距离,例如:汉明距离等;
步骤502:选择所述长度集合中最小的长度值作为当前长度值,并依据所述当前长度值从所述双数组检索树中确定所述源语言句子对应的目标源语言句子的子集合;
首先选择5作为当前长度值,并从所述双数组检索树中确定所有长度值为5的源语言句子作为第一个子集合;在实际应用中,确定的该第一个子集合的时候,可以先从双数组检索树中检索根节点的第一级孩子节点,从中确定与源语言句子的第一个词语完全匹配的节点集,再依次查找这些节点集中各节点的下一级节点是否与初始源语言句子中的第二个词语完全匹配,如果匹配则将其保存至该子集合中,如果不匹配则说明不是候选源语言句子;
步骤503:判断所述长度集合中是否存在未确定子集合的其他长度值,如果是,则进入步骤504,如果否,则进入步骤505;
再判断长度集合中是否还有未确定对应的源语言句子的子集合的其他长度值,如果没有,则说明所有的源语言句子的子集合都已经确定完毕;
步骤504:按照从小到大的顺序获取次小的长度值作为所述当前长度值,返回步骤502;
如果还有未确定子集合的其他长度值,则再按照从小到大的顺序,确定6为当前长度值,并执行确定长度为6的源语言句子的子集合的步骤,直至所有的源语言句子的子集合都已经确定;
步骤505:将所述源语言句子对应的目标语言句子的所有子集合确定为所述候选源语言句子。
将步骤502确定的子集合作为候选源语言句子。
需要说明的是,在从双数组检索树中检索候选源语言句子时,针对编辑距离k为1且初始源语言句子长度为6的情况下,其中,第一次确定的长度为5的候选语言句子的子集合包括本句子的五个词语与初始源语言句子的前五个词语完全匹配的源语言句子;而第二次确定的长度为6的候选语言句子的子集合则包括前五个词语与初始源语言句子的前五个词语完全匹配的源语言句子,第六个词语是否与初始源语言句子的第六个词语完全匹配可以不考虑;而第三次确定的长度为7的候选语言句子的子集合则包括本句子的前六个词语与初始源语言句子的六个词语完全匹配的源语言句子,这样的话,确定的候选语言句子中的各个候选语言句子都是只有一个词语与初始源语言句子不完全匹配。
在实际应用中,有很多种方式来实现对上述对候选源语言句子的确定,本申请实施例就不再一一赘述。
步骤105:从所述翻译记忆单元中获取与所述候选源语言句子对应的候选目标语言句子。
在从双数组检索树中确定了与初始源语言句子对应的候选源语言句子之后,需要再从翻译记忆单元中获取与候选源语言句子对应的翻译结果即是候选目标语言句子。
具体的,参考图6所示,图6为所述步骤105在实际应用中的流程图,步骤105具体可以包括:
步骤601:依据所述候选源语言句子确定与其对应的候选源语言词语编码;
依据确定的候选源语言句子确定这些源语言句子中的候选源语言词语编码,例如假设候选源语言句子为“She‘s a girl”,则候选源语言词语编码则为“4 5 6 7”;
步骤602:依据所述候选源语言词语编码确定对应的候选目标语言句子编码;
根据步骤601确定的候选源语言词语编码再从翻译记忆单元中确定对应的目标语言句子编码;例如,目标语言句子编码为“2”;
步骤603:获取所述候选目标语言句子编码对应的候选目标语言句子。
则本步骤则获取目标语言句子编码为“2”所对应的候选目标语言句子,即是“她是一个女孩”。
步骤106:按照预设的展示条件将所述候选目标语言句子发送至客户端进行展示。
在步骤106中再将确定的目标语言句子按照预设的展示条件发送至客户端进行展示,以便将翻译结果向用户显示。需要说明的是,预设的展示条件可以是对候选目标语言句子的过滤,具体的,参考图7所示,为步骤106在实际应用中的流程图,步骤106具体可以包括:
步骤701:从所述候选目标语言句子中确定与所述初始源语言句子最匹配的精确目标语言句子;
因为在双数组检索树中按照预设的编辑距离,可能会检索到很多候选源语言句子,而实际上用户可能不需要这么多候选目标语言句子,则此时可以从候选目标语言句子中确定与初始源语言句子最为匹配的精确目标语言句子。例如,可以确定六个词语都能与初始源语言句子匹配的候选源语言句子为精确源语言句子,并将该精确源语言句子对应的目标语言句子确定为精确目标语言句子。
当然,在实际应用中,本领域技术人员也可以确定预置个数的目标语言句子,其中具体数目可以适应性调整。
步骤702:将所述精确目标语言句子发送至客户端以向用户进行展示。
最终将精确目标语言句子发送至客户端以向用户进行展示。
采用本申请实施例,因为将翻译记忆库存储为双数组检索树的结构,因此,在查找初始源语言句子的时候,就能够快速的在双数组检索树中确定出候选源语言句子,并且因为双数组检索树占用的存储空间较小,因此,也可以节约计算机的存储资源,从而实现提高机器翻译的效率,以及节约计算机的存储资源的效果。进一步的,本申请实施例的双数组检索树可以是静态的,即是在建立双数组检索树的时候按照翻译记忆单元中源语言句子的编码顺序进行,这样就更可以节约从双数组检索树中确定候选源语言句子的时间,也减少了存储空间的开销。
不仅如此,本申请应用于电子商务领域的时候,也可以满足该领域内用户对专业领域和特定背景下的翻译需求,并为用户提供符合特定领域的形式较为统一的翻译建议。
在本申请实施例中,为提高翻译的匹配效果和召回率,可以对翻译记忆库采用语义分块存储和检索,以及针对被翻译内容的片段进行翻译。
对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
与上述本申请一种基于双数组搜索树的机器翻译方法实施例所提供的方法相对应,参见图8,本申请还提供了一种基于双数组搜索树的机器翻译装置实施例,在本实施例中,该装置可以包括:
构造翻译记忆单元模块801,用于依据翻译记忆库构造翻译记忆单元,所述翻译记忆库包括互为翻译对的源语言句子和目标语言句子。
参考图9所示,图9为所述构造翻译记忆单元模块801的结构示意图,所述构造翻译记忆单元模块801具体可以包括:
分词子模块901,用于对翻译记忆库的源语言句子按顺序进行分词,得到源语言词语;
词语编码子模块902,用于对所述源语言词语按顺序进行编码,得到与源语言词语一一对应的源词语编码;
句子编码子模块903,用于对所述目标语言句子进行编码,得到与所述目标语言句子一一对应的目标句子编码;
保存子模块904,用于将所述源语言词语编码和目标句子编码对应保存为翻译记忆单元中。
建立双数组检索树模块802,用于依据所述翻译记忆单元中的源语言句子建立双数组检索树,所述双数组检索树的每个节点对应一个所述源语言句子中的源语言词语。
参考图10,图10为所述建立双数组检索树模块802的结构示意图,具体可以包括:
排序子模块1001,用于按照所述源语言词语的编码顺序,对所述翻译记忆单元中的源语言句子进行排序;所述排序的规则为:首先根据源语言句子的第N个词语编码进行升序排序,在所述第N词语编码相同的情况下,按照第N+1个词语编码进行升序排序,其中,所述N为大于或等于1的自然数;
确定第一级孩子节点子模块1002,用于将所述源语言句子中的首层词语集按照排序结果分别作为所述双数组检索树的根节点的第一级孩子结点;其中,所述首层词语集即是各个源语言句子的第一个词语的集合;
确定第N级孩子结点子模块1003,用于参考源语言句子的每个句子中词语出现的顺序,对应为所述第一级孩子节点确定下级所有的第N级孩子结点;其中,N大于或等于2;
设置结束标识子模块1004,用于在每个源语言句子对应的最后一级孩子节点后设置当前句子的结束标识,以生成双数组检索树。
接收源语言句子模块803,用于接收待翻译的初始源语言句子;
查询候选源语言句子模块804,用于依据所述初始源语言句子在所述双数组搜索树中查询满足编辑距离的候选源语言句子。
参考图11所示,图11为所述查询候选源语言句子模块804的结构示意图,具体可以包括:
确定长度集合子模块1101,用于依据预设的编辑距离确定所述双数组搜索树中符合条件的目标源语言句子的长度集合;
确定子集合子模块1102,用于选择所述长度集合中最小的长度值作为当前长度值,并依据所述当前长度值从所述双数组检索树中确定所述源语言句子对应的目标源语言句子的子集合;
判断子模块1103,用于判断所述长度集合中是否存在未确定子集合的其他长度值;
触发子模块1104,用于在所述判断子模块的结果为是的情况下,按照从小到大的顺序获取次小的长度值作为所述当前长度值,触发所述判断子模块;
确定候选源语言句子的子模块1105,用于将所述源语言句子对应的目标语言句子的所有子集合确定为所述候选源语言句子。
获取候选目标语言句子模块805,用于从所述翻译记忆单元中获取与所述候选源语言句子对应的候选目标语言句子;
参考图12所示,图12为所述获取候选目标语言句子模块805的结构示意图,具体可以包括:
确定候选源语言词语编码的子模块1201,用于依据所述候选源语言句子确定与其对应的候选源语言词语编码;
确定候选目标语言句子编码的子模块1202,用于依据所述候选源语言词语编码确定对应的候选目标语言句子编码;
获取子模块1203,用于获取所述候选目标语言句子编码对应的候选目标语言句子。
发送展示模块806,用于按照预设的展示条件将所述候选目标语言句子发送至客户端进行展示。
参考图13,为所述发送展示模块806的结构示意图,具体可以包括:
确定精确目标语言句子的子模块1301,用于从所述候选目标语言句子中确定与所述初始源语言句子最匹配的精确目标语言句子;
发送子模块1302,用于将所述精确目标语言句子发送至客户端以向用户进行展示。
本实施例所述的装置可以集成到翻译服务器上,也可以单独作为一个实体与翻译服务器相连,另外,需要说明的是,当本申请所述的方法采用软件实现时,可以作为翻译服务器新增的一个功能,也可以单独编写相应的程序,本申请不限定所述方法或装置的实现方式。
采用本申请实施例的装置,在查找初始源语言句子的时候,就能够快速的在双数组检索树中确定出候选源语言句子,并且因为双数组检索树占用的存储空间较小,因此,也可以节约计算机的存储资源,从而实现提高机器翻译的效率,以及节约计算机的存储资源的效果。进一步的,本申请实施例的双数组检索树可以是静态的,即是在建立双数组检索树的时候按照翻译记忆单元中源语言句子的编码顺序进行,这样就更可以节约从双数组检索树中确定候选源语言句子的时间,也减少了存储空间的开销。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种基于双数组搜索树的机器翻译方法和装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。