Loading AI tools
以通过语音输入文字为例,自然语言处理是用计算机来处理、理解以及运用人类语言。 来自维基百科,自由的百科全书
自然語言處理(英語: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面臨的問題實例:
不少的中文相關笑話即是利用類似結構的中文造句而成,此類笑話通常帶有“中文博大精深”之類的詞彙,敘述多以老外參加考試為背景。例子如下:
“ | 某老外苦學漢語10年,到東方參加漢語考試。試題為「請解釋下列句子」: 阿呆給長官送紅包時,兩個人的對話頗有意思。 長官:「你這是什麼意思?」 阿呆:「沒什麼意思,意思意思。」 長官:「你這就不夠意思了。」 阿呆:「小意思,小意思。」 長官:「你這人真有意思。」 阿呆:「其實也沒有別的意思。」 長官:「那我就不好意思了。」 阿呆:「是我不好意思。」
老外淚流滿面,交白卷回國了。 |
” |
在口語中,詞與詞之間通常是連貫的,而界定字詞邊界通常使用的辦法是取用能讓給定的上下文最為通順且在文法上無誤的一種最佳組合。在書寫上,漢語也沒有詞與詞之間的邊界。
許多字詞不單只有一個意思,因而我們必須選出使句意最為通順的解釋。
自然語言的文法通常是模稜兩可的,針對一個句子通常可能會剖析(Parse)出多棵分析树(Parse Tree),而我們必須要仰賴語意及前後文的資訊才能在其中選擇一棵最為適合的剖析樹。
例如語音處理時遇到外國口音或地方口音,或者在文本的處理中處理拼寫,語法或者光學字元識別(OCR)的錯誤。
句子常常并不只是字面上的意思;例如,“你能把盐递过来吗”,一个好的回答应当是動手把盐递过去;在大多数上下文环境中,“能”将是糟糕的回答,虽说回答“不”或者“太远了我拿不到”也是可以接受的。再者,如果一门课程去年没开设,对于提问“这门课程去年有多少学生没通过?”回答“去年没开这门课”要比回答“没人没通过”好。
第一,传统的基于句法-语义规则的理性主义方法过于复杂,随着语料库建设和语料库语言学的崛起,大规模真实文本的机器学习处理成为自然语言处理的主要选择。
第二,统计数学方法越来越受到重视,自然语言处理中越来越多地使用机器自动学习的方法来获取语言知识。
第三,浅层处理与深层处理并重,统计与规则方法并重,形成混合式的系统。
第四,自然语言处理中越来越重视词汇的作用,出现了强烈的“词汇主义”的倾向。词汇知识库的建造成为了普遍关注的问题。[12]
統計自然語言處理運用了推測學、機率、統計的方法來解決上述,尤其是針對容易高度模糊的長串句子,當套用實際文法進行分析產生出成千上萬筆可能性時所引發之難題。處理這些高度模糊句子所採用消歧的方法通常運用到語料庫(Corpus)以及馬可夫模型(Markov models)。統計自然語言處理的技術主要由同樣自人工智慧下與學習行為相關的子領域:機器學習及資料採掘所演進而成。