如何翻译一个句子,用语法去分析?同一个词语,在这里是代表这个意思,在另一个地方是又是代表另一个意思,比如:我们去北京大学参观,这句话里面的“北京大学”既可作为一个整体,又可以拆分为“北京“、”大学“,哪种方法是正确的呢?机器翻译试图判断这个文字序列是否合乎文法、含义是否正确等,如果遇到复杂的句子,这种显然方法行不通?贾里尼克换了个角度,用一个简答的统计模型很漂亮的搞定了这个问题。
出发点很简单:一个句子是否合理,就看它的可能性大小如何。至于可能性就用概率来衡量。假定s表示某一个有意义的句子,有一连串特定顺序排列的词w1,w2,w3…..wn组成,这里n是句子的长度。如果想知道s在文本中出现的可能性,也就是数学上所说的s的概率p(s),需要有个模型来估算。既然s=w1,w2,…wn,那么p(s)展开表示:
p(s)=p(w1,w2,…wn)
利用条件概率的工时,s这个序列出现的概率等于每一个词出现的条件概率相乘,预算p(w1,w2,…wn)可展开为:
p(w1,w2,..wn)=p(w1).p(w2|w1).p(w3|w1,w2)….p(wn|w1,w2,…w(n-1))
其中:
p(w1)表示第一个词w1出现的概率
p(w2|w1)是在一直第一个词的前提下,第二个次出现的概率
以此类推,不难看出,词wn出现的概率取决于他前面的所有词
从计算上来看,第一个次的条件概率p(w1)很容易算,第二个词的条件概率p(w2|w1)也还不太麻烦,第三个词的条件概率p(w3|w1,w2)就已经非常难算了,因为它涉及三个变量w1,w2,w3,每个变量的坑你小都是一种语言词典的大小,到了最后一个词wn,条件概率的可能性太多了,无法估算,怎么办?
俄国有个数学家马尔科夫(Andrey Markov)提出一种偷懒单还颇为有效的方法,也就是每当遇到这种情况时,就假设任意一个词w1出现的概率只同他前面的词w(n-1)有关,于是,问题就变得很简单了。这种假设在数学上称为“马尔科夫假设“,现在s的概率变得简单了:
p(s)=p(w1).p(w2|w1).p(w3|w2)…p(wn|w(n-1))
该公式对应的统计语言模型是二元模型,这种模型也应用到中文翻译中。