自然語言處理
自然語言處理(英語:Natural Language Processing,縮寫作 NLP)是人工智能和語言學領域的分支學科。此領域探討如何處理及運用自然語言;自然語言處理包括多方面和步驟,基本有認知、理解、生成等部分。
自然語言認知和理解是讓電腦把輸入的語言變成有意思的符號和關係,然後根據目的再處理。自然語言生成系統則是把計算機數據轉化為自然語言。
自然語言處理要研製表示語言能力和語言應用的模型, 建立計算框架來實現並完善語言模型,並根據語言模型設計各種實用系統及探討這些系統的評測技術[1]。
歷史
自然語言處理大體是從1950年代開始,雖然更早期也有作為。1950年,圖靈發表論文「計算機器與智能」,提出現在所謂的「圖靈測試」作為判斷智能的條件。
1954年的喬治城-IBM實驗涉及全部自動翻譯超過60句俄文成為英文。研究人員聲稱三到五年之內即可解決機器翻譯的問題。[2]不過實際進展遠低於預期,1966年的ALPAC報告發現十年研究未達預期目標,機器翻譯的研究經費遭到大幅削減。一直到1980年代末期,統計機器翻譯系統發展出來,機器翻譯的研究才得以更上一層樓。
1960年代發展特別成功的NLP系統包括SHRDLU——一個詞彙設限、運作於受限如「積木世界」的一種自然語言系統,以及1964-1966年約瑟夫·維森鮑姆模擬「個人中心治療」而設計的ELIZA——幾乎未運用人類思想和感情的訊息,有時候卻能呈現令人訝異地類似人之間的互動。「病人」提出的問題超出ELIZA 極小的知識範圍之時,可能會得到空泛的回答。例如問題是「我的頭痛」,回答是「為什麼說你頭痛?」
1970年代,程式設計師開始設計「概念本體論」(conceptual ontologies)的程式,將現實世界的資訊,架構成電腦能夠理解的資料。實例有MARGIE、SAM、PAM、TaleSpin、QUALM、Politics以及Plot Unit。許多聊天機械人在這一時期寫成,包括PARRY 、Racter 以及Jabberwacky 。
一直到1980年代,多數自然語言處理系統是以一套複雜、人工訂定的規則為基礎。不過從1980年代末期開始,語言處理引進了機器學習的演算法,NLP產生革新。成因有兩個:運算能力穩定增加(參見摩爾定律);以及喬姆斯基 語言學理論漸漸喪失主導(例如轉換-生成文法)。該理論的架構不傾向於語料庫——機器學習處理語言所用方法的基礎。有些最早期使用的機器學習演算法,例如決策樹,是硬性的、「如果-則」規則組成的系統,類似當時既有的人工訂定的規則。不過詞性標記將隱馬爾可夫模型引入NLP,並且研究日益聚焦於軟性的、以概率做決定的統計模型,基礎是將輸入資料裏每一個特性賦予代表其份量的數值。許多語音識別現今依賴的快取語言模型即是一種統計模型的例子。這種模型通常足以處理非預期的輸入數據,尤其是輸入有錯誤(真實世界的數據總免不了),並且在整合到包含多個子任務的較大系統時,結果比較可靠。
許多早期的成功屬於機器翻譯領域,尤其歸功IBM的研究,漸次發展出更複雜的統計模型。這些系統得以利用加拿大和歐盟現有的語料庫,因為其法律規定政府的會議必須翻譯成所有的官方語言。不過,其他大部分系統必須特別打造自己的語料庫,一直到現在這都是限制其成功的一個主要因素,於是大量的研究致力於從有限的數據更有效地學習。
近來的研究更加聚焦於非監督式學習和半監督學習的演算法。這種演算法,能夠從沒有人工註解理想答案的資料裏學習。大體而言,這種學習比監督學習困難,並且在同量的數據下,通常產生的結果較不準確。不過沒有註解的數據量極巨(包含了萬維網),彌補了較不準確的缺點。
2011年以來,深度學習技巧紛紛出爐[3][4] 在自然語言處理方面獲得最尖端的成果,例如語言模型[5]、語法分析[6][7]等等。2016年,AlphaGo打敗李世石[8];2017年Transformer模型誕生[9];2018年BERT模型推出,提出了預訓練的方法[10]。
用途
在許多情況下,學者們需要通過許多不同的數據庫來確定新的研究方向,以識別研究差距並確定迄今為止尚未研究的領域。檢查所有電子數據庫很麻煩,而且經常會遺漏重要的部分。通過使用網絡抓取和自然語言處理來縮短識別研究差距所需的時間。在Google學術搜尋上索引的出版物的標題, 自然語言處理標記化(Tokenization)從最高頻率到最低頻率對搭配進行排序。因此,自然語言處理標記化(Tokenization)確定了標題中未提及的關鍵字集,並將最初的想法確定為研究空白 [11]。
任務和限制
理論上,NLP是一種很吸引人的人機互動方式。早期的語言處理系統如SHRDLU,當它們處於一個有限的「積木世界」,運用有限的詞彙表對談時,工作得相當好。這使得研究員們對此系統相當樂觀,然而,當把這個系統拓展到充滿了現實世界的含糊與不確定性的環境中時,他們很快喪失了信心。
由於理解(understanding)自然語言,需要關於外在世界的廣泛知識以及運用操作這些知識的能力,自然語言認知,同時也被視為一個人工智能完備(AI-complete)的問題。同時,在自然語言處理中,「理解」的定義也變成一個主要的問題。
實際問題
一些NLP面臨的問題實例:
- 句子「我們把香蕉給猴子,因為(牠們)餓了」和「我們把香蕉給猴子,因為(它們)熟透了」有同樣的結構。但是代詞「它們」在第一句中指的是「猴子」,在第二句中指的是「香蕉」。如果不了解猴子和香蕉的屬性,無法區分。(簡體中文和英文的它/it沒有區分,但在繁體中文裏「牠」和「它」是有區別的,只是代詞在中文裏常常被省略,因此需區別屬性並且標示出來)
不少的中文相關笑話即是利用類似結構的中文造句而成,此類笑話通常帶有「中文博大精深」之類的詞彙,敘述多以老外參加考試為背景。例子如下:
“ | 某老外苦學漢語10年,到東方參加漢語考試。試題為「請解釋下列句子」: 阿呆給長官送紅包時,兩個人的對話頗有意思。 長官:「你這是什麼意思?」 阿呆:「沒什麼意思,意思意思。」 長官:「你這就不夠意思了。」 阿呆:「小意思,小意思。」 長官:「你這人真有意思。」 阿呆:「其實也沒有別的意思。」 長官:「那我就不好意思了。」 阿呆:「是我不好意思。」
老外淚流滿面,交白卷回國了。 |
” |
自然語言處理研究的難點
單詞的邊界界定
在口語中,詞與詞之間通常是連貫的,而界定字詞邊界通常使用的辦法是取用能讓給定的上下文最為通順且在文法上無誤的一種最佳組合。在書寫上,漢語也沒有詞與詞之間的邊界。
詞義的消歧
許多字詞不單只有一個意思,因而我們必須選出使句意最為通順的解釋。
句法的模糊性
自然語言的文法通常是模稜兩可的,針對一個句子通常可能會剖析(Parse)出多棵分析樹(Parse Tree),而我們必須要仰賴語意及前後文的資訊才能在其中選擇一棵最為適合的剖析樹。
有瑕疵的或不規範的輸入
例如語音處理時遇到外國口音或地方口音,或者在文字的處理中處理拼寫,語法或者光學字元識別(OCR)的錯誤。
語言行為與計劃
句子常常並不只是字面上的意思;例如,「你能把鹽遞過來嗎」,一個好的回答應當是動手把鹽遞過去;在大多數上下文環境中,「能」將是糟糕的回答,雖說回答「不」或者「太遠了我拿不到」也是可以接受的。再者,如果一門課程去年沒開設,對於提問「這門課程去年有多少學生沒通過?」回答「去年沒開這門課」要比回答「沒人沒通過」好。
當前自然語言處理研究的發展趨勢
第一,傳統的基於句法-語意規則的理性主義方法過於複雜,隨着語料庫建設和語料庫語言學的崛起,大規模真實文字的機器學習處理成為自然語言處理的主要選擇。
第二,統計數學方法越來越受到重視,自然語言處理中越來越多地使用機器自動學習的方法來取得語言知識。
第三,淺層處理與深層處理並重,統計與規則方法並重,形成混合式的系統。
第四,自然語言處理中越來越重視詞彙的作用,出現了強烈的「詞彙主義」的傾向。詞彙知識庫的建造成為了普遍關注的問題。[12]
統計自然語言處理
統計自然語言處理運用了推測學、概率、統計的方法來解決上述,尤其是針對容易高度模糊的長串句子,當套用實際文法進行分析產生出成千上萬筆可能性時所引發之難題。處理這些高度模糊句子所採用消歧的方法通常運用到語料庫(Corpus)以及馬可夫模型(Markov models)。統計自然語言處理的技術主要由同樣自人工智能下與學習行為相關的子領域:機器學習及資料採掘所演進而成。
主要範疇
- 文字朗讀(Text to speech)
- 語音合成(Speech synthesis)
- 語音識別(Speech recognition)
- 斷詞/分詞(Text segmentation/Word tokenization)
- 中文自動分詞(Chinese word segmentation)
- 語法分析/剖析(Syntactic analysis/Parsing)
- 漢語自動句法分析
- 詞彙標示框架(Lexical Markup Framework)
- n元語法(n-gram)
- 詞嵌入(Word2vec)
- 詞性標註(Part-of-speech tagging)
- 文件分類(Document classification)
- 自然語言生成(Natural language generation)
- 文字分類(Text categorization)
- 資訊檢索(Information retrieval)
- 資訊抽取(Information extraction)
- 文字校對(Text-proofing)
- 問答系統(Question answering)
- 給一句人類語言的問句,決定其答案。 典型問題有特定答案(像是加拿大的首都叫什麼?),但也考慮些開放式問句(像是人生的意義是是甚麼?)
- 將某種人類語言自動翻譯至另一種語言
- 自動摘要(Automatic summarization)
- 產生一段文字的大意,通常用於提供已知領域的文章摘要,例如產生報紙上某篇文章之摘要
參見
參考文獻
- ^ Manaris, Bill. Natural Language Processing: A Human-Computer Interaction Perspective. Advances in Computers. 1998, 47: 1–66. doi:10.1016/S0065-2458(08)60665-8.
- ^ Hutchins, J. The history of machine translation in a nutshell. 2005 [2017-11-13]. (原始內容存檔於2018-06-14).[自述來源]
- ^ Goldberg, Yoav (2016). https://www.jair.org/media/4992/live-4992-9623-jair.pdf (頁面存檔備份,存於互聯網檔案館) A Primer on Neural Network Models for Natural Language Processing. Journal of Artificial Intelligence Research 57 (2016) 345–420
- ^ Ian Goodfellow, Yoshua Bengio and Aaron Courville. http://www.deeplearningbook.org/ (頁面存檔備份,存於互聯網檔案館) Deep Learning]. MIT Press.
- ^ Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, and Yonghui Wu (2016). https://arxiv.org/abs/1602.02410 (頁面存檔備份,存於互聯網檔案館) Exploring the Limits of Language Modeling
- ^ Do Kook Choe and Eugene Charniak (EMNLP 2016). http://www.aclweb.org/website/old_anthology/D/D16/D16-1257.pdf (頁面存檔備份,存於互聯網檔案館) Parsing as Language Modeling
- ^ Vinyals, Oriol, et al. (NIPS2015). https://papers.nips.cc/paper/5635-grammar-as-a-foreign-language.pdf (頁面存檔備份,存於互聯網檔案館)
- ^ DeepMind, Match 1 - Google DeepMind Challenge Match: Lee Sedol vs AlphaGo, 2016-03-08 [2017-03-09], (原始內容存檔於2017-03-29)
- ^ Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N.; Kaiser, Lukasz; Polosukhin, Illia. Attention Is All You Need. 2017. doi:10.48550/arXiv.1706.03762.
- ^ Devlin, Jacob; Chang, Ming-Wei; Lee, Kenton; Toutanova, Kristina. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. 2018. doi:10.48550/arXiv.1810.04805.
- ^ Li(2021)Building Updated Research Agenda by Investigating Papers Indexed on Google Scholar: A Natural Language Processing Approach, Advances in Intelligent Systems and Computing book series, volume 1213, pp 298-305
- ^ 存档副本 (PDF). [2016-01-03]. (原始內容 (PDF)存檔於2021-05-04).
延伸閱讀
- Bates, M. Models of natural language understanding. Proceedings of the National Academy of Sciences of the United States of America. 1995, 92 (22): 9977–9982. doi:10.1073/pnas.92.22.9977.
- Steven Bird, Ewan Klein, and Edward Loper (2009). Natural Language Processing with Python. O'Reilly Media. ISBN 978-0-596-51649-9.
- Daniel Jurafsky and James H. Martin (2008). Speech and Language Processing, 2nd edition. Pearson Prentice Hall. ISBN 978-0-13-187321-6.
- Christopher D. Manning, Prabhakar Raghavan, and Hinrich Schütze (2008). Introduction to Information Retrieval. Cambridge University Press. ISBN 978-0-521-86571-5. Official html and pdf versions available without charge. (頁面存檔備份,存於互聯網檔案館)
- Christopher D. Manning and Hinrich Schütze (1999). Foundations of Statistical Natural Language Processing. The MIT Press. ISBN 978-0-262-13360-9.
- David M. W. Powers and Christopher C. R. Turk (1989). Machine Learning of Natural Language. Springer-Verlag. ISBN 978-0-387-19557-5.
外部連結
- 人類語言技術當前發展情況概覽
- 哥倫比亞大學自然語言處理研究組 (頁面存檔備份,存於互聯網檔案館)
- 卡內基梅隆大學語言技術研究院 (頁面存檔備份,存於互聯網檔案館)
- 斯坦福大學自然語言處理研究小組 (頁面存檔備份,存於互聯網檔案館)
- 中文自然語言處理開放平臺 (頁面存檔備份,存於互聯網檔案館)
- ACL(美國電腦語言學協會)提供的相關雜誌以及研討會的論文
- GATE: a Java Library for Text Engineering (頁面存檔備份,存於互聯網檔案館)
- LTP:語言技術平台(簡體中文)
- Python程式語言的自然語言處理工具包教程 (頁面存檔備份,存於互聯網檔案館)
- fastNLP (頁面存檔備份,存於互聯網檔案館)