自然語言處理 - 二元語法與中文分詞
二元語法與中文分詞
之前的一篇文章裡(自然語言處理 - 分詞初窺)中我們介紹並實現了基於詞典的最大匹配分詞方法。這種方法簡單直觀,且詞典擴充很方便。但詞典分詞難以消除歧義,給定兩種分詞結果“商品 和服 務”以及“商品 和 服務”,詞典分詞不知道哪種更加合理。
但對於人類來說,我們平時接觸的都是第二種分詞方案,所以我們知道第二種更加合理,因此可以判定第二種是正確地選擇。這就是利用了統計自然語言處理。統計自然語言處理的核心話題之一,就是如何利用統計手法對語言建模,
語言模型
模型指的是對事物的數學抽象,那麼語言模型指的就是對語言現象的數學抽象。形式化上講,給定一個句子
舉個例子,對於下面的小型語料庫:
商品 和 服務
商品 和服 物美價廉
服務 和 貨幣
每個句子出現的概率都是 1/3,這就是語言模型。然而 的計算非常難:句子數量無窮無盡,無法列舉。即便是大型語料庫,也只能“列舉”有限的句子。實際遇到的句子大部分都在語料庫之外,意味著它們的概率都被當作 0,這種現象被稱為資料稀疏。
考慮到很多句子複用相同的詞語,如果把句子看成詞語列表 ,其中,每一個 都是一個詞語,那麼語言模型可以定義為:
其中 (Begin Of Sentence) ,(End Of Sentence) 來標記句子首尾的兩個特殊"單詞"。
然而隨著句子長度的增大,語言模型會遇到如下兩個問題:
- 資料稀疏:長度較大的句子出現頻率較低,導致聯合概率為 0
- 計算代價大:隨著句子中詞語的增多,需要儲存的單詞間的聯合概率值也越多
馬爾可夫過程
馬爾可夫過程(Markov process)是一類隨機過程。它的原始模型馬爾可夫鏈,由俄國數學家A.A.馬爾可夫於1907年提出。該過程具有如下特性:在已知目前狀態的條件下,它未來的演變不依賴於它以往的演變。例如森林中動物頭數的變化構成——馬爾可夫過程。在現實世界中,有很多過程都是馬爾可夫過程,如液體中微粒所作的布朗運動、傳染病受感染的人數、車站的候車人數等,都可視為馬爾可夫過程。
每個狀態的轉移只依賴於之前的 n 個狀態,這個過程被稱為1個 n 階的模型,其中 n 是影響轉移狀態的數目。最簡單的馬爾可夫過程就是一階過程,每一個狀態的轉移只依賴於其之前的那一個狀態,這個也叫作馬爾可夫性質
n 元語言模型
這個"模型的每個狀態都只依賴於之前的狀態"的假設即稱為馬爾科夫假設。這個假設可用來簡化語言模型,我們可以假設每個詞語的出現概率僅依賴於前一個 詞語。此時的語言模型稱為二元語法模型,對應地,假設每個詞語出現的概率僅信賴於前 n 個詞語的模型即n 元語法模型。
語言模型給出瞭如何計算句子出現概率的方法(函式),具體的概率值取決於實際使用到的語料庫。一些常用的語料庫有:
- 《人民日報》語料庫 PKU
- 微軟亞洲研究院語料庫 MSR
- 香港城市大學 CITYU(繁體)
- 臺灣中央研究院 AS(繁體)
語料庫 | 字元數 | 詞語種數 | 總詞頻 | 平均詞長 |
---|---|---|---|---|
PKU | 183萬 | 6萬 | 111萬 | 1.6 |
MSR | 405萬 | 9萬 | 237萬 | 1.7 |
AS | 837萬 | 14萬 | 545萬 | 1.5 |
CITYU | 240萬 | 7萬 | 146萬 | 1.7 |
MSR 在標註一致性、切分粒度上都要優於 PKU 且詞頻數更多,一般採用 MSR 作為分詞語料的首選。
PKU 和 MSRA 的資料集下載地址:http://sighan.cs.uchicago.edu/bakeoff2005/。