机器翻译模型
-
1 Statistical Machine Translation(SMT)
SMT是基于统计的机器翻译:- 假设模型是中文—> 英语,给定中文句子x,为了找到最匹配的英语句子y,定义目标函数:
a r g m a x y P ( y ∣ x ) argmax_yP(y|x) argmaxyP(y∣x) - 根据Bayes规则,将目标函数转化为如下函数:
a r g m a x y P ( x ∣ y ) P ( y ) argmax_yP(x|y)P(y) argmaxyP(x∣y)P(y) - 对齐的规则(一对多,或者,多对一),计算太复杂,y的种类过多,可以设置阈值,丢弃较低的假设。
- 假设模型是中文—> 英语,给定中文句子x,为了找到最匹配的英语句子y,定义目标函数:
-
2 Neural Machine Translation(NMT)
NMT是神经网络的机器翻译:
网络结构称为seq2seq,它包含两个RNNs- 编码器RNN生成源语句的编码,运行神经网络生成解码器RNN提供初始隐藏状态
- 解码器RNN是一种以编码为条件生成目标句的语言模型
seq2seq可以运用更多的领域:
- 摘要(长文本 —> 短文本)
- 对话(前一句话 ----> 下一句话)
- 解析(输入文本 ----> 输出解析序列)
- 代码生成(自然语言 —> Python代码)
解码方式:
- 原始抽样,代价太大,太复杂。
- 贪心算法,每次选取最大价值的翻译,问题的是之前的结果没有办法修改和撤销。
- beam search,主要在于k值的选取,可以用一个优先队列进行维护。
机器翻译的难题:
- 词表外的单词处理
- 训练数据和测试数据之间领域不匹配,即测试数据的领域在训练数据中没有
- 较长文本中,上下文的维护很难,会有记忆消失等情况
- 常识很难处理,类似于中文古诗之类