1.1 統計語言模型
香農(Claude Shannon)就提出了用數學的辦法處理自然語言。首先成功利用數學方法解決自然語言處理問題的是語音和語言處理大師賈里尼克 (Fred Jelinek)。事實證明,統計語言模型比任何已知的借助某種規則的解決方法都有效。李開復用統計語言模型把 997 詞語音識別的問題簡化成了一個 20 詞的識別問題,實現了有史以來第一次大詞匯量非特定人連續語音的識別。
1.2 中文分詞
最簡單的分詞辦法就是查字典,最早是由北京航天航空大學的梁南元教授提出的。八十年代,哈工大的王曉龍博士把它理論化,發展成最少詞數的分詞理論,即一句話應該分成數量最少的詞串。90年前后,清華大學的郭進博士用統計語言模型成功解決分詞二義性問題,將漢語分詞的錯誤率降低了一個數量級。最好的一種分詞方法應該保證分完詞后這個句子出現的概率最大。我們可以把它看成是一個動態規劃(Dynamic Programming) 的問題,并利用 “維特比”(Viterbi) 算法快速地找到最佳分詞。清華大學孫茂松教授和香港科技大學吳德凱教授進一步完善中文分詞。Google 的葛顯平博士和朱安博士,專門為搜索設計和實現了自己的分詞系統。中文分詞的方法也被應用到英語處理,主要是手寫體識別中。因為在識別手寫體時,單詞之間的空格就不很清楚了。中文分詞方法可以幫助判別英語單詞的邊界。
1.3 隱含馬爾可夫模型在語言處理中的應用
根據應用的不同而又不同的名稱,在語音識別中它被稱為“聲學模型”(Acoustic Model),在機器翻譯中是“翻譯模型” (Translation Model) 而在拼寫校正中是“糾錯模型” (Correction Model)。八十年代李開復博士堅持采用隱含馬爾可夫模型的框架, 成功地開發了世界上第一個大詞匯量連續語音識別系統 Sphinx。
1.4 怎樣度量信息
1948 年,香農提出了“信息熵”。變量的不確定性越大,熵也就越大。是壓縮文件的三倍。這兩個數量的差距,在信息論中稱作“冗余度”(redundancy)。不同語言的冗余度差別很大,而漢語在所有語言中冗余度是相對小的。這和人們普遍的認識“漢語是最簡潔的語言”是一致的。
1.5?布爾代數和搜索引擎的索引
1938 年香農在他的碩士論文中指出用布爾代數來實現開關電路.最簡單索引的結構是用一個很長的二進制數表示一個關鍵字是否出現在每篇文獻中。不管索引如何復雜,查找的基本操作仍然是布爾運算。布爾運算把邏輯和數學聯系起來了。它的最大好處是容易實現,速度快,這對于海量的信息查找是至關重要的。它的不足是只能給出是與否的判斷,而不能給出量化的度量。
1.6 圖論和網絡爬蟲
自動下載互聯網所有的網頁要用到圖論中的遍歷(Traverse) 算法。世界上第一個網絡爬蟲是由麻省理工學院 (MIT)的學生馬休.格雷(Matthew Gray)在 1993 年寫成的。在網絡爬蟲中,我們使用一個稱為“哈希表”(Hash?Table)的列表而不是一個記事本紀錄網頁是否下載過的信息。
1.7?信息論在信息處理中的應用
賈里尼克從信息熵出發,定義了一個稱為語言模型復雜度(Perplexity)的概念,直接衡量語言模型的好壞。信息論中僅次于熵的另外兩個重要的概念是 ? “互信息”(Mutual Information) (這種方法最初是由吉爾(Gale),丘奇(Church)和雅讓斯基(Yarowsky)提出的)和“相對熵”(Kullback-LeiblerDivergence)(是以它的兩個提出者庫爾貝克和萊伯勒的名字命名的。相對熵用來衡量兩個正函數是否相似,對于兩個完全相同的函數,它們的相對熵等于零)。科弗教授是當今最權威的信息論專家。
1.8?賈里尼克的故事和現代語言處理
語言學大師賈格布森 Roman Jakobson(他提出了著名的通信六功能)他的團隊:解決最大熵迭代算法的達拉皮垂(Della Pietra)孿生兄弟,BCJR 算法的另外兩個共同提出者庫克(Cocke)和拉維夫(Raviv),以及第一個提出機器翻譯統計模型的布朗??茖W家們把語音識別問題當作人工智能問題和模式匹配問題。而賈里尼克把它當成通信問題,并用兩個隱含馬爾可夫模型(聲學模型和語言模型)把語音識別概括得清清楚楚。賈里尼克和波爾,庫克以及拉維夫對人類的另一大貢獻是?BCJR 算法,這是今天數字通信中應用的最廣的兩個算法之一(另一個是維特比算法)。每年夏天,賈里尼克邀請世界上 20-30 名頂級的科學家和學生到 CLSP(約翰霍普金斯大學) 一起工作,使得 CLSP 成為世界上語音和語言處理的中心之一。
1.9?如何確定網頁和查詢的相關性
我們把這個商稱為“關鍵詞的頻率”,或者“單文本詞匯頻率”(Term Frequency)詞“的”站了總詞頻的 80% 以上,而它對確定網頁的主題幾乎沒有用。我們稱這種詞叫“應刪除詞”(Stopwords)在信息檢索中,使用最多的權重是“逆文本頻率指數” (Inverse?document frequency 縮寫為IDF),它的公式為log(D/Dw)其中D是全部網頁數。TF/IDF(term frequency/inverse document frequency)?的概念被公認為信息檢索中最重要的發明。其實 IDF 的概念就是一個特定條件下、關鍵詞的概率分布的交叉熵
1.10 有限狀態機和地址識別
地址的識別和分析是本地搜索必不可少的技術,盡管有許多識別和分析地址的方法,最有效的是有限狀態機。使用有限狀態機識別地址,關鍵要解決兩個問題,即通過一些有效的地址建立狀態機,以及給定一個有限狀態機后,地址字串的匹配算法。希望有一個能進行模糊匹配、并給出一個字串為正確地址的可能性。于是提出了基于概率的有限狀態機,它和離散的馬爾可夫鏈基本上等效。
1.13. 數學之美系列十三 — 信息指紋及其應用
產生信息指紋的關鍵算法是偽隨機數產生器算法(prng)。最早的 prng 算法是由計算機之父馮諾伊曼提出來的?,F在常用的 MersenneTwister 算法要好得多。SHA1 以前被認為是沒有漏洞的,現在已經被中國的王小云教授證明存在漏洞。
1.14. 數學之美系列十四 — 談談數學模型的重要性
1. 一個正確的數學模型應當在形式上是簡單的。(托勒密的模型顯然太復雜。)2. 一個正確的模型在它開始的時候可能還不如一個精雕細琢過的錯誤的模型來的準確,但是,如果我們認定大方向是對的,就應該堅持下去。(日心說開始并沒有地心說準確。)3. 大量準確的數據對研發很重要。4. 正確的模型也可能受噪音干擾,而顯得不準確;這時我們不應該用一種湊合的修正方法來彌補它,而是要找到噪音的根源,這也許能通往重大發現。在網絡搜索的研發中,我們在前面提到的單文本詞頻/逆文本頻率指數(TF/IDF) 和網頁排名(page rank)都相當于是網絡搜索中的“橢圓模型”,它們都很簡單易懂。
1.15 繁與簡 自然語言處理的幾位精英
柯林斯的博士論文堪稱是自然語言處理領域的范文。它像一本優秀的小說,把所有事情的來龍去脈介紹的清清楚楚,對于任何有一點計算機和自然語言處理知識的人,都可以輕而易舉地讀懂他復雜的方法。布萊爾的成名作是基于變換規則的機器學習方法 (transformation rule based?machine learning)第一步,我們把每個拼音對應的漢字中最常見的找出來作為第一遍變換的結果,當然結果有不少錯誤。比如,“常識”可能被轉換成“長識”;第二步,可以說是“去偽存真”,我們用計算機根據上下文,列舉所有的同音字替換的規則,比如,如果 chang 被標識成“長”,但是后面的漢字是“識”,則將“長”改成“?!保坏谌剑瑧摼褪恰叭ゴ秩【?,將所有的規則用到事先標識好的語料中,挑出有用的,刪掉無用的。然后重復二三步,直到找不到有用的為止。
1.16. 數學之美系列十六(上)—不要把所有的雞蛋放在一個籃子里-談談最大熵模型
“最大熵”就是要保留全部的不確定性,將風險降到最小。最大熵原理指出,當我們需要對一個隨機事件的概率分布進行預測時,我們的預測應當滿足全部已知的條件,而對未知的情況不要做任何主觀假設。不做主觀假設這點很重要。)在這種情況下,概率分布最均勻,預測的風險最小。因為這時概率分布的信息熵最大,所以人們稱這種模型叫“最大熵模型”。信息論最高獎香農獎得主希薩(Csiszar)證明,對任何一組不自相矛盾的信息,這個最大熵模型不僅存在,而且是唯一的。而且它們都有同一個非常簡單的形式 -- 指數函數。最大熵模型在形式上是最漂亮的統計模型,而在實現上是最復雜的模型之一。最原始的最大熵模型的訓練方法是一種稱為通用迭代算法GIS(generalized iterative scaling) 的迭代 算法。
GIS 的原理并不復雜,大致可以概括為以下幾個步驟:1. 假定第零次迭代的初始模型為等概率的均勻分布。2. 用第 N 次迭代的模型來估算每種信息特征在訓練數據中的分布,如果超過了實際的,就把相應的模型參數變小;否則,將它們便大。3. 重復步驟 2 直到收斂。信息處理的很多數學手段,包括隱含馬爾可夫模型、子波變換、貝葉斯網絡等等,在華爾街多有直接的應用。
1.19. 數學之美系列十八 — 矩陣運算和文本處理中的分類問題分類的關鍵是計算相關性。
Google 中國的張智威博士和幾個中國的工程師及實習生已經實現了奇異值分解的并行算法,我認為這是 Google 中國對世界的一個貢獻。
1.22. 數學之美系列二十一 — 布隆過濾器(Bloom?Filter)
布隆過濾器只需要哈希表 1/8 到 1/4 的大小就能解決同樣的問題。
GIS算法 IIS算法 維特比算法 Baum-Welch算法 EM算法