自然語言處理(英語:Natural Language Processing縮寫NLP)是人工智能語言學領域的分支學科。此領域探討如何處理及運用自然語言;自然語言處理包括多方面和步驟,基本有認知、理解、生成等部分。

自然語言認知和理解是讓電腦把輸入的語言變成有意思的符號和關係,然後根據目的再處理。自然語言生成系統則是把計算機數據轉化為自然語言。

自然語言處理要研製表示語言能力和語言應用的模型, 建立計算框架來實現並完善語言模型,並根據語言模型設計各種實用系統及探討這些系統的評測技術[1]

歷史

自然語言處理大體是從1950年代開始,雖然更早期也有作為。1950年,圖靈發表論文「計算機器與智能英語Computing Machinery and Intelligence」,提出現在所謂的「圖靈測試」作為判斷智能的條件。

1954年的喬治城-IBM實驗涉及全部自動翻譯英語automatic translation超過60句俄文成為英文。研究人員聲稱三到五年之內即可解決機器翻譯的問題。[2]不過實際進展遠低於預期,1966年的ALPAC報告英語ALPAC report發現十年研究未達預期目標,機器翻譯的研究經費遭到大幅削減。一直到1980年代末期,統計機器翻譯系統發展出來,機器翻譯的研究才得以更上一層樓。

1960年代發展特別成功的NLP系統包括SHRDLU——一個詞彙設限、運作於受限如「積木世界」的一種自然語言系統,以及1964-1966年約瑟夫·維森鮑姆模擬「個人中心治療」而設計的ELIZA——幾乎未運用人類思想和感情的訊息,有時候卻能呈現令人訝異地類似人之間的互動。「病人」提出的問題超出ELIZA 極小的知識範圍之時,可能會得到空泛的回答。例如問題是「我的頭痛」,回答是「為什麼說你頭痛?」

1970年代,程式設計師開始設計「概念本體論」(conceptual ontologies)的程式,將現實世界的資訊,架構成電腦能夠理解的資料。實例有MARGIE、SAM、PAM、TaleSpin、QUALM、Politics以及Plot Unit。許多聊天機械人在這一時期寫成,包括PARRY英語PARRYRacter英語Racter 以及Jabberwacky英語Jabberwacky

一直到1980年代,多數自然語言處理系統是以一套複雜、人工訂定的規則為基礎。不過從1980年代末期開始,語言處理引進了機器學習的演算法,NLP產生革新。成因有兩個:運算能力穩定增加(參見摩爾定律);以及喬姆斯基 語言學理論漸漸喪失主導(例如轉換-生成文法)。該理論的架構不傾向於語料庫——機器學習處理語言所用方法的基礎。有些最早期使用的機器學習演算法,例如決策樹,是硬性的、「如果-則」規則組成的系統,類似當時既有的人工訂定的規則。不過詞性標記英語part-of-speech tagging隱馬爾可夫模型引入NLP,並且研究日益聚焦於軟性的、以概率做決定的統計模型,基礎是將輸入資料裏每一個特性賦予代表其份量的數值。許多語音識別現今依賴的快取語言模型英語cache language model即是一種統計模型的例子。這種模型通常足以處理非預期的輸入數據,尤其是輸入有錯誤(真實世界的數據總免不了),並且在整合到包含多個子任務的較大系統時,結果比較可靠。

許多早期的成功屬於機器翻譯領域,尤其歸功IBM的研究,漸次發展出更複雜的統計模型。這些系統得以利用加拿大和歐盟現有的語料庫,因為其法律規定政府的會議必須翻譯成所有的官方語言。不過,其他大部分系統必須特別打造自己的語料庫,一直到現在這都是限制其成功的一個主要因素,於是大量的研究致力於從有限的數據更有效地學習。

近來的研究更加聚焦於非監督式學習半監督學習英語semi-supervised learning的演算法。這種演算法,能夠從沒有人工註解理想答案的資料裏學習。大體而言,這種學習比監督學習困難,並且在同量的數據下,通常產生的結果較不準確。不過沒有註解的數據量極巨(包含了萬維網),彌補了較不準確的缺點。

2011年以來,深度學習技巧紛紛出爐[3][4] 在自然語言處理方面獲得最尖端的成果,例如語言模型[5]、語法分析[6][7]等等。2016年,AlphaGo打敗李世石[8];2017年Transformer模型誕生[9];2018年BERT模型推出,提出了預訓練的方法[10]

2022年底,隨着ChatGPT大語言模型的推出,自然語言處理的重點從自然語言理解轉向了自然語言生成

用途

