表2 当前实施的预测器
2.1 示例预测器排列
SGNMT允许组合任意数量的预测器,甚至同一预测器类型的多个实例。在多预测器的情况下,我们将预测器分数结合到线性模型中。以下列表说明了各种有趣的解码任务可以被制定为预测器组合。
nmt:单个NMT预测器代表纯粹的NMT解码。
nmt,nmt,nmt:在我们的框架中,使用多个NMT预测器是一种自然的方式表示集成解码(Hansen和Salamon,1990; Sutskever等,2014)。
fst,nmt:NMT解码受限于FST。例如,在MT(Hasler等,2016)的源端简化或“Bach”(Tomczak)中的和弦进行的情况下,这可以用于神经网格再分类(Stahlberg等,2016)或其他类型的限制条件。fst预测器也可用于将基于字符或基于子词单元的NMT的输出限制为编码为FSA的大型单词词汇表。
nmt,rnnlm,srilm,nplm:将NMT与三种语言模型相结合:RNNLM(Zaremba et al。,2014),Kneser-Ney n-gram LM(Heafield et al。,2013; Stolcke et al。 2002)和前馈神经网络LM(Vaswani等,2013)。
nmt,ngramc,wc:Stahlberg等人之后的基于MBR的NMT (2017)。用(ngramc)和简单的单词惩罚(simple word penalty)(wc)提取n-gram后件。
3 解码器
解码是搜索最高得分假设的算法。预测器列表通过实现方法initialize(·),getstate(),set state(·),predict next()和consume(·)来确定如何评估(部分)假设。解码器类实现了适用于列表中所有预测器的这些方法的版本。initialize(·)总是在解码一个新的句子之前被调用。许多流行的搜索策略可以通过剩下的方法get state(),set state(·),predict next()和consume(·)来描述。算法1和算法2展示了如何用这种方法来定义贪婪和波束解码【形式上,算法1和算法2中的predict next()返回标记项和他们的成本对;字符串连接表示为·】。
表3包含当前实施的解码器列表。图1中的UML类图解释了解码器和预测器之间的关系。