1. 程式人生 > >NLP原理,本質,資訊理論,文字特徵抽取和預處理

NLP原理,本質,資訊理論,文字特徵抽取和預處理

自然語言處理基本概念

語言的數學本質

語言的出現是為了通訊,通訊的本質是為了傳遞資訊。字母,文字,數字都是資訊編碼的不同單元。任何一種語言都是一種編解碼演算法。 我們通過語言把要表達的意思傳遞出來,實際上就是用語言將大腦中的資訊進行了一次編碼,形成了一串文字。懂得這種語言的接收方就能夠使用這種語言進行解碼,然後獲取到裡面的資訊。這就是語言的數學本質。

統計語言模型

機器是不懂得任何一種語言的,早期的自然語言處理方式是讓計算機學習理解語言的語義,語法,然後據此判斷一個句子是否合理,含義是什麼。但最終證明這種研究方向和學習方式是行不通的。

現在的自然語言處理是基於統計語言模型,它根本不需要計算機理解人類的語言,它要做的就是判斷一個句子是否合理,就看這個句子在語料庫中出現的概率如何。

假定S表示某一個有意義的句子,由一連串的詞w1,w2, ,wnw_1, w_2, \cdots, w_n組成,nn是句子的長度。如果想知道S在文字中出現的概率P(S)P(S),那就需要把有史以來人類講過的話統計一下,然後計算出出現的概率。這種方法很顯然是行不通的。因此,需要一個模型來估算。由於S=w1,w2, ,wnS = w_1, w_2, \cdots, w_n,那麼P(S)=P(w1,w2, ,wn)P(S) = P(w_1, w_2, \cdots, w_n)

,利用條件概率公式,S出現的概率等於每一個詞出現的條件概率的乘積 P(w1,w2, ,wn)=P(w1)P(w2w1)P(w3w1,w2)P(wnw1,w2, ,wn1)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(w2w1)P(w_2|w_1)表示在已知以一個詞出現的前提下,第二個詞出現的概率,以此類推,wnw_n的出現概率取決於它前面所有的詞。但這種條件概率的可能性太多,非常難以計算。俄國數學家馬爾科夫提出了一個偷懶但是有效的做法,即馬爾科夫假設模型來簡化這種計算:任意一個詞wiw_i出現的概率只同它前面的詞wi1w_{i-1}有關,簡化後S出現的概率為: P(S)=P(w1)P(w2w1)P(w3w2)P(wnwn1)P(S) = P(w_1) \cdot P(w_2|w_1) \cdot P(w_3|w_2) \cdots P(w_n|w_{n-1}) 該公式對應的統計語言模型為二元模型(Bigram Model)

以上是理論,那麼在實際的機器學習中是如何操作的呢?

  • 首先計算P(wiwi1)P(w_i|w_{i-1}),根據條件概率的定義P(wiwi1)=P(wi,wi1)P(Wi1)P(w_i|w_{i-1}) = \frac{P(w_i, w_{i-1})}{P(W_{i-1})},只需估計聯合概率P(wi,wi1)P(w_i, w_{i-1})和邊緣概率P(wi1)P(w_{i-1}),就變得很簡單。基於大量的語料庫(Corpus),只需要統計wi1,wiw_{i-1}, w_i這對詞在統計的文字中出現的次數#(wi1,wi)\#(w_{i-1}, w_i)以及wi1w_{i-1}本身在同樣的文字中出現的次數#(wi)\#(w_i),然後用這兩個數分別除以語料庫的大小#\#,即可得到這些詞的相對頻度:f(wi1,wi)=#(wi1,wi)#f(w_{i-1}, w_i) = \frac{\#(w_{i-1}, w_i)}{\#} f(wi1)=#(wi1)#f(w_{i-1}) = \frac{\#(w_{i-1})}{\#}
  • 然後根據大數原理,只要統計量足夠,相對頻度就等於概率,即 P(wi,wi1)#(wi1,wi)#P(w_i, w_{i-1}) \approx \frac{\#(w_{i-1}, w_i)}{\#} P(wi1)#(wi1)#P(w_{i-1}) \approx \frac{\#(w_{i-1})}{\#}
  • 最終簡化後,#\#約掉,因此 P(wiwi1)#(wi1,wi)#(wi1)P(w_i|w_{i-1}) \approx \frac{\#(w_{i-1}, w_i)}{\#(w_{i-1})}

N-Gram Model

馬爾科夫假設中只定義和前面一個詞有關,稱之為二元模型。當和其前面N個詞有關的情況,則成為N元模型,這就是文字處理中經常見到的N-Gram Model。實際應用最多的是N=3的三元模型,之所以不用更高階的原因主要是:

  • 空間複雜度。N元模型的大小是N的指數,即O(VN)O(|V|^N),V為一種語言字典的詞彙量
  • 時間複雜度。N元模型的速度也是N的指數,即O(VN1)O(|V|^{N-1}) 因此,N不能太大,而且N從1-2,2-3的效果提升顯著,但是3-4時效果就不明顯了。而且N即使更高階,也無法覆蓋所有的語言,因為語言的上下文的相關性跨度可能非常大,比如跨段落,這是馬爾科夫假設無法解決的。

分詞

統計語言模型是建立在詞的基礎上的,詞是表達語義的最小單位。對於西方拼音語言來說,詞之間是有分界符,因此分詞很簡單。但是對於東方語言,詞之間沒有分界符,因此,進行自然語言處理前,首先要對句子進行分詞。