越简单越直观的往往越震撼。
EM算法是个神奇的东西, 这次将利用它来解决简单的句子对齐问题,并得到双语翻译概率表 假设语料库为: I laugh 我 笑 laugh loudly 大声地 笑 那么有英语词汇表}{I,laugh,loudly} 以及中文词汇表{我,笑,大声地} 最开始,我们并没有任何关于词汇间如何翻译的信息(也就是说,锅看不懂中文,更看不懂英文) 那么: P(我|I)=1/3 P(笑|I)=1/3 P(大声地|I)=1/3 P(我|laugh)=1/3 P(笑|laugh)=1/3 P(大声地|laugh)=1/3 P(我|loudly)=1/3 P(笑|loudly)=1/3 P(大声地|loudly)=1/3 对于 I laugh 我 笑 laugh loudly 大声地 笑 有2种对齐方式:顺序(I对应我,laugh对应笑),反序(I对应笑,laugh对应我) 这样 P(顺序,我 笑|I laugh)= P(我|I) P(笑|laugh)=1/3*1/3=1/9 P(反序,我 笑|I laugh)= P(笑|I) P(我|laugh)=1/3*1/3=1/9 规则化后,有: P(顺序,我 笑|I laugh)=1/2 P(反序,我 笑|I laugh) =1/2 同理,对于第二个句子对 P(顺序, 大声地 笑 | laughloudly )=1/2 P(反序, 大声地 笑 | laughloudly ) =1/2 貌似到此为止,我们什么都没干 因为对于 I laugh 我 笑来说,计算机认为顺序,反序对齐都一样,但作为我们人来说,由于对这两门语言有背景知识,可以一下就说,这明显是顺序对齐嘛。 同样,对于第二个句子对,也可以马上回答肯定是反序对齐。 不急,继续下去。 现在重新计算词汇对译概率 可得: P(我|I)=1/2 P(笑|I)=1/2 P(大声地|I)=0 这个概率的得出步骤: 考虑 (我 I)这一对,他出现在( I laugh 我 笑 的)的顺序对齐中,而其概率为1/2(其实称为权重更确切) (笑|I)出现在 ( Ilaugh 我 笑 的)的反序对齐中,而其概率为1/2 而 (大声地|I)没有出现。 所以,将上述步骤所得概率归一化后, 可得: P(我|I)=1/2 P(笑|I)=1/2 P(大声地|I)=0 P(我|laugh)=1/4 P(笑|laugh)=1/2 P(大声地|laugh)=1/4 P(我|loudly)=0 P(笑|loudly)=1/2 P(大声地|loudly)=1/2 渐渐的,似乎这概率意思着laugh可以被翻译为笑。。。 再接着,重新计算各句对顺序反序概率 P(顺序,我 笑|I laugh)= P(我|I) P(笑|laugh)=1/2*1/2=1/4 P(反序,我 笑|I laugh)= P(笑|I) P(我|laugh)=1/2*1/4=1/8 P(顺序, 大声地 笑 | laughloudly )=1/8 P(反序, 大声地 笑 | laughloudly ) =1/4 归一后, P(顺序,我 笑|I laugh)=2/3 P(反序,我 笑|I laugh)= 1/3 P(顺序, 大声地 笑 | laughloudly )= 1/3 P(反序, 大声地 笑 | laughloudly ) = 2/3 也就是说,现在计算机相信,第一个句子对更倾向于顺序对齐,第二个句子对更倾向于反序对齐,这与我们的直觉相符合。 相关资源:EM算法一个实例展示