统计语言模型
乔姆斯基(Noam Chomsky):有史以来最伟大的语言学家
贾里尼克 (Fred Jelinek):首先成功利用数学方法解决自然语言处理问题的是语音和语言处理大师
在很多涉及到自然语言处理的领域,如机器翻译、语音识别、印刷体或手写体识别、拼写纠错、汉字输入和文献查询中,我们都需要知道一个文字序列是否能构成一个大家能理解的句子,显示给使用者。对这个问题,我们可以用一个简单的统计模型来解决这个问题。
1. S:一连串特定顺序排列的词 w1, w2,…, wn
2. 即S 表示某一个由一连串特定顺序排练的词而组成的一个有意义的句子,也就是想知道S在文本中出现的可能性,用概率P(S) 来表示。
3. P(S)= P(w1)P(w2|w1)P(w3| w1 w2)…P(wn|w1 w2…wn-1)
4. 假定任意一个词wi的出现概率只同它前面的词 wi-1 有关(即马尔可夫假设)
5. P(S)= P(w1)P(w2|w1)P(w3|w2)…P(wi|wi-1)…
6. 接下来的问题就是如何估计 P (wi|wi-1)。
事实证明,统计语言模型比任何已知的借助某种规则的解决方法都有效。
谈谈中文分词
由于模型是建立在词的基础上的,对于中日韩等语言,首先需要进行分词,即将一个句子分成一个个的词。
以下为各种分词方法以及演进
“查字典” 法:把一个句子从左向右扫描一遍,遇到字典里有的词就标识出来,遇到复合词(比如“上海大学”)就找最长的词匹配,遇到不认识的字串就分割成单字词。 |
最少词数的分词理论(“查字典”法):即一句话应该分成数量最少的词串。这种方法一个明显的不足是当遇到有二义性(有双重理解意思)的分割时无能为力。 |
统计语言模型:成功解决分词二义性问题,将汉语分词的错误率降低了一个数量级。 最好的分词方法:保证分完词后这个句子出现的概率最大 假定一个句子S可以有几种分词方法,假定有以下三种: A1, A2, A3, ..., Ak B1, B2, B3, ..., Bm C1, C2, C3, ..., Cn 如果我们穷举所有可能的分词方法并计算出每种可能性下句子的概率,那么计算量是相当大的。因此,我们可以把它看成是一个动态规划(Dynamic Programming)的问题,并利用“维特比”(Viterbi)算法快速地找到最佳分词。 |
隐含马尔可夫模型在语言处理中的应用
根据声学信号来推测说话者的意思,就是语音识别。这样说来,如果接收端是一台计算机而不是人的话,那么计算机要做的就是语音的自动识别。同样,在计算机中,如果我们要根据接收到的英语信息,推测说话者的汉语意思,就是机器翻译; 如果我们要根据带有拼写错误的语句推测说话者想表达的正确意思,那就是自动纠错。
以语音识别为例,观测到语音信号 o1,o2,o3 时,要根据这组信号推测出发送的句子 s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。
用数学语言来描述,就是在已知 o1,o2,o3,...的情况下,求使得条件概率
P(s1,s2,s3,...|o1,o2,o3....) 达到最大值的那个句子 s1,s2,s3,...
利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成
P(o1,o2,o3,...|s1,s2,s3....)* P(s1,s2,s3,...)
其中
P(o1,o2,o3,...|s1,s2,s3....) :某句话 s1,s2,s3...被读成 o1,o2,o3,...的可能性
P(s1,s2,s3,...) :字串s1,s2,s3,...本身能够成为一个合乎情理的句子的可能性
满足以下两个假设的模型就叫隐含马尔可夫模型
l s1,s2,s3,... 是一个马尔可夫链,也就是说,si 只由 si-1 决定 (详见系列一);
l 第 i 时刻的接收信号 oi 只由发送信号 si 决定(又称为独立输出假设, 即P(o1,o2,o3,...|s1,s2,s3....) = P(o1|s1) * P(o2|s2)*P(o3|s3)...。
那么我们就可以很容易利用算法 Viterbi 找出上面式子的最大值,进而找出要识别的句子 s1,s2,s3,...。
用“隐含”这个词是因为状态s1,s2,s3,...无法直接观测到。
隐含马尔可夫模型的应用远不只在语音识别中。在上面的公式中,如果我们把 s1,s2,s3,...当成中文,把 o1,o2,o3,...当成对应的英文,那么我们就能利用这个模型解决机器翻译问题; 如果我们把 o1,o2,o3,...当成扫描文字得到的图像特征,就能利用这个模型解决印刷体和手写体的识别。
P (o1,o2,o3,...|s1,s2,s3....) 根据应用的不同而又不同的名称
l 在语音识别中它被称为“声学模型” (Acoustic Model)
l 在机器翻译中是“翻译模型” (Translation Model)
l 在拼写校正中是“纠错模型” (Correction Model)
P (s1,s2,s3,...) 就是我们在系列一中提到的统计语言模型。
怎样度量信息?
一条信息的信息量大小和它的不确定性有直接的关系。比如说,我们要搞清楚一件非常非常不确定的事,或是我们一无所知的事情,就需要了解大量的信息。相反,如果我们对某件事已经有了较多的了解,我们不需要太多的信息就能把它搞清楚。所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少。
对于任意一个随机变量 X(比如得冠军的球队),它的熵定义如下:
变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
有了“熵”这个概念,我们就可以回答本文开始提出的问题,即一本五十万字的中文书平均有多少信息量。我们知道常用的汉字(一级二级国标)大约有 7000 字。假如每个字等概率,那么我们大约需要13 个比特(即 13 位二进制数)表示一个汉字。但汉字的使用是不平衡的。实际上,前 10% 的汉字占文本的 95% 以上。因此,即使不考虑上下文的相关性,而只考虑每个汉字的独立的概率,那么,每个汉字的信息熵大约也只有 8-9 个比特。如果我们再考虑上下文相关性,每个汉字的信息熵只有5比特左右。所以,一本五十万字的中文书,信息量大约是 250 万比特。如果用一个好的算法压缩一下,整本书可以存成一个 320KB 的文件。如果我们直接用两字节的国标编码存储这本书,大约需要 1MB 大小,是压缩文件的三倍。这两个数量的差距,在信息论中称作“冗余度”(redundancy)。 需要指出的是我们这里讲的 250 万比特是个平均数,同样长度的书,所含的信息量可以差很多。如果一本书重复的内容很多,它的信息量就小,冗余度就大。
不同语言的冗余度差别很大,而汉语在所有语言中冗余度是相对小的。这和人们普遍的认识“汉语是最简洁的语言”是一致的。