文章轉自清華大學劉知遠老師的github:https://github.com/zibuyu/research_tao/blob/master/00_nlp.md
真的是很好的文章,看完后感覺很全身舒暢了那種感覺hhh,相信大家看完可以補充到很多知識!
什么是自然語言處理
簡單地說,自然語言處理(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”也都有肉的意思,那么這兩句話在意義上為什么會南轅北轍呢?關鍵的問題就在于在翻譯的程序中,機器翻譯系統對于英語成語并無了解,僅僅是從字面上進行翻譯,結果自然失之毫厘,差之千里,
從上面的兩個方面的主要困難,我們看到自然語言處理這個難題的根源就是人類語言的復雜性和語言描述的外部世界的復雜性,人類語言承擔著人類表達情感、交流思想、傳播知識等重要功能,因此需要具備強大的靈活性和表達能力,而理解語言所需要的知識又是無止境的,那么目前人們是如何嘗試進行自然語言處理的呢?
自然語言處理的發展趨勢
目前,人們主要通過兩種思路來進行自然語言處理,一種是基于規則的理性主義,另外一種是基于統計的經驗主義,理性主義方法認為,人類語言主要是由語言規則來產生和描述的,因此只要能夠用適當的形式將人類語言規則表示出來,就能夠理解人類語言,并實作語言之間的翻譯等各種自然語言處理任務,而經驗主義方法則認為,從語言資料中獲取語言統計知識,有效建立語言的統計模型,因此只要能夠有足夠多的用于統計的語言資料,就能夠理解人類語言,然而,當面對現實世界充滿模糊與不確定性時,這兩種方法都面臨著各自無法解決的問題,例如,人類語言雖然有一定的規則,但是在真實使用中往往伴隨大量的噪音和不規范性,理性主義方法的一大弱點就是魯棒性差,只要與規則稍有偏離便無法處理,而對于經驗主義方法而言,又不能無限地獲取語言資料進行統計學習,因此也不能夠完美地理解人類語言,二十世紀八十年代以來的趨勢就是,基于語言規則的理性主義方法不斷受到質疑,大規模語言資料處理成為目前和未來一段時期內自然語言處理的主要研究目標,統計學習方法越來越受到重視,自然語言處理中越來越多地使用機器自動學習的方法來獲取語言知識,
邁進21世紀,我們已經進入了以互聯網為主要標志的海量資訊時代,這些海量資訊大部分是以自然語言表示的,一方面,海量資訊也為計算機學習人類語言提供了更多的“素材”,另一方面,這也為自然語言處理提供了更加寬廣的應用舞臺,例如,作為自然語言處理的重要應用,搜索引擎逐漸成為人們獲取資訊的重要工具,涌現出以百度、谷歌等為代表的搜索引擎巨頭;機器翻譯也從實驗室走入尋常百姓家,谷歌、百度等公司都提供了基于海量網路資料的機器翻譯和輔助翻譯工具;基于自然語言處理的中文(輸入法如搜狗、微軟、谷歌等輸入法)成為計算機用戶的必備工具;帶有語音識別的計算機和手機也正大行其道,協助用戶更有效地作業學習,總之,隨著互聯網的普及和海量資訊的涌現,自然語言處理正在人們的日常生活中扮演著越來越重要的作用,然而,面向海量的大規模文本資料,人們面臨的一個嚴峻事實是,如何有效利用海量資訊,人們逐漸意識到,單純依靠統計方法已經無法快速有效地從海量資料中學習語言知識,
隨著2013年word2vec技術的發表,以神經網路為基礎的深度學習技術開始在自然語言處理中廣泛使用,深度學習的分布式語意表示和多層網路架構具有強大的擬合和學習能力,顯著提升了自然語言處理各種任務的性能,成為現階段自然語言處理的主要技術方案,
深度學習是純的資料驅動技術方案,需要從大規模標注資料中學習特定任務相關的復雜模式,一方面,有些學者開始探索面向大規模無標注文本資料的深度學習模型,如ELMo,GPT、BERT等,可以看做從大規模資料中學習知識的極致探索;另一方面,現有深度學習技術尚未考慮人類積累的豐富知識(包括語言知識、世界知識、常識知識、認知知識、行業知識等),如果將深度學習看做經驗主義方法,將符號知識看做理性主義方法,那么如何充分發揮基于規則的理性主義方法和基于統計的經驗主義方法的優勢,兩者互相補充,更好、更快地進行自然語言處理,仍然是我們需要探索的重要課題,
自然語言處理作為一個年齡尚不足一個世紀的新興學科,正在進行著突飛猛進的發展,回顧自然語言處理的發展歷程,并不是一帆風順,有過低谷,也有過高潮,而現在我們正面臨著新的挑戰和機遇,例如,目前網路搜索引擎基本上還停留在關鍵詞匹配,缺乏深層次的自然語言處理和理解,語音識別、文字識別、問答系統、機器翻譯等目前也只能達到很基本的水平,路漫漫其修遠兮,自然語言處理作為一個高度交叉的新興學科,不論是探究自然本質還是付諸實際應用,在將來必定會有令人期待的驚喜和例外快速的發展,
與計算機視覺相比,自然語言處理有什么特點
從影像和語言兩種模態來看,對文本處理技術的大規模應用要早于計算機視覺,將影像和語言中的處理物件做一個不太嚴謹的對應,如下圖所示,大體上像素類似于語言中的字母;影像中的物件類似于語言中的單詞/概念;影像中物件組成的場景類似于語言中的句子表達的語意;視頻則類似于語言中的篇章(文章),
在這種類比下看,NLP/IR在單詞層面的處理要比CV中的影像識別簡單得多,只需要做一下tokenization、lemmatization、stemming等(中文復雜一些需要額外做自動分詞),就可以利用關鍵詞匹配完成很多任務,例如資訊檢索、文本分類、拼寫糾錯、情感分析、關鍵詞提取等等,實際上已經得到非常廣泛的應用,如搜索引擎、拼音輸入法、新聞分類、閱讀推薦等,
而由于影像中物件的復雜性和多樣性,僅在物件識別層面,甚至特定的人臉識別,還有很多技術挑戰,只不過是近年來,由于深度學習對非結構資料的強大表示和學習能力,開始讓物件識別走向了實用化,
而進入到更高層面,例如面向影像的場景圖構建,面向文本的句法語意分析,都需要對復雜語境(背景關系)的精準而強大的建模能力,所以我感覺,并非NLP發展緩慢,只是兩個領域的發展節奏和階段不同,進入高層任務后,兩個領域都將面臨共同的關鍵挑戰,都可以歸結為復雜語境下的多物件(影像中是不同物件,文本中是不同概念)的語意組合問題,
中文NLP vs 英文NLP在理論、處理上有什么相同和不同, 尤其是中文 NLP有什么獨特之處
從實用文本分析技術而言,如果只做主題聚類、文本分類等任務的話,中英文最大差別就在于,中文需要做自動分詞,相關工具包已經很多了,包括題主提到的Jieba,還有哈工大的LTP,北理工的ICTCLAS,還有我們組研制的THULAC,當然,在文本分類時,到底是選詞還是Ngram作為特征,在SVM+BOW時代曾是個問題,進入到深度學習時代,就直接可以用基于字的神經網路模型了,
從NLP研究角度而言,中英文在詞性標注、句法分析等任務上頗有差異,主要體現在英語有明顯的屈折變化(單復數、時態等)而漢語缺少這些屈折變化,亦即有學者總結的“漢語重義合,英語重形合”,所以,英語里一個詞被標為動詞還是名詞,沒有太多爭議;漢語里一個詞應該被標為動詞還是名詞,例如“熱愛學習”、“勞動光榮”中的“學習”、“勞動”如果按照英文語法規范應當標注為名詞,著名語言學家沈家煊先生就曾提出“漢語動詞和名詞不分立”的理論,在句法分析層面漢語也有一些自己的特點,具體需要請教專業的語言學家解答了,
中英文相關分析任務的錯誤率問題,之所以在一些任務上中文分析性能顯著低于英文,除了中文缺少屈者變化、有更多自由度從而提升了分析難度的原因外,中文標注資源相對較少、標注質量相對較低也是關鍵原因之一,語言資源標注既需要語言學家和計算機學者的通力合作,需要花費大量精力和時間,在國內環境下太費力不討好了,希望未來會有改觀,
從更廣闊的語言研究角度而言,中英由于各自承載了兩種截然不同的人類群體的文化資訊,所以在更深層的文化內涵會有更明顯的分野,例如兩種語言的詞匯聯想網路、隱喻風格等,可能會有更大的不同,也許在NLP技術日漸成熟之后,我們可以透過語言更加定量地分析兩種不同文化的差異,
參考文獻
- 張鈸. 自然語言處理的計算模型. 中文資訊學報, 2007, 21(3):3-7.
- 馮志偉. 《統計自然語言處理》序言. 1版. 北京: 清華大學出版社, 2008.
- 孫茂松. 語言計算:資訊科學技術中長期發展的戰略制高點. 語言文字應用, 2005, 3:38-40.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/285819.html
標籤:其他
上一篇:NLP文本分類
下一篇:AI入門與專案實戰(基礎概念)
