首页 > 代码库 > 读《数学之美》第三章 统计语言模型
读《数学之美》第三章 统计语言模型
自然语言从产生開始。逐渐演变为一种基于上下文相关的信息表达和传递方式,在计算机处理自然语言时,一个最主要的问题就是为自然语言上下文相关的特性建立数学模型,叫做统计语言模型(Statistical Language Model)。它是自然语言处理的基础。广泛应用于机器翻译、语音识别、印刷体或手写体识别、拼音纠错、汉字输入和文献查询等。
对于一句通顺的话<1>。假设改变一些词的顺序,或替换掉一些词<2>,它的意思就含糊了,假设随机打乱<3>,则全然不知所云了。对于<1>表明是句子合乎语法、词义清晰。对于<2>则虽不符合语法,但词义还算清晰。对于<3>则词义都不清晰了。上个世纪七十年代曾经,科学家就是通过推断文字序列是否合乎文法、含义是否正确等进行自然语言处理的。
贾里尼克换了一个角度。用简单的统计模型非常美丽的攻克了这个问题:一个句子是否合理,就看这个句子出现的概率大小怎样,概率大则说明比較合理。概率小则说明句子不合理。
如果S为某一个句子,由一连串特定顺序排列的词w1,w2,w3,...,wn构成,n为S的句子长度。p(S) = p(w1,w2,w3,...,wn) = p(w1) x p(w2|w1) x p(w3|w1, w2) x ... x p(wn|w1, w2, w3,...,wn-1) 。即p(w1)表示w1这个词出现的概率,p(w2|w1)表示词w2在词w1之后出现的概率。以此类推。
从计算上讲。计算一个词出现的条件概率p(w1)比較简单,第二个词出现的条件概率p(w2|w1)也还不算麻烦,第三个词的条件概率p(w3|w1, w2)已经很难算了。由于涉及到三个变量w1-w2-w3,每一个词的可能性都是一个语言词典的大小,到了最后一个词wn,条件概率基本上无法估算了。
俄国数学家马尔可夫提出了一种简化模型:马尔可夫模型。大体的意思是某一时刻的状态仅仅与前一时刻的状态有关。而与其它时刻无关。用于统计语言模型中,可表述为词wi仅仅与它前一个词wi-1有关,而与其它词无关,这样概率模型採用马尔可夫模型之后得到:p(S) = p(w1,w2,w3,...,wn) = p(w1) x p(w2|w1) x p(w3|w2) x ... x p(wn|wn-1)。这就是统计语言模型的二元模型(Bigram Model)。如果如果一个词由它前面N-1个词决定,则被称为N元模型。
那么剩下的就是怎样预计条件概率p(wi|wi-1)了:
(1) 选择大量合适的语料库(机读文本),数量为#;
(2) 统计词wi-1出现的次数#(wi-1)。
(3) 统计词wi-1,wi前后相邻出现的次数#(wi-1,wi)。
(4) 计算词语二元组的相对频度:f(wi-1) = #(wi-1)/#。f(wi-1,wi) = #(wi-1,wi)/#。
(5) 依据大数定理,仅仅要统计量足够。相对频度等于概率。则p(wi-1) ≈ #(wi-1)/#。p(wi-1,wi) ≈ #(wi-1,wi)/#。
(6) 依据条件概率公式计算条件概率p(wi|wi-1) = p(wi-1,wi)/p(wi-1) = #(wi-1,wi)/#(wi-1)。
上面仅仅是一个非常粗略的流程描写叙述,对于真正实现一个好的统计语言模型,还须要有非常多的问题解决:
(1) 零概率问题
假设某个词在语料库中没有出现或仅仅出现一两次怎么办?还能利用大数定理进行分析吗?
(2) 句子中词仅仅与前一个词相关似乎过于简化了吧?
高阶语言模型,阶数多少最合适?
(3) 语料库的设计
怎样依据详细应用选择最合适的语料库,噪音的考量等。
总结
统计语言模型在形式上非常easy,easy理解。却学问颇深。前面讲到Google的机器翻译项目Rosetta(罗塞塔:源于罗马帝国时期在罗塞塔这个地方发现了一块古埃及石碑,用三种语言埃及象形文字、埃及的拼音文字和古希腊文记录了古埃及的早期历史。因此,今天非常多的翻译软件和服务都叫做罗塞塔)在07年美国标准局主持下的机器翻译系统測评中一举夺魁就体现了统计语言模型的强大功力。
*****************************************************************
2015-8-6
读《数学之美》第三章 统计语言模型