面向神经机器翻译的长句切分方法及装置
技术领域
本申请涉及语言翻译技术领域,更具体地,涉及面向神经机器翻译的长句切分技术。
背景技术
目前,基于深度学习的Neural Machine Translation(神经机器翻译,可简称为NMT)越来越受到人们的关注。在NMT领域中,常见的一种NMT模型为基于encoder-decoder结构的模型。NMT模型主要是将某种语言的语句(以下可称为源语句)翻译为另一种语言的语句(以下可称为目标语句)。
以中英翻译为例,基于encoder-decoder结构的模型主要是将源语句经过编码器的编码后,获得编码向量,然后利用解码器对该编码向量进行解码,从而翻译成对应的英语语句。事实上,这种基于encoder-decoder结构的模型的翻译方式运用了深度学习的核心思想,同样的,encoder-decoder结构也体现了NMT技术的基本原理。
虽然,基于encoder-decoder结构的NMT模型能够取得很好的翻译效果,但是,当源语句过长时,其翻译效果会有所下降。特别地,随着源语句的长度增加,其翻译效果在一定程度上会越来越差。
发明内容
有鉴于此,本申请提供了一种面向神经机器翻译的长句切分方法,用以提高NMT模型的翻译精准度。另外,本申请还提供了一种面向神经机器翻译的长句切分装置,用以保证所述方法在实际中的应用及实现。
为实现所述目的,本申请提供的技术方案如下:
本申请提供了一种面向神经机器翻译的长句切分方法,包括:
在获得待翻译的源语句后,确定所述源语句的长度;
在所述长度大于预设长度的情况下,利用预先构建的切分模型对所述源语句进行切分,获得多个源子句;其中,各个所述源子句之间具有先后顺序;
将每个所述源子句输入至预先训练好的神经机器翻译NMT模型中进行翻译,获得每个所述源子句所对应的目标子句;
按照各个所述源子句的先后顺序,拼接所述源子句所对应的目标子句,获得所述源语句的目标语句。
可选地,上述的面向神经机器翻译的长句切分方法中,所述利用预先构建的切分模型对所述源语句进行切分,获得多个源子句,包括:
将所述源语句作为待切分源语句;
将所述待切分源语句输入至预先构建的切分模型中,获得所述待切分源语句中每个词单元所对应的切分概率;
依据所述切分概率,在多个所述词单元中选取目标词单元作为切分点;
将所述待切分源语句中所述切分点之后的语句作为新的待切分源语句,返回将所述新的待切分源语句输入至预先构建的切分模型中,直至所述新的待切分源语句的长度小于预设的最小子句长度;
所述新的待切分源语句的长度小于预设的最小子句长度时,根据选取的各个所述切分点,在所述源语句中切分出源子句。
可选地,上述切分模型包括分割子模型、调序子模型及长度子模型;
相应地,将所述待切分源语句输入至预先构建的切分模型中,获得所述待切分源语句中每个词单元所对应的切分概率,包括:
将所述待切分源语句中的词单元输入至所述分割子模型,获得所述词单元的可分割概率;
将所述待切分源语句中的词单元输入至所述调序子模型,获得所述词单元对应的子句与上一子句的不需要调序概率;其中,所述上一子句为所述待切分源语句的前一源子句;
将所述待切分源语句中词单元对应的子句的长度输入至所述长度子模型,获得所述词单元对应的子句的长度满意概率;
将所述可分割概率、所述不需要调序概率及所述长度满意概率三者的乘积作为词单元的切分概率。
可选地,上述分割子模型的构建步骤包括:
使用预设平行语料集中源语料与目标语料的对齐信息,对所述源语料中的词单元进行标记;其中,所述标记用于表示所述源语料在所述词单元处是否可分割;
在标记后的所述源语料中,提取所述词单元的分割特征;其中,所述分割特征包含标记为可分割的词单元;
使用最大熵训练工具,对所述分割特征进行训练,获得分割子模型。
可选地,上述调序子模型的构建步骤包括:
根据预设调序算法,在预设平行语料集的源语料中,抽取调序元组;其中,所述调序元组中包含第一源语料子句、第二源语料子句、及所述第一源语料子句翻译后的目标子句与第二源语料子句翻译后的目标子句是否需要调序;
在所述调序元组中,抽取调序特征;
使用最大熵训练工具,对所述调序特征进行训练,获得调序子模型。
可选地,上述长度子模型的构建步骤包括:
根据预设的子句长度均值与方差,构建正态概率分布模型。
可选地,上述依据所述切分概率,在多个所述词单元中选取目标词单元作为切分点,包括:
利用集束搜索beamsearch算法,计算每个所述词单元的切分概率的综合成绩,并在所述词单元中,选取综合成绩在前的多个目标词单元作为切分点;其中,不同的目标词单元作为不同切分序列中的切分点,切分序列包括切分点及从该切分点的新的待切分源语句中选取的切分点;
相应地,所述新的待切分源语句的长度小于预设的最小子句长度时,根据选取的各个所述切分点,在所述源语句中切分出源子句,包括:
所有切分点的新的待切分源语句的长度小于最小预设子句长度时,依据预设选取规则,在各个所述切分序列中,选取目标切分序列;
根据所述目标切分序列中的各个切分点,在所述源语句中切分出源子句。
可选地,上述依据所述切分概率,在多个所述词单元中选取目标词单元作为切分点,包括:
在多个所述词单元中,选取最高的切分概率所对应的词单元作为切分点。
另外,本申请还提供了一种面向神经机器翻译的长句切分装置,包括:
源语句长度确定模块,用于在获得待翻译的源语句后,确定所述源语句的长度;
源语句切分模块,用于在所述长度大于预设长度的情况下,利用预先构建的切分模型对所述源语句进行切分,获得多个源子句;其中,各个所述源子句之间具有先后顺序;
源子句翻译模块,用于将每个所述源子句输入至预先训练好的神经机器翻译NMT模型中进行翻译,获得每个所述源子句所对应的目标子句;
翻译子句拼接模块,用于按照各个所述源子句的先后顺序,拼接所述源子句所对应的目标子句,获得所述源语句的目标语句。
可选地,上述源语句切分模块包括:
待切分源语句获得子模块,用于将所述源语句作为待切分源语句;
切分概率获得子模块,用于将所述待切分源语句输入至预先构建的切分模型中,获得所述待切分源语句中每个词单元所对应的切分概率;
切分点选取子模块,用于依据所述切分概率,在多个所述词单元中选取目标词单元作为切分点;
待切分源语句重新确定子模块,用于将所述待切分源语句中所述切分点之后的语句作为新的待切分源语句,返回将所述新的待切分源语句输入至预先构建的切分模型中,直至所述新的待切分源语句的长度小于预设的最小子句长度;
源语句切分子模块,用于所述新的待切分源语句的长度小于预设的最小子句长度时,根据选取的各个所述切分点,在所述源语句中切分出源子句。
可选地,上述切分模型包括分割子模型、调序子模型及长度子模型;
相应地,所述切分概率获得子模块包括:
可分割概率获得单元,用于将所述待切分源语句中的词单元输入至所述分割子模型,获得所述词单元的可分割概率;
不需要调序概率获得单元,用于将所述待切分源语句中的词单元输入至所述调序子模型,获得所述词单元对应的子句与上一子句的不需要调序概率;其中,所述上一子句为所述待切分源语句的前一源子句;
长度满意概率获得单元,用于将所述待切分源语句中词单元对应的子句的长度输入至所述长度子模型,获得所述词单元对应的子句的长度满意概率;
切分概率获得单元,用于将所述可分割概率、所述不需要调序概率及所述长度满意概率三者的乘积作为词单元的切分概率。
可选地,上述的面向神经机器翻译的长句切分装置还包括:分割子模型构建模块;
所述分割子模型构建模块,用于构建分割子模型;
其中,所述分割子模型构建模块包括:
词单元标记子模块,用于使用预设平行语料集中源语料与目标语料的对齐信息,对所述源语料中的词单元进行标记;其中,所述标记用于表示所述源语料在所述词单元处是否可分割;
分割特征提取子模块,用于在标记后的所述源语料中,提取所述词单元的分割特征;其中,所述分割特征包含标记为可分割的词单元;
分割子模型获得子模块,用于使用最大熵训练工具,对所述分割特征进行训练,获得分割子模型。
可选地,上述的面向神经机器翻译的长句切分装置还包括:调序子模型构建模块;
所述调序子模型构建模块,用于构建调序子模型;
其中,所述调序子模型构建模块包括:
调序元组抽取子模块,用于根据预设调序算法,在预设平行语料集的源语料中,抽取调序元组;其中,所述调序元组中包含第一源语料子句、第二源语料子句、及所述第一源语料子句翻译后的目标子句与第二源语料子句翻译后的目标子句是否需要调序;
调序特征抽取子模块,用于在所述调序元组中,抽取调序特征;
调序子模型获得子模块,用于使用最大熵训练工具,对所述调序特征进行训练,获得调序子模型。
可选地,上述的面向神经机器翻译的长句切分装置还包括:长度子模型构建模块;
所述长度子模型构建模块,用于构建长度子模型;
其中,所述长度子模型构建模块包括:
正态概率分布模型构建子模块,用于根据预设的子句长度均值与方差,构建正态概率分布模型。
可选地,上述切分点选取子模块包括:
综合成绩确定单元,用于利用集束搜索beamsearch算法,计算每个所述词单元的切分概率的综合成绩,并在所述词单元中,选取综合成绩在前的多个目标词单元作为切分点;其中,不同的目标词单元作为不同切分序列中的切分点,切分序列包括切分点及从该切分点的新的待切分源语句中选取的切分点;
相应地,所述源语句切分子模块包括:
目标切分序列选取单元,用于所有切分点的新的待切分源语句的长度小于最小预设子句长度时,依据预设选取规则,在各个所述切分序列中,选取目标切分序列;
源子句切分单元,用于根据所述目标切分序列中的各个切分点,在所述源语句中切分出源子句。
可选地,上述切分点选取子模块包括:
选取最大切分概率单元,用于在多个所述词单元中,选取最高的切分概率所对应的词单元作为切分点。
由以上技术方案可知,本申请提供了一种面向神经机器翻译的长句切分方法,在使用NMT模型进行语句翻译前,并非直接将源语句输入NMT模型中,而是将语句切分为较短的子句,将各个子句依次输入NMT模型,以使NMT模型分别依次翻译各个切分后的子句,然后,直接将翻译后的子句拼接为完整子句。由于输入NMT模型翻译的子句较短,NMT模型的翻译准确率较高,从而提高了语句翻译的准确率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的面向神经机器翻译的长句切分方法实施例1的流程图;
图2为本申请提供的分割子模型的构建方法流程图;
图3为本申请提供的平行语料中词对齐关系的一个示例图;
图4为本申请提供的源语句分割点的一个示例图;
图5为本申请提供的调序子模型的构建方法流程图;
图6为本申请提供的使用切分模型获得切分概率的示例图;
图7为本申请提供的面向神经机器翻译的长句切分装置实施例1的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请提供的面向神经机器翻译的长句切分方法实施例1的流程。如图1所示,本实施例可以具体包括步骤S101~步骤S104。
步骤S101:在获得待翻译的源语句后,确定源语句的长度。
待翻译的语句可以称为源语句,翻译后的语句可以称为目标语句。在获得源语句后,首先确定该源语句的长度。长度可以具体指的是源语句中包含的单词的个数,例如,源语句为汉语“智利最高法院裁决皮诺契特丧失心神能力”,该源语句的长度为18。不同语言类型的源语句中,单词的具体形式也不尽相同。如,源语句为汉语,则单词为汉字;源语句为英语,则单词为英文。例如,源语句为汉语“智利最高法院裁决皮诺契特丧失心神能力”,该源语句的长度为18。
步骤S102:在长度大于预设长度的情况下,利用预先构建的切分模型对源语句进行切分,获得多个源子句;其中,各个源子句之间具有先后顺序。
在实际应用中发现,若源语句的长度过短,使用NMT模型翻译后,目标语句的精准度并不高。因此,预先设置用于限制源语句是否可进行切分的长度值,只有在源语句的长度大于该长度值的情况下,才利用预先构建的切分模型对源语句进行切分。
预先构建有切分模型(split-model),切分模型用于将源语句切分为几个较短的子句,为了方便描述,可以将切分后的子句称为源子句。需要说明的是,切分模型切分后的源子句是具有先后顺序的,该先后顺序即源子句在源语句中的先后顺序。另外,该多个源子句还可以称为子句序列。
例如,将源语句“智利最高法院裁决皮诺契特丧失心神能力”切分为3个源子句,分别为“智力最高法院”、“裁决皮诺契特”及“丧失心神能力”。
步骤S103:将每个源子句输入至预先训练好的神经机器翻译NMT模型中进行翻译,获得每个源子句所对应的目标子句。
预先训练有神经机器翻译模型(Neural Machine Translation,NMT),NMT模型是现有的语言翻译模型。需要说明的是,本申请并未对NMT模型进行创造性改进,而是将输入NMT模型的源语句进行了切分,并非直接输入完整的源语句。
将切分后的源子句依次输入神经机器翻译模型(Neural Machine Translation,NMT),NMT模型可以依次对其进行翻译,得到每个源子句各自的翻译子句(即目标子句)。
例如,上述“智力最高法院”、“裁决皮诺契特”及“丧失心神能力”的目标子句分别为“chilean supreme court”、“rules pinochet”及“mentally incompetent”。
各个翻译子句同样具有先后顺序,其先后顺序即源子句的先后顺序。从而,该多个翻译子句可以称为翻译子句序列。
步骤S104:按照各个源子句的先后顺序,拼接源子句所对应的目标子句,获得源语句的目标语句。
按照目标子句的先后顺序或者源子句的先后顺序,拼接目标子句后,便可以获得完整源语句的翻译语句,翻译语句即目标语句。
例如,上文源语句“智利最高法院裁决皮诺契特丧失心神能力”的翻译语句为“chilean supreme court rules pinochet mentally incompetent”。
由以上技术方案可知,本申请提供的面向神经机器翻译的长句切分方法,在使用NMT模型进行语句翻译前,并非直接将源语句输入NMT模型中,而是将语句切分为较短的子句,将各个子句依次输入NMT模型,以使NMT模型分别依次翻译各个切分后的子句,然后,直接将翻译后的子句拼接为完整子句。由于输入NMT模型翻译的子句较短,NMT模型的翻译准确率较高,从而提高了语句翻译的准确率。
在实际应用中,切分模型的构建准确性直接影响源语句切分子句的精准度,进而影响整个源语句的翻译效果。因此,对于本申请来讲,构建准确的切分模型是尤为重要的。以下具体说明,如何构建具有较佳切分效果的切分模型。
切分模型可以具体包括分割子模型、调序子模型及长度子模型。
分割子模型,是使用训练模型训练获得的,用于确定源子句中在某词单元处可进行分割的概率;调序子模型也是训练模型训练获得的,用于确定前后两个源子句不需要进行调序的概率;长度子模型用于确定某个源子句的长度为满意长度的概率。
通俗来讲,使用切分模型的目的是,在源语句中找到一些分割点。这些分割点可以把源语句分割为几个在一定程度上独立的源子句,从而单独翻译这几个源子句。
为了避免对翻译后的源子句进行调序,建立了调序子模型,调序子模型对翻译后的源子句是否需要调序进行判断,若需要进行调序,则在该点不进行分割,认为该点并不是一个好的分割点。同样的,为了避免源子句长度过短,建立了长度子模型,长度子模型来控制分割后源子句的长度。例如,可以为长度在15-20之间的子句设置较高的概率,以表示这是一个十分愿意接受的子句长度,且可以提高该子句作为最终分割的源子句的概率。
以下,分别说明三个子模型的构建过程。
如图2所示,分割子模型的构建方法包括步骤S201~步骤S203。
步骤S201:使用预设平行语料集中源语料与目标语料的对齐信息,对源语料中的词单元进行标记;其中,标记用于表示源语料在词单元处是否可分割。
预先设置有平行语料集,平行语料集中包含源语料与目标语料,其中,目标语料指的是源语料翻译后的语句。源语料与目标语料的对齐信息,指的是源语料中哪个词与目标语料中的哪个词是相互翻译得到的。
具体地,平行语料集中的源语料与目标语料经过分词操作后,被划分为独立的分词,每个分词可以看做一个词单元。为每个分词设置编号,进而可以使用编号与编号之间的对应关系表示对齐信息。可选地,可以使用GIZA++工具,来获得平行语料中的对齐信息。
例如,源语料“智利最高法院裁决皮诺契特丧失心神能力”经过分词后获得的源语料分词集合C为[智利最高法院裁决皮诺契特丧失心神能力],该集合中包含9个分词,9个分词表示9个词单元,设置9个词单元的编号分别为0-8。该源语料对应的目标语料为“chileansupreme court rules pinochet mentally incompetent”,将该目标语料分词后获得的目标语料分词集合E为[chilean supreme court rules pinochet mentally incompetent],各个分词的编号分别为0-6。词对齐信息集合A为[0-0 1-1 2-2 3-4 4-3 4-4 4-5 4-6 5-46-4 7-4 8-6],其中,每对词对齐信息中,横线前的编号为源语料分词集合C中词的编号,横线前的编号为目标语料分词集合E中词的编号,当然,反之亦可。
根据词对齐信息,可以构建词对齐关系图,词对齐关系图即使用连接线将源语料与目标语料中具有对齐关系的词连接起来。如图3所示,其示出了上述示例的词对齐关系图。
使用对齐关系图,标记源语句中的分割点。
具体地,首先定义块的概念,再基于块的概念,使用对齐关系图获得分割点。
块其中,c表示源语料,e代表目标语料,上下标代表开始词编号和结束词编号。
块需要满足以下闭合条件:在中的词只对应到范围内,不能对应到范围外;在外的词不能对应到范围内。满足条件的块是闭合的。
块中的即表示源语料中可以单独翻译的部分内容,即可以单独翻译的子句。
以图3为例,源语料c(位置在上的语料)和目标语料e(位置在下的语料)组成的平行语料中,包含的块分别为 进而,可以确定的是, 即源语料中可以单独进行翻译的部分内容。
以上是对块的介绍,更详细的说明可以参见论著《linguistically motivatedstatistical machine translation》公开的内容。
基于块的定义,可以进一步定义分割点。
给定一个源语料c=[c1,c2.........cn]和目标语料e=[e1,e2,........em],利用短语抽取算法,确定一个块如果,源语料中某个位置k将块分割为及则认为源语料在位置k处是可以分割的。
参见图4,图4为图3的分割点示例图。图3中块可在k=2处,分为和因此,如图4的双箭头的划分规则,可以确定在k=2处可以将源语料分割为和两个子句,第一个子句为[智利最高法院],第二个子句是[裁决皮诺契特丧失心神能力]。
需要说明的是,只要符合上述条件的位置都属于分割点,也就是说,分割点并非一处,可以包含多处。另外,一般地,最后一个单词都是默认可分割的。
根据分割点的位置,对源语料中的词单元进行标记,标记用于表示源语料在某个词单元位置后是否可分割。以图3所示的源语料为例,获得的标记flag为[1,1,1,0,0,0,0,0,1],分别表示在‘智利’,‘最高’,‘法院’这三个词(右边)都是可分割的。
当然,在标记前,可以选取平行语料中较长的源语料进行标记,使用长度较长的源语料训练得到的分割子模型的准确性更高。
步骤S202:在标记后的源语料中,提取词单元的分割特征;其中,分割特征包含标记为可分割的词单元。
源语料进行标记后,提取源语料中各个词单元(包含可分割的词单元)的分割特征。分割特征指的是,词单元、词单元的前几个词及后几个词。其中,词单元前后词的个数可以根据实际情况设定,本申请并不做具体限定。可选地,可以是前2个词及后2个词,或者,可以是前3个词及后3个词。
假设,词单元为W,则可以将该词单元、该词单元的前3个词(W-1,W-2,W-3)后3个词(W1,W2,W3)作为分割特征为。以图3为例,假设词单元W为“裁决”,则分割特征为[W-1=法院,W-2=最高,W-3=智利,W=裁决,W1=皮诺契,W2=特,W3=丧失]。
步骤S203:使用最大熵训练工具,对分割特征进行训练,获得分割子模型。可选地,最大熵训练工具可以是但不限定于Maxent工具。
获得每个词单元的分割特征后,将每个词单元的分割特征输入最大熵模型中进行训练,便可以获得最大熵分类器,该最大熵分类器即分割子模型。进而,可以使用分割子模型判断某个源语句在单词Wi处否可分割,分割子模型的具体使用方法见下文描述。
参见图5,其示出了调序子模型的构建方法流程图。如图5,调序子模型的构建流程可以具体包括步骤S501~步骤S503。
步骤S501:根据预设调序算法,在预设平行语料集的源语料中,抽取调序元组;其中,调序元组中包含第一源语料子句、第二源语料子句、及第一源语料子句翻译后的目标子句与第二源语料子句翻译后的目标子句是否需要调序。
可选地,抽取调序元组的调序算法可以是但不限定于调序训练样例抽取算法,如论文《Maximum entropy based phrase reordering model for statistical machinetranslation》所公开的调序训练样例抽取算法。
调序元组(Y\N,S1,S2)中的S1及S2表示源语料中的两个子句,Y\N表示该两个子句是否需要调序,若需要,则使用Y,若不需要,则使用N。其中,两个子句可以分别称为第一源语料子句及第二源语料子句。子句可以是根据对齐信息确定出来的子句。
步骤S502:在调序元组中,抽取调序特征。
具体地,调序特征可以是第一源语料子句的左边界词及右边界词、以及第二源语料子句的左边界词及右边界词。
步骤S503:使用最大熵训练工具,对调序特征进行训练,获得调序子模型。
可选地,最大熵训练工具可以是但不限定于Maxent工具。使用最大熵训练工具,训练调序特征后,可以获得最大熵分类器,该最大熵分类器即调序子模型。进而,可以使用调序子模型判断分割得到的两个源子句是否需要调序,调序子模型的具体使用方法见下文描述。
长度子模型,用来确定某个源子句的长度是否满足预设的长度范围期望。
若分割后的子句长度不在预设的长度范围内,则给予该子句较低的长度概率,表示该子句不满足期望,反之,若分割后的子句长度在预设的长度范围内,则给予该子句较高的长度概率,表示该子句是满足期望的。子句的长度概率越大,则选择该子句作为最终分割的源语句的概率越大。
长度子模型描述的是,不同长度范围的子句所对应的概率,该概率即长度满意概率。
长度子模型可以是任意一种概率分布模型,例如,对数模型或正态概率分布模型等。以构建正态概率分布模型为例,可以预先设置子句长度均值与方差,根据均值和方差,构建正态概率分布模型。正态概率分布模型即可以认为是长度子模型。
需要说明的是,构建长度子模型时,需要保证期望获得的子句长度范围对应较高的概率值。
多个不同的子句长度均是可以接受的子句长度,则该多个不同的子句长度可以构成上述的期望获得的子句长度范围,可以为该范围内的该多个不同的子句长度设置相同的概率值。例如,子句长度在15-20内的子句,可以设置相同的概率值。
因为,对于长度在某个范围内的子句,NMT模型都可以很好地进行翻译。刻意区分每个长度的子句且给与它们不同的概率,使得NMT模型计算更加繁琐且对翻译效果几乎无影响,因而,可以为长度在某个范围内的子句设置相同的概率值。
以上构建的切分子模型、调序子模型及长度子模型,可以组成切分模型。将待切分源语句输入切分模型,以计算该切分源语句中每个词单元的切分概率。
参见图6所示的切分概率的计算流程图。
如图6所示,将待切分源语句输入至分割子模型中,获得该待切分源语句中每个词单元的可分割概率。具体地,如上述说明,分割子模型可以是最大熵训练工具训练获得的模型,该模型可以输出词单元的两个概率,即可分割的概率及不可分割的概率,本申请只获取可分割概率Si。
将待切分源语句输入至调序子模型中,获得该待切分源语句在每个词单元处分割出的子句与前一轮已经分割出的子句不需要调序的概率。具体地,待切分源语句中,可以依次在每个词单元处划分出子句(即词单元对应的子句),调序子模型依次计算每个子句与前一轮已经分割出的子句的两个概率,即需要调序的概率以及不需要调序的概率,本申请只获取不需要调序的概率Ri。
需要说明的是,“前一轮已经分割出的子句”可以称为“上一子句”,至于为何会出现“前一轮已经分割出的子句”,请见下述说明。在首轮分割时,由于并不存在“前一轮已经分割出的子句”,因此,可以直接将该词单元的不需要调序的概率设置为某个预设值,如0.5。
将待切分源语句输入至长度子模型中,获得该待切分源语句在每个词单元处分割出的子句的长度满意概率。具体地,待切分语句中,可以依次在每个词单元处划分出一个子句(即词单元对应的子句),将该子句的长度输入长度子模型后,可以输出该词单元对应的子句的长度满意概率Li。
将可分割概率、不需要调序概率及长度满意概率三者的乘积作为词单元的切分概率Pi,即Pi=Si*Ri*Li。
例如,待切分源语句为“智利最高法院裁决皮诺契特丧失心神能力”,以词单元“智利”为例,该词单元的可分割概率为0.5,不需要调序概率为0.7,长度满意概率为0.1,则该词单元的切分概率Pi=0.5*0.7*0.1=0.035。
需要说明的是,待切分源语句中的词单元指的是组成待切分源语句的基本单位,词单元可以是由分词操作生成的分词。
在获得每个词单元的切分概率后,根据切分概率,在该多个词单元中选择某个词单元作为切分点。其中,该某个词单元为目标词单元,该切分点即分割点。然后,可以将该切分点及该切分点之前的子句作为本轮分割出来的一个源子句,将该切分点之后的语句作为新的待切分源语句输入至上述切分模型中,进行下一轮的分割。
可以理解的是,首次输入的待切分源语句即初始的源语句,每确定出一个分割点,便可以分割出一个源子句,然后将剩余的语句重新输入切分模型中,以确定下一个分割点,直至待切分源语句的长度小于预设的最小子句长度。待切分源语句的长度小于最小子句长度时,根据确定出来的切分点,便可以分割出各个源子句。
例如,对于源语句“智利最高法院裁决皮诺契特丧失心神能力”(该源语句中各个词单元的编号依次为0-8),确定出的切分点分别为2、5及8,因此,可以将该源语句切分为“智利最高法院”、“裁决皮诺契特”及“丧失心神能力”三个源子句。
需要说明的是,以上说明中,每次将待切分源语句输入切分模型后,切分模型从该待切分源语句的首个词单元起开始,计算每个词单元的切分概率。但是,为了防止切分出的源子句过短,可以使用最小子句长度,来跳过该待切分源语句的前几个词单元,即默认前几个词单元不可分割,直接计算后面每个词单元的切分概率。这样,切分点分割的源子句中必然包含该前几个词单元,从而防止分割的源子句的长度过短。
例如,在某轮切分时,输入切分模型中的待切分源语句为“裁决皮诺契特丧失心神能力”。最小子句长度为2,则切分模型直接从“皮诺契”处开始,计算该词单元的切分模型。
以上选取切分点时,是根据每个词单元的切分概率,在多个词单元中选择某个词单元作为切分点。具体的实现方式可以包括以下两种。
第一种实现方式中,在多个词单元中,直接选取最高的切分概率所对应的词单元作为切分点。例如,某轮切分时,输入切分模型中的待切分源语句为“裁决皮诺契特丧失心神能力”经过分词操作后,生成的词单元分别为“裁决”、“皮诺契”、“特”、“丧失”、“心神”及“能力”,且获得每个词单元的切分概率依次分别为0.3、0.2、0.9、0.5、0.3及0.6,选取最大值0.9对应的词单元“特”作为本轮的切分点。当然,本示例中的词单元及其对应的概率仅仅是一种示例说明,在实际应用中,可以是其他形式,本申请并不局限于此。
第二种实现方式中,利用集束搜索beamsearch算法,计算每个词单元的切分概率的综合成绩,并在词单元中,选取综合成绩在前的多个目标词单元作为切分点;其中,不同的目标词单元作为不同切分序列中的切分点,切分序列包括切分点及从该切分点的新的待切分源语句中选取的切分点。
这样,在所有切分点的新的待切分源语句的长度小于最小预设子句长度时,依据预设选取规则,在各个切分序列中,选取目标切分序列,进而,根据目标切分序列中的各个切分点,在源语句中切分出源子句。
其中,集束搜索beamsearch算法为现有的一种搜索算法,在每次选择切分点时,不是选择切分概率最大值作为切分点,而是使用集束搜索beamsearch算法计算每个词单元本轮的切分概率与该词单元对应的前几轮切分概率的综合成绩,该综合成绩可以是但不限定于切分概率的相加或相乘,并且使用beamsearch算法的窗口,选取多个较大的综合成绩。例如,beamsearch算法的窗口为5,则选取5个较大的综合成绩。
选取多个综合成绩对应的词单元作为可能的切分点,即该可能的切分点仅仅是本轮中可能的切分点,在停止切分后,确定出最大的综合成绩。该最大的综合成绩所对应的各个可能的切分点即作为最终的切分点。
为了辅助理解,以下以具体示例对上述使用beamsearch算法的选取过程进行举例说明。
假设beamsearch算法使用的窗口大小为3。
第一轮分割:第一轮分割时,在多个词单元中,选取三个较大的切分概率对应的词单元作为分割点,如选取的三个分割点分别为P1、P2及P3,对应的切分概率分别为[P1=0.8,P2=0.7,P3=0.5]。可以理解的是,在第一轮分割时,切分概率即综合成绩。
第二轮分割:分别对第一轮的三个分割点所切分的三个子句进行第二次分割,获得每个子句中每个词单元的切分概率。例如三个子句中词单元的切分概率分别为[P11=0.5,P12=0.4,P13=0.3]、[P21=0.9,P22=0.7,P23=0.3]、[P31=0.4,P32=0.5,P33=0.2]。
然后,将本轮词单元的切分概率与该词单元所在的子句上一轮所对应的切分概率一一相乘,获得本轮每个词单元的综合成绩。如P11*P1、P12*P1、P13*P1、P21*P2、P22*P2、P23*P2……P33*P3。最后,在该多个综合成绩中,选择三个较大的综合成绩对应的词单元作为本轮的分割点。如,[P2*P21,P2*P22,P1*P11]是前三个综合成绩,则本轮选择的分割点分别为P21、P22及P11。整体来看,两轮分割后选取的分割点序列分别为:[[P2,P21]、[P2,P22]、[P1,P11]]。
第三轮分割:以P21、P22及P11这三个分割点作为新的分割点进行第三轮的分割,方法同第二轮分割。以此类推,在某轮分割后,所有子句的长度都小于最小预设子句长度,则结束分割。
假设分割完成后,可以得到三个综合成绩最高的分割序列。在这三个序列中选取综合最高的作为最终的分割序列。其中,综合成绩可以是该分割序列中各个分割点的切分概率的乘积。当然,在其他示例中,分割点的综合成绩并不局限于切分概率的乘积形式,还可以是和值或其他形式。
以上过程可以使用以下公式表示:
其中,k表示分割序列中分割点的个数。Si表示可分割概率,Ri表示不需要调序概率,Li表示长度满意概率。
以上提出了确定切分点的两种方式,与第一种实现方式相比,第二种实现方式使用beamsearch算法,beamsearch算法考虑了多轮分割的综合情况,在一定程度上能更好地确定切分点,得到的翻译结果更佳。
以下对本申请提供的进行介绍,需要说明的是,下文有关的说明可以参见上文提供的,以下并不赘述。
与上述面向神经机器翻译的长句切分方法实施例1相对应,本申请提供了一种面向神经机器翻译的长句切分装置实施例1。如图7所示,该切分装置可以具体包括:源语句长度确定模块701、源语句切分模块702、源子句翻译模块703及翻译子句拼接模块704;其中:
源语句长度确定模块701,用于在获得待翻译的源语句后,确定源语句的长度;
源语句切分模块702,用于在长度大于预设长度的情况下,利用预先构建的切分模型对源语句进行切分,获得多个源子句;其中,各个源子句之间具有先后顺序;
源子句翻译模块703,用于将每个源子句输入至预先训练好的神经机器翻译NMT模型中进行翻译,获得每个源子句所对应的目标子句;
翻译子句拼接模块704,用于按照各个源子句的先后顺序,拼接源子句所对应的目标子句,获得源语句的目标语句。
由以上技术方案可知,本申请提供的面向神经机器翻译的长句切分装置,源语句长度确定模块701在使用NMT模型进行语句翻译前,并非直接将源语句输入NMT模型中,而是将语句切分为较短的子句,源语句切分模块702将各个子句依次输入NMT模型,以使NMT模型分别依次翻译各个切分后的子句,然后,翻译子句拼接模块704直接将源子句翻译模块703翻译后的子句拼接为完整子句。由于输入NMT模型翻译的子句较短,NMT模型的翻译准确率较高,从而提高了语句翻译的准确率。
在一个具体示例中,源语句切分模块702可以具体包括:待切分源语句获得子模块、切分概率获得子模块、切分点选取子模块、待切分源语句重新确定子模块、及源语句切分子模块。其中:
待切分源语句获得子模块,用于将源语句作为待切分源语句;
切分概率获得子模块,用于将待切分源语句输入至预先构建的切分模型中,获得待切分源语句中每个词单元所对应的切分概率;
切分点选取子模块,用于依据切分概率,在多个词单元中选取目标词单元作为切分点;
待切分源语句重新确定子模块,用于将待切分源语句中切分点之后的语句作为新的待切分源语句,返回将新的待切分源语句输入至预先构建的切分模型中,直至新的待切分源语句的长度小于预设的最小子句长度;
源语句切分子模块,用于新的待切分源语句的长度小于预设的最小子句长度时,根据选取的各个切分点,在源语句中切分出源子句。
在另一具体示例中,切分模型可以具体包括分割子模型、调序子模型及长度子模型。相应地,切分概率获得子模块包括:可分割概率获得单元、不需要调序概率获得单元、长度满意概率获得单元、及切分概率获得单元。其中:
可分割概率获得单元,用于将待切分源语句中的词单元输入至分割子模型,获得词单元的可分割概率;
不需要调序概率获得单元,用于将待切分源语句中的词单元输入至调序子模型,获得词单元对应的子句与上一子句的不需要调序概率;其中,上一子句为待切分源语句的前一源子句;
长度满意概率获得单元,用于将待切分源语句中词单元对应的子句的长度输入至长度子模型,获得词单元对应的子句的长度满意概率;
切分概率获得单元,用于将可分割概率、不需要调序概率及长度满意概率三者的乘积作为词单元的切分概率。
在另一具体示例中,面向神经机器翻译的长句切分装置还包括:分割子模型构建模块,分割子模型构建模块,用于构建分割子模型。
其中,分割子模型构建模块包括:词单元标记子模块、分割特征提取子模块、及分割子模型获得子模块。其中:
词单元标记子模块,用于使用预设平行语料集中源语料与目标语料的对齐信息,对源语料中的词单元进行标记;其中,标记用于表示源语料在词单元处是否可分割;
分割特征提取子模块,用于在标记后的源语料中,提取词单元的分割特征;其中,分割特征包含标记为可分割的词单元;
分割子模型获得子模块,用于使用最大熵训练工具,对分割特征进行训练,获得分割子模型。
在另一具体示例中,面向神经机器翻译的长句切分装置还包括:调序子模型构建模块,调序子模型构建模块,用于构建调序子模型。
其中,调序子模型构建模块包括:调序元组抽取子模块、调序特征抽取子模块、及调序子模型获得子模块。其中:
调序元组抽取子模块,用于根据预设调序算法,在预设平行语料集的源语料中,抽取调序元组;其中,调序元组中包含第一源语料子句、第二源语料子句、及第一源语料子句翻译后的目标子句与第二源语料子句翻译后的目标子句是否需要调序;
调序特征抽取子模块,用于在调序元组中,抽取调序特征;
调序子模型获得子模块,用于使用最大熵训练工具,对调序特征进行训练,获得调序子模型。
在另一具体示例中,面向神经机器翻译的长句切分装置还包括:长度子模型构建模块,长度子模型构建模块,用于构建长度子模型。
其中,长度子模型构建模块包括:
正态概率分布模型构建子模块,用于根据预设的子句长度均值与方差,构建正态概率分布模型。
在一个具体示例中,切分点选取子模块包括:综合成绩确定单元。
综合成绩确定单元,用于利用集束搜索beamsearch算法,计算每个词单元的切分概率的综合成绩,并在词单元中,选取综合成绩在前的多个目标词单元作为切分点;其中,不同的目标词单元作为不同切分序列中的切分点,切分序列包括切分点及从该切分点的新的待切分源语句中选取的切分点;
相应地,源语句切分子模块包括:目标切分序列选取单元及源子句切分单元。其中:
目标切分序列选取单元,用于所有切分点的新的待切分源语句的长度小于最小预设子句长度时,依据预设选取规则,在各个切分序列中,选取目标切分序列;
源子句切分单元,用于根据目标切分序列中的各个切分点,在源语句中切分出源子句。
在另一具体示例中,切分点选取子模块包括:切分点选取子模块包括:选取最大切分概率单元。
选取最大切分概率单元,用于在多个词单元中,选取最高的切分概率所对应的词单元作为切分点。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。