Tag Archives: 机器翻译

CS224N(2.14)Subword Models

今天介绍一下subword(子词)模型。之前介绍的NLP模型都是基于word的,对于英文来说是一个个单词,对于中文来说是一个个词语(需要分词)。不过,最近几年,subword模型多起来了,这就是我们今天要介绍的内容。

对于英文来说,文字的粒度从细到粗依次是character, subword, word,character和word都很好理解,subword相当于英文中的词根、前缀、后缀等,如unfortunately中的un、ly、fortun(e)等就是subword,它们都是有含义的。对于中文来说,只有两层,character和subword是同一层,表示单个的字,而word表示词语。

Continue reading

CS224N(1.31)Translation, Seq2Seq, Attention

今天介绍另一个NLP任务——机器翻译,以及神经网络机器翻译模型seq2seq和一个改进技巧attention。

机器翻译最早可追溯至1950s,由于冷战的需要,美国开始研制由俄语到英语的翻译机器。当时的机器翻译很简单,就是自动从词典中把对应的词逐个翻译出来。

后来在1990s~2010s,统计机器翻译(Statistical Machine Translation, SMT)大行其道。假设源语言是法语$x$,目标语言是英语$y$,机器翻译的目标就是寻找$y$,使得$P(y|x)$最大,也就是下图的公式。进一步,通过贝叶斯公式可拆分成两个概率的乘积:其中$P(y)$就是之前介绍过的语言模型,最简单的可以用n-gram的方法;$P(x|y)$是由目标语言到源语言的翻译模型。为什么要把$P(y|x)$的求解变成$P(x|y)*P(y)$?逐个击破的意思,$P(x|y)$专注于翻译模型,翻译好局部的短语或者单词;而$P(y)$就是之前学习的语言模型,用来学习整个句子$y$的概率,专注于翻译出来的句子从整体上看起来更加通顺、符合语法与逻辑。所以问题就转化为怎样求解$P(x|y)$。

Continue reading