在許多情況下,學者們需要通過許多不同的數據庫來確定新的研究方向,以識別研究差距並確定迄今為止尚未研究的領域。檢查所有電子數據庫很麻煩,而且經常會遺漏重要的部分。通過使用網絡抓取和自然語言處理來縮短識別研究差距所需的時間。在Google學術搜尋上索引的出版物的標題, 自然語言處理標記化(Tokenization)從最高頻率到最低頻率對搭配進行排序。因此,自然語言處理標記化(Tokenization)確定了標題中未提及的關鍵字集,並將最初的想法確定為研究空白 [11]

任務和限制

理論上,NLP是一種很吸引人的人機互動方式。早期的語言處理系統如SHRDLU,當它們處於一個有限的「積木世界」,運用有限的詞彙表對談時,工作得相當好。這使得研究員們對此系統相當樂觀,然而,當把這個系統拓展到充滿了現實世界的含糊與不確定性的環境中時,他們很快喪失了信心。

由於理解(understanding)自然語言,需要關於外在世界的廣泛知識以及運用操作這些知識的能力,自然語言認知,同時也被視為一個人工智能完備(AI-complete)的問題。同時,在自然語言處理中,「理解」的定義也變成一個主要的問題。

實際問題

一些NLP面臨的問題實例:

  • 句子「我們把香蕉給猴子,因為(牠們)餓了」和「我們把香蕉給猴子,因為(它們)熟透了」有同樣的結構。但是代詞「它們」在第一句中指的是「猴子」,在第二句中指的是「香蕉」。如果不了解猴子和香蕉的屬性,無法區分。(簡體中文和英文的它/it沒有區分,但在繁體中文裏「牠」和「它」是有區別的,只是代詞在中文裏常常被省略,因此需區別屬性並且標示出來)

不少的中文相關笑話即是利用類似結構的中文造句而成,此類笑話通常帶有「中文博大精深」之類的詞彙,敘述多以老外參加考試為背景。例子如下:

自然語言處理研究的難點

單詞的邊界界定

在口語中,詞與詞之間通常是連貫的,而界定字詞邊界通常使用的辦法是取用能讓給定的上下文最為通順且在文法上無誤的一種最佳組合。在書寫上,漢語也沒有詞與詞之間的邊界。

詞義的消歧

許多字詞不單只有一個意思,因而我們必須選出使句意最為通順的解釋。

句法的模糊性

自然語言文法通常是模稜兩可的,針對一個句子通常可能會剖析Parse)出多棵分析樹Parse Tree),而我們必須要仰賴語意及前後文的資訊才能在其中選擇一棵最為適合的剖析樹。

有瑕疵的或不規範的輸入

例如語音處理時遇到外國口音或地方口音,或者在文字的處理中處理拼寫,語法或者光學字元識別(OCR)的錯誤。

語言行為與計劃

句子常常並不只是字面上的意思;例如,「你能把鹽遞過來嗎」,一個好的回答應當是動手把鹽遞過去;在大多數上下文環境中,「能」將是糟糕的回答,雖說回答「不」或者「太遠了我拿不到」也是可以接受的。再者,如果一門課程去年沒開設,對於提問「這門課程去年有多少學生沒通過?」回答「去年沒開這門課」要比回答「沒人沒通過」好。

當前自然語言處理研究的發展趨勢

第一,傳統的基於句法-語意規則的理性主義方法過於複雜,隨着語料庫建設和語料庫語言學的崛起,大規模真實文字的機器學習處理成為自然語言處理的主要選擇。

第二,統計數學方法越來越受到重視,自然語言處理中越來越多地使用機器自動學習的方法來取得語言知識。

第三,淺層處理與深層處理並重,統計與規則方法並重,形成混合式的系統。

第四,自然語言處理中越來越重視詞彙的作用,出現了強烈的「詞彙主義」的傾向。詞彙知識庫的建造成為了普遍關注的問題。[12]

統計自然語言處理

統計自然語言處理運用了推測學概率統計的方法來解決上述,尤其是針對容易高度模糊的長串句子,當套用實際文法進行分析產生出成千上萬筆可能性時所引發之難題。處理這些高度模糊句子所採用消歧的方法通常運用到語料庫Corpus)以及馬可夫模型Markov models)。統計自然語言處理的技術主要由同樣自人工智能下與學習行為相關的子領域:機器學習資料採掘所演進而成。

主要範疇

給一句人類語言的問句,決定其答案。 典型問題有特定答案(像是加拿大的首都叫什麼?),但也考慮些開放式問句(像是人生的意義是是甚麼?)
將某種人類語言自動翻譯至另一種語言
  • 自動摘要Automatic summarization
產生一段文字的大意,通常用於提供已知領域的文章摘要,例如產生報紙上某篇文章之摘要

參見

參考文獻

延伸閱讀

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.