自然語言處理:讀書筆記

最近老王所閱讀,思索和coding的一個大頭就是非常著名的自然語言處理(NLP)問題。這是我的讀書筆記。我的習慣一般是,只要看書,肯定會寫筆記。不一定一邊讀書一邊寫。但一定要寫。我讀書不寫筆記,就感覺跟吃飯沒有吃肉一樣。我過去非常喜歡用那種大厚筆記本抄筆記,寫筆記。可能是因為以前讀物理的緣故。用LaTex輸入複雜的公式並不是一件非常簡單的事情。最近也慢慢開始用上了電腦寫筆記。我順便,就把自己的讀書筆記同步到這裡吧!希望對大家有所裨益。

提起NLP,熟悉的朋友都知道所謂「機器學習三大件:NLP,CV和音頻識別。」這三大件雖然都是屬於,人工智慧與機器學習的一部分(其實本質上就是人工智慧與機器學習演算法,目前應用最為成功的三大領域),但是目前,分別都已經長成了參天大樹,自己分別構成了一個屬於自己的新領域。因此,你可以在就業市場上看到,除了機器學習工程師以外,還有NLP工程師,CV工程師等等這些崗位。當然了,其待遇也是非常具有市場競爭力的。

其中,NLP,也是目前一個高速成長,高速發展的科學與工程。NLP,natural language processing,通俗的講,就是用計算機演算法來處理以及生成人類所用的語言(比如英語,漢語,德語,阿拉伯語等等)。一般來說,「語言」可以分為兩種。一種被稱為自然語言(Natural language,NL)。這種往往指的就是我們平時說話,寫作,溝通和交流所用的語言。比如漢語,英語,德語,阿拉伯語,吐火羅語,梵語,察合台語(維吾爾語和烏茲別克語的前身。曾經是中亞地區最為通用的語言。然而在1950年左右徹底消亡),Ket語,Yugh語和Yug語(後面三種是葉尼塞語系的三種語言。這也被認為是目前留存的,和古代匈奴語最為接近的語言)。另外一種被稱為形式語言,Formal language。Formal language是什麼呢,就是用數學,或者計算機可以精確處理的語言。這裡頭有兩種最為典型的案例。第一個是任何計算機編程語言。第二個則是各類數學,理論物理,物理化學,理論經濟,計算心理學,金融學,etc的證明和推導。

那麼我們從這裡就可以看出,所謂NLP,最本質的理解就是,用形式語言去處理自然語言。當然了,這裡面是有一個非常致命的漏洞的。自然語言非常便於人類去理解。為什麼呢?因為自然語言往往有大量基於常識(common sense)和一詞多意(Ambiguity)來理解的部分。而這些東西如果要用形式語言來處理,會變得極其艱難(我的老師翟成祥先生稱這種東西為「Killer」)。我們舉兩個例子:

  1. 他最近已經不再吸煙了(這就是一個可以根據常識來推導的地方。我們可以根據常識知道,他,以前是吸煙的。但是,目前,這種東西在NLP里會比較難處理。尤其是在語料庫非常大,需要用到大量「常識」來處理的時候,往往會遭遇許多自相矛盾的地方)。
  2. The man saw the boy with a telescope. 這就涉及到一個斷句的問題了。是,the boy with a telescope,還是那個男人,用望遠鏡看見了那個男孩。這就是所謂的Ambiguity. 我們都知道假如我們人類遇到這種情況肯定會考慮,上下文來分析。但是計算機,目前,做不了這件事。

這兩種問題就是目前NLP演算法最難以解決的兩個問題。其實這也在很大程度上,限制了NLP的使用。也就是說,我個人認為,NLP並不能完全替代人類秘書,或者文書的工作。人恐怕在相當長的時間裡還是辦公室工作的核心。

NLP作為一個問題,在目前其實並不太需要語言學的方法來參與其中。NLP科學家可以說,都是集體diss語言學家的。從目前的發展情況來看,NLP更多的是統計學(shallow NLP),機器學習(deep NLP),深度學習(deep NLP)的field。甚至有NLP方面的學者認為自己每開除一個語言學家,NLP的準確率就會提升一個百分點。當然了,我認為基於語法和規則做NLP分析,在以後未必不是一個方法。就好比歷史上對於光,到底是波還是粒子的那個幾百年的爭論。在100年前認為光是波的是絕對壓倒性的觀點。當然了,隨著後來一些技術上的發展,用粒子的思想處理光,也逐漸被很多人所接受。「風物長宜放眼量嘛。」

我接下來想談NLP的幾個核心問題。第一個為什麼基於語法的分析是不可行的(目前)。第二個是NLP,從淺(shallow)到深(deep)的四個維度:lexical analysis,syntactic analysis,pragmatic analysis以及semantic analysis的問題。當然。這也就牽扯出了第三個問題:NLP的兩大方法:基於統計學(處理shallow NLP問題,一般準確率比較高,目前也相對通用)和基於機器學習,深度學習的deep NLP問題。這種準確率是相當低的。而且很多時候往往很容易做出一些讓人哭笑不得的結果。但是,這種東西在更大程度上也更接近人腦的思維方式。畢竟人工智慧和機器學習,本質上也就是用數學,計算機來模擬和複製人類神經系統的一部分功能嘛。

先寫到這,我去看書。回頭更新。


推薦閱讀:

再薅谷歌羊毛:用谷歌GPU免費訓練你的機器學習模型
ROC和CMC曲線的理解
【用Sklearn進行機器學習】第四篇 - 深入監督學習:隨機森林
機器學習演算法實踐—K-Means演算法與圖像分割

TAG:機器學習 | 自然語言處理 |