赞
踩
语言的出现是为了通信,通信的本质是为了传递信息。字母,文字,数字都是信息编码的不同单元。任何一种语言都是一种编解码算法。
我们通过语言把要表达的意思传递出来,实际上就是用语言将大脑中的信息进行了一次编码,形成了一串文字。懂得这种语言的接收方就能够使用这种语言进行解码,然后获取到里面的信息。这就是语言的数学本质。
机器是不懂得任何一种语言的,早期的自然语言处理方式是让计算机学习理解语言的语义,语法,然后据此判断一个句子是否合理,含义是什么。但最终证明这种研究方向和学习方式是行不通的。
现在的自然语言处理是基于统计语言模型,它根本不需要计算机理解人类的语言,它要做的就是判断一个句子是否合理,就看这个句子在语料库中出现的概率如何。
假定S表示某一个有意义的句子,由一连串的词 w 1 , w 2 , ⋯   , w n w_1, w_2, \cdots, w_n w1,w2,⋯,wn组成, n n n是句子的长度。如果想知道S在文本中出现的概率 P ( S ) P(S) P(S),那就需要把有史以来人类讲过的话统计一下,然后计算出出现的概率。这种方法很显然是行不通的。因此,需要一个模型来估算。由于 S = w 1 , w 2 , ⋯   , w n S = w_1, w_2, \cdots, w_n S=w1,w2,⋯,wn,那么 P ( S ) = P ( w 1 , w 2 , ⋯   , w n ) P(S) = P(w_1, w_2, \cdots, w_n) P(S)=P(w1,w2,⋯,wn),利用条件概率公式,S出现的概率等于每一个词出现的条件概率的乘积
P ( w 1 , w 2 , ⋯   , w n ) = P ( w 1 ) ⋅ P ( w 2 ∣ w 1 ) ⋅ P ( w 3 ∣ w 1 , w 2 ) ⋯ P ( w n ∣ w 1 , w 2 , ⋯   , w n − 1 ) P(w_1, w_2, \cdots, w_n) = P(w_1) \cdot P(w_2|w_1) \cdot P(w_3|w_1, w_2) \cdots P(w_n|w_1, w_2, \cdots, w_{n-1}) P(w1,w2,⋯,wn)=P(w1)⋅P(w2∣w1)⋅P(w3∣w1,w2)⋯P(wn∣w1,w2,⋯,wn−1)
其中 P ( w 2 ∣ w 1 ) P(w_2|w_1) P(w2∣w1)表示在已知以一个词出现的前提下,第二个词出现的概率,以此类推, w n w_n wn的出现概率取决于它前面所有的词。但这种条件概率的可能性太多,非常难以计算。俄国数学家马尔科夫提出了一个偷懒但是有效的做法,即马尔科夫假设模型来简化这种计算:任意一个词 w i w_i wi出现的概率只同它前面的词 w i − 1 w_{i-1} wi−1有关,简化后S出现的概率为:
P ( S ) = P ( w 1 ) ⋅ P ( w 2 ∣ w 1 ) ⋅ P ( w 3 ∣ w 2 ) ⋯ P ( w n ∣ w n − 1 ) P(S) = P(w_1) \cdot P(w_2|w_1) \cdot P(w_3|w_2) \cdots P(w_n|w_{n-1}) P(S)=P(w1)⋅P(w2∣w1)⋅P(w3∣w2)⋯P(wn∣wn−1)
该公式对应的统计语言模型为二元模型(Bigram Model)。
以上是理论,那么在实际的机器学习中是如何操作的呢?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。