淺談自然語言處理 – 開端
淺談自然語言處理 – 1
作者:李嘉銘
從前有座山,山上有座廟,廟裡有個老和尚和一個小和尚,有一天,老和尚對小和尚說:從前有座山,山上有座廟,廟裡有個老和尚和一個小和尚,有一天,老和尚對小和尚說:從前有座山……
出處:老和尚This is the malt that the rat that the cat that the dog worried killed ate.Victor H. Yngve (1960) 摘自語音與語言處理 – Jurafsky and Martin
自然語言處理簡史 – 開端
1949
1949年,新中國成立的時候,第二次世界大戰已經結束四年了,整個世界還在從戰爭的創傷中漸漸恢復。世界上第一批計算機科學家大多都曾經幫助過盟軍解決密碼學問題,其中包括沃倫·韋弗(Warren Weaver)、艾倫·圖靈(Alan Turing)、以及克勞德·香農(Claude Shannon)。可以說沒有他們的密碼學工作,盟軍很可能就不會取得戰爭最後的勝利,這方面暫且不表。
因為戰爭,第一批的計算機科學家們大多同時是數學、密碼學以及通訊學上的精英,但他們都面臨一個問題:戰爭之後他們沒活兒幹了。當時55歲的沃倫·韋弗決定把自己在戰時獲得的知識用到真正有用的地方去。他受到了翻譯軸心國密碼的啟發,提出:所有人類的語言都是某一種密碼,德語只是用密碼寫成的英語而已。就像他們在二戰中所做的一樣,只要用某種機械破解了該密碼,就可以做到對語言的自動翻譯。他曾經的同事們、數學家們和科學家們紛紛鼓勵他把這個想法發表出去,於是他發表了一份備忘錄,叫做《翻譯》。這篇備忘錄就是自然語言處理方面的第一顆的種子。
美國政府意識到了自然語言處理的潛在影響力,決定出資幫助自然語言處理的研究。美國政府期望能夠在10-20年之內研究出一個能用的翻譯系統。畢竟如果隨便抓一個玩泥巴的兩歲小孩兒都能聽懂人話的話,全世界最好的科學家們以及他們發明出的機器肯定也行。上個世紀40年代到60年代的人們對科學充滿了無限的信心,他們相信著科學曾經並且將來都能給人類社會帶來無限的發展和進步。
ELIZA
過了一些年,在美國政府投入了上千萬美金之後,呈現給他們的自然語言處理的結晶是一個叫ELIZA的聊天軟體。如果懂一些英語的話,你可以點擊這裡試試和它對話。下面是一段示意對話的翻譯(註:我盡量保留了原文中不通順和語感上奇怪的地方):
Person : 男人都一樣。
ELIZA : 哪裡一樣?Person : 他們總會在各種事情上煩我們。ELIZA : 你能舉一個具體的例子么?Person : 呃,我男朋友讓我來這兒。ELIZA : 你男朋友讓你來這兒?Person : 他說我大部分時間都很抑鬱。
ELIZA : 聽到你抑鬱的消息我很難過。Person : 嗯,我不開心。ELIZA : 你認為來這兒會讓你不變得不開心?Person : 我需要一些幫助,只有這點我很確定。ELIZA : 你獲得幫助對你意味著什麼?Person : 也許我能學會試著和我媽相處。ELIZA : 告訴我關於你家庭的事。
如果你玩上五分鐘,你很快就會發現哪裡不太對。ELIZA總在重複說一些話。
ELIZA的工作原理是在給它的輸入中尋找簡單的一些線索和關鍵詞。如果ELIZA看到「一樣」或者「相似」,它的回答會是「哪裡一樣/相似?」。如果它看到「我的{家人}是Y」,它會問:「還有誰在你家裡是Y?」。當它說「嗯」的時候,這代表著它找不到事先編好的關鍵詞,完全不知道你在說啥(這點和人挺像的)。在某種意義上,這個程序是專門為通過圖靈測試設計的。它用不著懂得任何對話里的內容,只要讓人類認為屏幕對面正在和自己聊天的是另一個人類就好。自然語言對於當時的計算機來說太難了,因為說到底計算機一開始的設計初衷是用來計算的,並不是來說話的。
圖靈測試示意圖:
圖靈測試是一種評估機器智能的方法。當人類的評委無法確定回答是出自一個人類還是一個機器的時候,就標誌著那個機器通過了測試。
是什麼讓人類最好的科學家們在面對機器翻譯的時候抓耳撓腮?當他們踏入這個未知領域的時候,他們面對的是兩堵高牆:歧義性以及無限性。如果無法跨過這兩堵牆,計算機對語言的理解就永遠無法與人類比肩。
用戶: 給我叫一輛計程車。
人工智慧: 好的。(大聲的叫)一輛計程車~
歧義性
歧義性在語言中無處不在,但同時我們又很少意識到它,直到我們需要和一個機器打交道的時候。中文裡有許多這種例子,比如這個笑話:「某人去化驗科,護士指著前方一牌說:「非本科人員不得入內!「那人大怒,罵道:『我就化驗個尿,還要本科文憑!!!』」。笑話的笑點是本科的兩種意思,也是自然語言處理中常常需要面對的語義歧義問題。
我們再來看兩句句子,「南京市長江大橋獲得連任。」又如「糧食不賣給八路軍」這句句子,到底是「糧食 不賣給 八路軍」還是「糧食 不賣 給八路軍」。這類就是英文里不常出現的分詞方面的歧義,因為英文詞和詞之間有空格分開。
最後,如果你懂一些英語,你可以試著打開你最喜歡的翻譯軟體或者翻譯網站,然後輸入下面一句話:「I can』t believe my 15-year-old son grew another foot last summer.」 我至今為止沒見過一個翻譯對的軟體。(如果你找到一個對的的話,請務必聯繫我,我很感興趣。原本的中文意思是:「我不敢相信我15歲的兒子上個夏天又長高了一英尺」,foot這個詞既有英尺又有腳的意思。)
無限性
我把第二個障礙稱作無限性,用來代表任何一個人類語言的高度複雜性。和歧義性不同的是,歧義是指從各種說得通的解釋中選擇一種最有可能符合作者本意的,而無限性更加像是大海撈針:從成千上萬種錯誤的解釋中找出為數不多的說得通的。
假設我們手上有一句句子包含有15個字,每個字有3種意思,那光這一句就已經有315(大約1400萬)種可能性了。相比之下,1960年的IBM 7090價值290萬美元,每秒可進行10萬浮點運算。粗略的估計下,用這樣的機器處理一句句子需要2分鐘到1個小時。
雪上加霜的是,句子很多時候不止15個字,甚至能無限長。一個很好的例子就是我在這篇文章最開始引用的:「從前有座山,山上有座廟,廟裡有個老和尚和一個小和尚,有一天,老和尚對小和尚說:從前有座山,山上有座廟,廟裡有個老和尚和一個小和尚,有一天,老和尚對小和尚說:從前有座山……」。理論上只要你不停地往一句句子上加從句,它能變得無限長,當然現實中很少有人真的這麼做。
自然語言處理的寒冬
這兩堵高牆(歧義性以及無限性)即使現在也屹立在所有自然語言處理研究者的面前,它們長長的陰影籠罩著整個自然語言處理學界。在1966年,自動語言處理研究會(the Automatic Language Processing Advisory Committee (Alpac))「發表了一份關於機器翻譯的報告,總結說數年的研究沒有帶來有用的結果。」(翻譯自Machine Translation』s Past and Future)。美國政府因此決定停止一切對於自然語言處理的資金投入。那是自然語言處理的寒冬。
事情是什麼時候、怎麼樣變得好起來的?欲知後事如何,請看下回分解。謝謝您的閱讀。
引用
我參考並引用了以下文章、書籍、以及網站:
Speech and Language Processing by Daniel Jurafsky & James H. Martin
Portland University ECE 478/578/678 slides
Introduction to Computational Linguistics and Natural Language Processing by Mark Johnson
Natural language processing: a historical review by Karen Sparck Jones
2. Natural Language Processing (NLP) - Tees
Machine Translation』s Past and Future
從幽默到歧義句——一點語言學分析
語境歧義引發的幽默笑話及歧義產生、消除、初探等
我將來會在這個列表的基礎上新增其他的引用源。
圖片來源:
Turing Test
WWII Cryptography Enigma machine
推薦閱讀:
※詳解梯度下降法的三種形式BGD、SGD以及MBGD
※Deep Learning 最優化方法之AdaGrad
※隱馬爾科夫模型(HMM)一前向與後向演算法
※TensorFlow入門