如何向文科同學科普自然語言處理(NLP)?
有文科的同學對NLP的概念和思想很感興趣,應該如何向他們科普當前NLP的主要思想和前沿方法?
前幾年曾經馬少平老師的引薦,為某科普圖書寫過一篇短文介紹自然語言處理。如果只是介紹NLP的概念、任務和挑戰,應該可以參考這篇小文。原文如下,僅供參考。
自然語言處理
Natural Language Processing
一、什麼是自然語言處理
簡單地說,自然語言處理(Natural Language Processing,簡稱NLP)就是用計算機來處理、理解以及運用人類語言(如中文、英文等),它屬於人工智慧的一個分支,是計算機科學與語言學的交叉學科,又常被稱為計算語言學。由於自然語言是人類區別於其他動物的根本標誌。沒有語言,人類的思維也就無從談起,所以自然語言處理體現了人工智慧的最高任務與境界,也就是說,只有當計算機具備了處理自然語言的能力時,機器才算實現了真正的智能。
從研究內容來看,自然語言處理包括語法分析、語義分析、篇章理解等。從應用角度來看,自然語言處理具有廣泛的應用前景。特別是在信息時代,自然語言處理的應用包羅萬象,例如:機器翻譯、手寫體和印刷體字元識別、語音識別及文語轉換、信息檢索、信息抽取與過濾、文本分類與聚類、輿情分析和觀點挖掘等,它涉及與語言處理相關的數據挖掘、機器學習、知識獲取、知識工程、人工智慧研究和與語言計算相關的語言學研究等。
值得一提的是,自然語言處理的興起與機器翻譯這一具體任務有著密切聯繫。機器翻譯指的是利用計算機自動地將一種自然語言翻譯為另外一種自然語言。例如自動將英文「I like Beijing Tiananmen Square」翻譯為「我愛北京天安門」,或者反過來將「我愛北京天安門」翻譯為「I like Beijing Tiananmen Square」。由於人工進行翻譯需要訓練有素的雙語專家,翻譯工作非常耗時耗力。更不用說需要翻譯一些專業領域文獻時,還需要翻譯者了解該領域的基本知識。世界上有超過幾千種語言,而僅聯合國的工作語言就有六種之多。如果能夠通過機器翻譯準確地進行語言間的翻譯,將大大提高人類溝通和了解的效率。
《聖經》里有一個故事說巴比倫人想建造一座塔直通天堂。建塔的人都說著同一種語言,心意相通、齊心協力。上帝看到人類竟然敢做這種事情,就讓他們的語言變得不一樣。因為人們聽不懂對方在講什麼,於是大家整天吵吵鬧鬧,無法繼續建塔。後來人們把這座塔叫作巴別塔,而「巴別」的意思就是「分歧」。雖然巴別塔停建了,但一個夢想卻始終縈繞在人們心中:人類什麼時候才能擁有相通的語言,重建巴別塔呢?機器翻譯被視為「重建巴別塔」的偉大創舉。假如能夠實現不同語言之間的機器翻譯,我們就可以理解世界上任何人說的話,與他們進行交流和溝通,再也不必為相互不能理解而困擾。
事實上,「人工智慧」被作為一個研究問題正式提出來的時候,創始人把計算機國際象棋和機器翻譯作為兩個標誌性的任務,認為只要國際象棋系統能夠打敗人類世界冠軍,機器翻譯系統達到人類翻譯水平,就可以宣告人工智慧的勝利。四十年後的1997年,IBM公司的深藍超級計算機已經能夠打敗國際象棋世界冠軍卡斯帕羅夫。而機器翻譯到現在仍無法與人類翻譯水平相比,從此可以看出自然語言處理有多麼困難!
自然語言處理興起於美國。第二次世界大戰之後,二十世紀五十年代,當電子計算機還在襁褓之中時,利用計算機處理人類語言的想法就已經出現。當時,美國希望能夠利用計算機將大量俄語材料自動翻譯成英語,以窺探蘇聯科技的最新發展。研究者從破譯軍事密碼中得到啟示,認為不同的語言只不過是對「同一語義」的不同編碼而已,從而想當然地認為可以採用解碼技術像破譯密碼一樣「破譯」這些語言。
1954年1月7日,美國喬治敦大學和IBM公司合作實驗成功地將超過60句俄語自動翻譯成英語。雖然當時的這個機器翻譯系統非常簡單,僅僅包含6個語法規則和250個詞,但由於媒體的廣泛報道,紛紛認為這是一個巨大的進步,導致美國政府備受鼓舞,加大了對自然語言處理研究的投資。實驗完成者也當即自信地撰文稱,在三到五年之內就能夠完全解決從一種語言到另一種語言的自動翻譯問題。他們認為只要制定好各種翻譯規則,通過大量規則的堆砌就能夠完美地實現語言間的自動翻譯。
然而,事實是理解人類語言遠比破譯密碼要複雜得多,因此研究進展非常緩慢。1966年的一份研究報告總結髮現,經過十年之久的研究,結果遠遠未能達到預期,因此支持資金急劇下降,使自然語言處理(特別是機器翻譯)的研究陷入長達二十年的低潮。直到二十世紀八十年代,隨著電子計算機的計算能力的飛速提高和製造成本的大幅下降,研究者又開始重新關注自然語言處理這個極富挑戰的研究領域。三十年滄海桑田,此時研究者已經認識到簡單的語言規則的堆砌無法實現對人類語言的真正理解。研究發現,通過對大量的文本數據的自動學習和統計,能夠更好地解決自然語言處理問題,如語言的自動翻譯。這一思想被稱為自然語言處理的統計學習模型,至今方興未艾。
那麼,自然語言處理到底存在哪些主要困難或挑戰,吸引那麼多研究者幾十年如一日孜孜不倦地探索解決之道呢?
二、自然語言處理的主要困難
自然語言處理的困難可以羅列出來很多,不過關鍵在於消除歧義問題,如詞法分析、句法分析、語義分析等過程中存在的歧義問題,簡稱為消歧。而正確的消歧需要大量的知識,包括語言學知識(如詞法、句法、語義、上下文等)和世界知識(與語言無關)。這帶來自然語言處理的兩個主要困難。
首先,語言中充滿了大量的歧義,這主要體現在詞法、句法及語義三個層次上。歧義的產生是由於自然語言所描述的對象――人類活動非常複雜,而語言的辭彙和句法規則又是有限的,這就造成同一種語言形式可能具有多種含義。
例如單詞定界問題是屬於詞法層面的消歧任務。在口語中,詞與詞之間通常是連貫說出來的。在書面語中,中文等語言也沒有詞與詞之間的邊界。由於單詞是承載語義的最小單元,要解決自然語言處理,單詞的邊界界定問題首當其衝。特別是中文文本通常由連續的字序列組成,詞與詞之間缺少天然的分隔符,因此中文信息處理比英文等西方語言多一步工序,即確定詞的邊界,我們稱為「中文自動分詞」任務。通俗的說就是要由計算機在詞與詞之間自動加上分隔符,從而將中文文本切分為獨立的單詞。例如一個句子「今天天氣晴朗」的帶有分隔符的切分文本是「今天|天氣|晴朗」。中文自動分詞處於中文自然語言處理的底層,是公認的中文信息處理的第一道工序,扮演著重要的角色,主要存在新詞發現和歧義切分等問題。我們注意到:正確的單詞切分取決於對文本語義的正確理解,而單詞切分又是理解語言的最初的一道工序。這樣的一個「雞生蛋、蛋生雞」的問題自然成了(中文)自然語言處理的第一條攔路虎。
其他級別的語言單位也存在著各種歧義問題。例如在短語級別上,「進口彩電」可以理解為動賓關係(從國外進口了一批彩電),也可以理解為偏正關係(從國外進口的彩電)。又如在句子級別上,「做手術的是她的父親」可以理解為她父親生病了需要做手術,也可以理解為她父親是醫生,幫別人做手術。總之,同樣一個單詞、短語或者句子有多種可能的理解,表示多種可能的語義。如果不能解決好各級語言單位的歧義問題,我們就無法正確理解語言要表達的意思。
另外一個方面,消除歧義所需要的知識在獲取、表達以及運用上存在困難。由於語言處理的複雜性,合適的語言處理方法和模型難以設計。
例如上下文知識的獲取問題。在試圖理解一句話的時候,即使不存在歧義問題,我們也往往需要考慮上下文的影響。所謂的「上下文」指的是當前所說這句話所處的語言環境,例如說話人所處的環境,或者是這句話的前幾句話或者後幾句話,等等。假如當前這句話中存在指代詞的時候,我們需要通過這句話前面的句子來推斷這個指代詞是指的什麼。我們以「小明欺負小亮,因此我批評了他」為例。在其中的第二句話中的「他」是指代「小明」還是「小亮」呢?要正確理解這句話,我們就要理解上句話「小明欺負小亮」意味著「小明」做得不對,因此第二句中的「他」應當指代的是「小明」。由於上下文對於當前句子的暗示形式是多種多樣的,因此如何考慮上下文影響問題是自然語言處理中的主要困難之一。
再如背景知識問題。 正確理解人類語言還要有足夠的背景知識。舉一個簡單的例子,在機器翻譯研究的初期,人們經常舉一個例子來說明機器翻譯任務的艱巨性。在英語中「The spirit is willing but the flesh is weak.」,意思是「心有餘而力不足」。但是當時的某個機器翻譯系統將這句英文翻譯到俄語,然後再翻譯回英語的時候,卻變成了「The Voltka is strong but the meat is rotten.」,意思是「伏特加酒是濃的,但肉卻腐爛了」。從字面意義上看,「spirit」(烈性酒)與「Voltka」(伏特加)對譯似無問題,而「flesh」和「meat」也都有肉的意思。那麼這兩句話在意義上為什麼會南轅北轍呢?關鍵的問題就在於在翻譯的過程中,機器翻譯系統對於英語成語並無了解,僅僅是從字面上進行翻譯,結果自然失之毫釐,差之千里。
從上面的兩個方面的主要困難,我們看到自然語言處理這個難題的根源就是人類語言的複雜性和語言描述的外部世界的複雜性。人類語言承擔著人類表達情感、交流思想、傳播知識等重要功能,因此需要具備強大的靈活性和表達能力,而理解語言所需要的知識又是無止境的。那麼目前人們是如何嘗試進行自然語言處理的呢?
三、自然語言處理的發展趨勢
目前,人們主要通過兩種思路來進行自然語言處理,一種是基於規則的理性主義,另外一種是基於統計的經驗主義。理性主義方法認為,人類語言主要是由語言規則來產生和描述的,因此只要能夠用適當的形式將人類語言規則表示出來,就能夠理解人類語言,並實現語言之間的翻譯等各種自然語言處理任務。而經驗主義方法則認為,從語言數據中獲取語言統計知識,有效建立語言的統計模型。因此只要能夠有足夠多的用於統計的語言數據,就能夠理解人類語言。然而,當面對現實世界充滿模糊與不確定性時,這兩種方法都面臨著各自無法解決的問題。例如,人類語言雖然有一定的規則,但是在真實使用中往往伴隨大量的噪音和不規範性。理性主義方法的一大弱點就是魯棒性差,只要與規則稍有偏離便無法處理。而對於經驗主義方法而言,又不能無限地獲取語言數據進行統計學習,因此也不能夠完美地理解人類語言。二十世紀八十年代以來的趨勢就是,基於語言規則的理性主義方法不斷受到質疑,大規模語言數據處理成為目前和未來一段時期內自然語言處理的主要研究目標。統計學習方法越來越受到重視,自然語言處理中越來越多地使用機器自動學習的方法來獲取語言知識。
邁進二十一世紀,我們已經進入了以互聯網為主要標誌的海量信息時代,這些海量信息大部分是以自然語言表示的。一方面,海量信息也為計算機學習人類語言提供了更多的「素材」,另一方面,這也為自然語言處理提供了更加寬廣的應用舞台。例如,作為自然語言處理的重要應用,搜索引擎逐漸成為人們獲取信息的重要工具,湧現出以百度、谷歌等為代表的搜索引擎巨頭;機器翻譯也從實驗室走入尋常百姓家,谷歌、百度等公司都提供了基於海量網路數據的機器翻譯和輔助翻譯工具;基於自然語言處理的中文(輸入法如搜狗、微軟、谷歌等輸入法)成為計算機用戶的必備工具;帶有語音識別的計算機和手機也正大行其道,協助用戶更有效地工作學習。總之,隨著互聯網的普及和海量信息的湧現,自然語言處理正在人們的日常生活中扮演著越來越重要的作用。
然而,我們同時面臨著一個嚴峻事實,那就是如何有效利用海量信息已成為制約信息技術發展的一個全局性瓶頸問題。自然語言處理無可避免地成為信息科學技術中長期發展的一個新的戰略制高點。同時,人們逐漸意識到,單純依靠統計方法已經無法快速有效地從海量數據中學習語言知識,只有同時充分發揮基於規則的理性主義方法和基於統計的經驗主義方法的各自優勢,兩者互相補充,才能夠更好、更快地進行自然語言處理。
自然語言處理作為一個年齡尚不足一個世紀的新興學科,正在進行著突飛猛進的發展。回顧自然語言處理的發展歷程,並不是一帆風順,有過低谷,也有過高潮。而現在我們正面臨著新的挑戰和機遇。例如,目前網路搜索引擎基本上還停留在關鍵詞匹配,缺乏深層次的自然語言處理和理解。語音識別、文字識別、問答系統、機器翻譯等目前也只能達到很基本的水平。路漫漫其修遠兮,自然語言處理作為一個高度交叉的新興學科,不論是探究自然本質還是付諸實際應用,在將來必定會有令人期待的驚喜和異常快速的發展。
參考文獻[1] 張鈸. 自然語言處理的計算模型. 中文信息學報, 2007, 21(3):3-7.
[2] 馮志偉. 《統計自然語言處理》序言. 1版. 北京: 清華大學出版社, 2008.
[3] 孫茂松. 語言計算:信息科學技術中長期發展的戰略制高點. 語言文字應用, 2005, 3:38-40.
你問:什麼是自然語言處理?
- 誒,你用過蘋果上的Siri么?
- 就是那個很弱智的對話機器人?
- dei dei dei,自然語言處理就就是干這事的
屢試不爽。文科生中有的做起開發來也是很生猛地,我們有一位主力架構師本科是學營銷的。
個體差異大於群體差異。
我就是文科生,以前學古代漢語,曾對計算語言學非常嚮往。自己借書來看。很傷心看不懂。因為計算語言學好多都是講編程,我是這麼理解。感覺和自己學習的知識搭邊很少。建議能從漢語語言學知識和計算語言學共同交叉的地方講起。多說說漢語語言學能為計算語言學做什麼,這樣一步步說比較好。否則上來就說什麼統計,分詞,分歧之類很難聽懂。因為一般中文系這塊很少說。語言學好多學的還是傳統的古代訓詁。只有新設的應用語言學碩士課程會涉及一些。具體講過多少還要看學校。博主如果想好怎麼和你朋友說請也發我一份。我也想聽。
《數學之美》,雖然不算前沿
還有統計自然語言處理(第2版) (豆瓣),在我書架上吃灰中。。某群里菊苣推薦的綜述類教材。考慮極限情況的話,不可能的,放棄吧!。。。我女朋友是英語教育專業,統計學知識上限是「求平均數」,初中數學考過 0 分, 是真的 0 分.... 她也很感興趣 NLP,但是 光一個 likelihood 就卡死了....
為什麼要歧視文科同學?
那麼,以後學習英語是不是不用老師教,一個軟體就可以解決問題了。學習其他知識也如此。
這學期選了馬老師的課。。。
加我的微信公眾號 「上天海津」就好了,爭取做最好的nlp科普
結合不同task和model講。。。泛泛而談NLP誰聽著都暈。。。
任何事都有內涵和外延。。。內涵是這東西是什麼,可以用定義描述。。。外延是這東西到底指什麼,可以舉例說明。。。
NLP的task的內涵用數學語言可以說明白。。。但是題主所說的文科生大概不懂。。。
若是不用數學語言。。。我覺得是個人都不會懂。。。比如百度百科上那些東西。。。懂的人不會去看。。。不懂的人看了那東西也不會懂。。。
所以多講外延吧。。。舉幾個栗子。。。沒覺得很難懂。。。ngram...pos tagging...ner...context free grammar, etc 我覺得可以從這些開始。。。
先科普概率論。
推薦閱讀:
※想進 Google,Facebook 等公司,校招前一段時間是用來實習還是刷演算法題?
※目前常用的自然語言處理開源項目/開發包有哪些?
※各種機器學習的應用場景分別是什麼?例如,k近鄰,貝葉斯,決策樹,svm,邏輯斯蒂回歸和最大熵模型。
※自然語言處理的學習路線?
※金融市場計算機化的交易程序是如何根據新聞進行自動交易的?目前這種技術的應用廣泛嗎?
TAG:自然語言處理 |