李彥峰
(蘭州大學(xué) 信息科學(xué)與工程學(xué)院, 蘭州 730000)
自然語言處理就是利用電子計(jì)算機(jī)為工具對(duì)人類特有的書面和口頭形式的自然語言的信息進(jìn)行各種類型處理和加工的技術(shù)。這種技術(shù)因?yàn)檫\(yùn)用環(huán)境和發(fā)展?jié)摿薮?,已?jīng)成為一門專門的邊緣性交叉學(xué)科,涉及到語言學(xué)、計(jì)算機(jī)科學(xué)以及數(shù)學(xué)等。自然語言處理的目的在于建立各種自然語言處理系統(tǒng),包括機(jī)器翻譯系統(tǒng)、自然語言理解系統(tǒng)、自動(dòng)檢索系統(tǒng)、文字自動(dòng)識(shí)別系統(tǒng)、數(shù)據(jù)庫系統(tǒng)等。
自然語言是人腦的高級(jí)功能之一,也是人類區(qū)別于其他動(dòng)物的重要標(biāo)志。人類可以借助于自然語言交流思想,在人際交往及社會(huì)組成中發(fā)揮了巨大作用。另外,人類還借助于自然語言進(jìn)行思維活動(dòng),認(rèn)識(shí)事物的本質(zhì)和規(guī)律。所謂“腦海中的聲音”,意味著人類無法脫離一個(gè)表達(dá)性質(zhì)的工具來進(jìn)行思考,每次人類進(jìn)行思考的時(shí)候,其實(shí)是相當(dāng)于自己和自己進(jìn)行著對(duì)話??梢哉f,離開了自然語言,人類社會(huì)和科學(xué)技術(shù)的發(fā)展不可能如此井然有序地進(jìn)行。
自計(jì)算機(jī)誕生以來,人類與計(jì)算機(jī)交互只能通過編程語言編寫的代碼來實(shí)現(xiàn),如使用basic,pascal,C,lisp等計(jì)算機(jī)程序設(shè)計(jì)語言。對(duì)于計(jì)算機(jī)來說,它只能根據(jù)二進(jìn)制的指令來做出不同的行為反應(yīng),而程序設(shè)計(jì)者則往往在這個(gè)過程中起到了翻譯的功能,即將在自然語言表述下的功能需求,用程序設(shè)計(jì)語言表述,再由特定的編譯轉(zhuǎn)化為機(jī)器可以理解的二進(jìn)制指令。計(jì)算機(jī)能夠做我們想要完成的事情,但是它并不真正理解我們的語言。從這個(gè)意義上來說,如果想要讓計(jì)算機(jī)足夠智能,讓計(jì)算機(jī)能夠直接理解我們的命令顯然是非常重要的,而在這其中,自然語言的處理即是人與計(jì)算機(jī)溝通的橋梁。
要解釋自然語言處理中遇到的困難,可以先從程序設(shè)計(jì)語言和自然語言的區(qū)別談起:為什么計(jì)算機(jī)可以處理程序設(shè)計(jì)語言編寫的代碼,而不能理解人類的自然語言?使用程序設(shè)計(jì)語言來編寫代碼,本質(zhì)上就是使用該語言提供的元結(jié)構(gòu)進(jìn)行組織搭建,創(chuàng)建新的模型。所謂的元結(jié)構(gòu),也就是程序設(shè)計(jì)語言中不可分割的基本指令集。程序設(shè)計(jì)者可以用這些指令集進(jìn)行復(fù)雜的組合實(shí)現(xiàn)想要的功能。程序設(shè)計(jì)必須是邏輯非常嚴(yán)謹(jǐn)?shù)模识@些元結(jié)構(gòu)在設(shè)計(jì)之初,就有著固定且嚴(yán)密的邏輯意義,而且這些元結(jié)構(gòu)的數(shù)量都是有限的。
人類平時(shí)使用的自然語言與之最大的區(qū)別就在于邏輯性和有限性。因?yàn)樽匀徽Z言并非是由某個(gè)機(jī)構(gòu)組織進(jìn)行設(shè)計(jì)的,它是在日常生活使用中不斷變化的,正因?yàn)槿绱?,任何一門擁有生命力的自然語言,它的詞匯總是不斷增長(zhǎng),隨著社會(huì)的不斷變化,舊有的詞匯也會(huì)出現(xiàn)一詞多義或詞義變化的現(xiàn)象。例如,在伊麗莎白時(shí)期,中古英語正過渡為早期現(xiàn)代英語,英語的語法和詞匯變化都非常明顯,文藝復(fù)興導(dǎo)致當(dāng)時(shí)的英語增加了10,000到12,000個(gè)新的詞匯。數(shù)據(jù)的大規(guī)模增長(zhǎng)增加了自然語言處理的難度,相比于可能僅僅只有幾百個(gè)元結(jié)構(gòu)的程序設(shè)計(jì)語言,自然語言處理的難度是顯而易見的。然而這還僅僅是詞匯方面的問題,更復(fù)雜的問題在于,自然語言并非是邏輯嚴(yán)謹(jǐn)?shù)?,海量的詞匯可以通過同樣海量的語法規(guī)范來進(jìn)行組合——甚至同樣的一句話,在不同語境下也可能會(huì)有不同的意義。海量的元結(jié)構(gòu)以及難以分析的語法,對(duì)計(jì)算機(jī)的自然語言識(shí)別提出了巨大的挑戰(zhàn)。
為了解決這個(gè)問題,以往的科學(xué)家普遍認(rèn)為,為了讓計(jì)算機(jī)能夠理解我們的語言,必須讓計(jì)算機(jī)先擁有類似于人類的智能,而計(jì)算機(jī)理解自然語言的方式,也應(yīng)該是與人類理解自然語言的方式是相似的。受到傳統(tǒng)語言學(xué)的影響,當(dāng)時(shí)的普遍做法是分析語句和獲取語義。首先把詞匯的含義做成映射關(guān)系,然后通過語法規(guī)則進(jìn)行分析。在這之前,人們必須手動(dòng)地對(duì)語法規(guī)則進(jìn)行歸納整理,然后把相應(yīng)的規(guī)則以計(jì)算機(jī)能夠理解的方式輸入進(jìn)去。然而在實(shí)際操作中,科學(xué)家們發(fā)現(xiàn),人們都能夠輕易理解的一些句子卻蘊(yùn)含了大量的語法規(guī)則,統(tǒng)計(jì)下來,語法規(guī)則的數(shù)量至少也能達(dá)到幾萬條。[2]有時(shí)候?yàn)榱艘粋€(gè)句子,甚至還需要單獨(dú)定義一個(gè)語法規(guī)則,這樣復(fù)雜的語法規(guī)則系統(tǒng)顯然無法承擔(dān)自然語言識(shí)別的重任。歸納語法的目的是為了達(dá)到一通百通的效果,但是當(dāng)工具的復(fù)雜度已經(jīng)接近于原本問題的復(fù)雜度,那么它就失去了它的價(jià)值。這種方式更像是強(qiáng)行歸納出來的一個(gè)拙劣的系統(tǒng),人們根本無法從中發(fā)現(xiàn)自然語言的規(guī)律。而對(duì)于那些已經(jīng)被定義出來的規(guī)則,人們普遍認(rèn)為這些語法規(guī)則令人難以理解。從根本上來說,這是因?yàn)樽匀徽Z言都是在使用中產(chǎn)生的,而非由規(guī)則所定義的,人們妄圖逆流而上,可卻不知道這所謂的規(guī)則是否真的是存在。其次,這樣的語法規(guī)則即使能夠被全部地找到,也難以被計(jì)算機(jī)所使用。
另外,語法和詞義的分析,仍然不能解決自然語言中的上下文相關(guān)的特性,即所謂的語境。在使用程序設(shè)計(jì)語言的時(shí)候,因?yàn)檎Z法的邏輯足夠嚴(yán)密,而且設(shè)計(jì)過程就是設(shè)計(jì)者把思想轉(zhuǎn)換為程序能夠理解的語句,這些特征都使得程序設(shè)計(jì)語言可以被計(jì)算機(jī)理解。而對(duì)于自然語言來說,除了上文提到的問題之外,還在于自然語言的上下文相關(guān)的問題。因?yàn)樽匀徽Z言的語句都是為了人與人之間能夠方便交流,并不考慮計(jì)算機(jī)能否理解的問題。所以它的語句并非邏輯嚴(yán)密,而且通常還需要非常感性地推測(cè)在這個(gè)語境下這個(gè)句子的含義,有時(shí)候甚至在說一句話的時(shí)候,其中還包含了人類社會(huì)約定俗成的一些常識(shí)性或者經(jīng)驗(yàn)性問題。[1]
例如:“幫忙拿一下桌子上的那本書”。
如果按照文法進(jìn)行分析,顯然不知道到底是誰幫誰拿一本書,即不知道主體和客體。然而類似于此的句子卻經(jīng)常在自然語言中出現(xiàn),人類在使用的時(shí)候當(dāng)然可以根據(jù)上下文知道這句話是對(duì)誰說的,也能推測(cè)出這里應(yīng)該是幫“我”拿一本書。
類似于例子中的一些隱藏信息都不會(huì)在文中具體體現(xiàn),因?yàn)槿藗冊(cè)诳吹竭@些文字的時(shí)候總能聯(lián)想到他具體要說的是什么,如果非要把這些隱藏信息加上去,例如:“請(qǐng)你幫我拿一下桌子上的那本書”,雖然也正確,但是這樣在實(shí)際應(yīng)用中顯得拖沓。更重要的是,如果因?yàn)閷?shí)現(xiàn)上的難度而限制了句子解析的范圍,顯然與自然語言處理的初衷相去甚遠(yuǎn)——只能理解部分句子的計(jì)算機(jī),與使用程序設(shè)計(jì)語言進(jìn)行窮舉預(yù)設(shè)又有什么區(qū)別呢?
在過往的經(jīng)驗(yàn)中,正因?yàn)槿祟惛行哉J(rèn)識(shí)的能力,使得一向邏輯嚴(yán)密的計(jì)算機(jī)遇到了困境,為了讓計(jì)算機(jī)同樣能夠擁有這樣的感性,人們?cè)噲D用符合邏輯的規(guī)則來定義這種感性認(rèn)識(shí),結(jié)果卻遇到了上文所述的種種困境。下面將介紹在目前的研究中,通過使用人工智能的方法進(jìn)行自然語言識(shí)別的原理。
人工智能亦稱機(jī)器智能,是指由人類制造出來的機(jī)器所表現(xiàn)出來的智能。通常情況下這種智能是指通過計(jì)算機(jī)實(shí)現(xiàn)的智能。顧名思義,人工智能的目標(biāo)就是通過對(duì)于整個(gè)系統(tǒng)的分析和設(shè)計(jì),使得計(jì)算機(jī)能夠表現(xiàn)出類似于人類的能力。目前為止,人工智能并沒有一個(gè)統(tǒng)一的原理。本文將介紹人工智能在自然語言處理中的應(yīng)用,淺析在人工智能領(lǐng)域較為著名的方法,以探究其運(yùn)用于自然語言處理的可能性。
正因?yàn)樵S多人類著名的發(fā)明都是起源于對(duì)自然界已有的結(jié)構(gòu)的模仿,所以在面對(duì)一個(gè)希望實(shí)現(xiàn)大腦智能的系統(tǒng)來說,最好的參照物就是人類自己的大腦??刂普撆c大腦模擬的方法就是希望通過探索神經(jīng)學(xué)、信息理論以及控制論之間的聯(lián)系,在計(jì)算機(jī)中實(shí)現(xiàn)類似于人類神經(jīng)系統(tǒng)的智能系統(tǒng),本質(zhì)上是想通過計(jì)算機(jī)來模擬一個(gè)生物過程。這個(gè)想法是非常自然的,但因?yàn)槿祟惖拇竽X實(shí)在是太復(fù)雜,人類目前為止對(duì)于大腦的探索仍然處于懵懂期。模仿的前提應(yīng)該是充分的了解,人工智能在這個(gè)方向上能夠取得怎樣的成就很大程度上取決于人類對(duì)大腦的研究進(jìn)度。顯然在當(dāng)前這個(gè)時(shí)間點(diǎn),這種人工智能的研究方法不可能取得太好的效果。
正因?yàn)橛?jì)算機(jī)設(shè)計(jì)語言的成功,讓人們開始探索是否能夠把“智能”的實(shí)現(xiàn)用類似于計(jì)算機(jī)設(shè)計(jì)語言的邏輯符號(hào)來進(jìn)行表示,這與本文開頭介紹的傳統(tǒng)的自然語言處理方法的思路類似。但無論是智能的實(shí)現(xiàn)或是自然語言的處理,它們之所以如此吸引人們,正是因?yàn)樽銐驈?fù)雜,且并非邏輯嚴(yán)謹(jǐn)?shù)摹_@些特性天然地就與符號(hào)處理的思路——邏輯定義與表示相沖突。也因此,很多人認(rèn)為符號(hào)系統(tǒng)永遠(yuǎn)不可能模仿人類的認(rèn)知過程,特別是一些相關(guān)于學(xué)習(xí)、感知等非理性部分。
利用復(fù)雜的數(shù)學(xué)工具來解決特定的分置問題,是現(xiàn)在人工智能領(lǐng)域較為熱門的研究方法。其中較為著名的算法即機(jī)器學(xué)習(xí)算法,該算法是一類從數(shù)據(jù)中自動(dòng)分析獲得規(guī)律,并且利用規(guī)律對(duì)位置數(shù)據(jù)進(jìn)行預(yù)測(cè)的算法。可以從機(jī)器學(xué)習(xí)的大體實(shí)現(xiàn)概念看出,機(jī)器學(xué)習(xí)與推斷統(tǒng)計(jì)學(xué)聯(lián)系尤其密切。這種算法并不需要對(duì)大腦進(jìn)行模擬,也不需要由人工來進(jìn)行規(guī)則的整合或者符號(hào)化,僅僅是利用大量的數(shù)據(jù),就可以讓計(jì)算機(jī)自己學(xué)習(xí),大大降低了人工智能相關(guān)問題的開發(fā)難度。通常機(jī)器學(xué)習(xí)課程分為監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)。它們的區(qū)別在于,訓(xùn)練所用的數(shù)據(jù)是否有人工標(biāo)注。監(jiān)督學(xué)習(xí),一般采用的步驟是在數(shù)據(jù)集的基礎(chǔ)上,構(gòu)建一個(gè)評(píng)價(jià)系統(tǒng),被訓(xùn)練的人工智能系統(tǒng)對(duì)于給定的數(shù)據(jù)集做出判斷,再由人工對(duì)于給出的判斷進(jìn)行評(píng)價(jià)。在人類看來較為正確的判斷,給這個(gè)結(jié)果的打分就較高,反之對(duì)于不夠理想的結(jié)果,打分就偏低。通過這樣不斷地反饋調(diào)節(jié),待訓(xùn)練的人工智能系統(tǒng)會(huì)被訓(xùn)練成為一個(gè)傾向于做出評(píng)價(jià)分更高的判斷,實(shí)現(xiàn)了和人類相近的判斷,即通常意義上的“智能”。而對(duì)于非監(jiān)督性的學(xué)習(xí),系統(tǒng)一般采用聚類分析的方法,對(duì)于沒有標(biāo)簽的數(shù)據(jù)集(即數(shù)據(jù)的結(jié)果沒有經(jīng)過任何人工的預(yù)處理),自動(dòng)發(fā)掘其內(nèi)在的關(guān)系。另外,介于兩者之間的強(qiáng)化學(xué)習(xí)方法,雖然沒有精確的標(biāo)簽和結(jié)果,但是會(huì)對(duì)于每一個(gè)可以預(yù)測(cè)的步驟和行為做出反饋,從而強(qiáng)化系統(tǒng)做出較為“智能”的選擇的傾向。
現(xiàn)在人工智能的飛速發(fā)展,主要得益于統(tǒng)計(jì)學(xué)方法及從此誕生的機(jī)器學(xué)習(xí)的思想,而之前的研究方法都或多或少遇到了瓶頸而停止了發(fā)展?,F(xiàn)在,人們通過獲取并輸入海量的數(shù)據(jù),讓計(jì)算機(jī)能夠在這些數(shù)據(jù)集中自己找到其中的規(guī)律。不同于以往的使用邏輯嚴(yán)密的語言告訴計(jì)算機(jī)應(yīng)當(dāng)怎樣做,現(xiàn)在我們所做的只是把基礎(chǔ)的數(shù)據(jù)和正確的答案給計(jì)算機(jī),在中間的過程中為什么計(jì)算機(jī)做出這樣的判斷其實(shí)并不重要。那么這樣的思想,對(duì)自然語言處理有怎樣的啟發(fā)呢?
因?yàn)閲迦斯ぶ悄蹵lphaGo在社會(huì)上產(chǎn)生了巨大的影響,而且圍棋和自然語言處理的復(fù)雜度都是極高,且在研究的歷史上,都曾經(jīng)嘗試過編寫一個(gè)“正確的規(guī)則”,最后都殊途同歸地走向了機(jī)器學(xué)習(xí),故本文將以圍棋人工智能AlphaGo為例,介紹機(jī)器學(xué)習(xí)的大致方法。AlphaGo項(xiàng)目的研究人員中并沒有特別高水平的圍棋選手,如果按照以往的人工智能的思路,研究人員必須要把如何更好地獲勝采用邏輯較為嚴(yán)密的語言編寫為程序,使得AlphaGo在對(duì)局的時(shí)候能夠利用自己超高的運(yùn)算能力在“獲勝技巧”中不斷窮舉運(yùn)算,從而做出最優(yōu)解。這也是以往在象棋等棋牌類游戲中人工智能的思路。[3]然而圍棋之所以有挑戰(zhàn)性,正是因?yàn)閲宓目赡苄杂刑喾N,根本無法依靠窮舉來計(jì)算下幾步可能的結(jié)果,無法進(jìn)行比較,也就無從談起所謂的“最優(yōu)解”了。更何況,研究人員并非什么圍棋大師,也無從編寫能夠戰(zhàn)勝人類圍棋第一人的“獲勝規(guī)則”。而之所以AlphaGo能夠在之后的棋局中戰(zhàn)勝世界圍棋第一人,正是人工智能采取新的機(jī)器學(xué)習(xí)思路的勝利。在構(gòu)建系統(tǒng)的初期,研究人員先給AlphaGo足夠多的棋局?jǐn)?shù)據(jù),AlphaGo利用自己的運(yùn)算能力不斷學(xué)習(xí)。無可否認(rèn)的是,勝利的天平總會(huì)因?yàn)槟承┎僮鞫l(fā)生微小的傾斜,人類不具備從大量數(shù)據(jù)中歸納出細(xì)微規(guī)則的能力,更加無法把他表述給計(jì)算機(jī)。之前的研究方式像是犯了一個(gè)本末倒置的錯(cuò)誤——把計(jì)算機(jī)擅長(zhǎng)的事情交給了人類來做,而讓計(jì)算機(jī)只是作為一個(gè)檢索的傀儡。AlphaGo能夠從海量的棋局中分析出哪些因素和操作對(duì)于自己的勝利更加有利——可能這些復(fù)雜而又微小的規(guī)律都難以用自然語言來表述,但是顯然這些對(duì)于計(jì)算機(jī)來說都比去理解人類表述的拙劣的規(guī)則要更簡(jiǎn)單。
在具體的涉及到自然語言處理時(shí),所謂的學(xué)習(xí)數(shù)據(jù)從棋局變成了語料庫。下面將以一個(gè)簡(jiǎn)單的自然語言問答系統(tǒng)為例,簡(jiǎn)要介紹其中的步驟,以方便從宏觀上簡(jiǎn)單理解其中的原理。
1.數(shù)據(jù)加載。首先,既然是機(jī)器學(xué)習(xí)算法,那么就需要進(jìn)行數(shù)據(jù)加載,而數(shù)據(jù)加載又可以分為兩個(gè)部分:加載語料和預(yù)處理。其中,加載語料可以認(rèn)為是簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)在系統(tǒng)能夠訪問的數(shù)據(jù)庫里,之后數(shù)據(jù)會(huì)從數(shù)據(jù)庫中流向設(shè)計(jì)好的神經(jīng)網(wǎng)絡(luò)模型。而預(yù)處理的目的是為了讓數(shù)據(jù)更規(guī)范,一般而言是把語料組合成輸入需要的格式,從人類的角度把數(shù)據(jù)變得更易于機(jī)器理解,從而增加機(jī)器學(xué)習(xí)的效率。在這個(gè)過程中,不同的預(yù)處理模型可能會(huì)影響到機(jī)器學(xué)習(xí)的效果,這里不再表述。
2.訓(xùn)練過程。機(jī)器學(xué)習(xí)模型一般使用神經(jīng)網(wǎng)絡(luò),輸入序列從左側(cè)進(jìn)入,輸出序列為包含多個(gè)結(jié)果數(shù)值序列。在這個(gè)過程中,研究人員需要設(shè)置超參數(shù)、模型的各項(xiàng)參數(shù),如問題的最大長(zhǎng)度、神經(jīng)元個(gè)數(shù)等,再設(shè)置神經(jīng)網(wǎng)絡(luò)的激活函數(shù)(損失函數(shù)),例如最大似然等思想使得該神經(jīng)網(wǎng)絡(luò)能夠在一定程度上進(jìn)行忽略和模擬。至此,一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)已經(jīng)建成,再往后就是進(jìn)行迭代訓(xùn)練,使數(shù)據(jù)不斷地流向神經(jīng)網(wǎng)絡(luò)模型。
3.觀察效果。因?yàn)槌瑓?shù)即模型的設(shè)置等可能會(huì)有不合理之處,在訓(xùn)練過程中,可以觀察損失函數(shù)和準(zhǔn)確度的變化,根據(jù)這些變化可以幫助優(yōu)化模型,輔助超參數(shù)的設(shè)置。
自然語言處理是計(jì)算機(jī)科學(xué)中的重要課題,但因?yàn)樽匀徽Z言處理巨大的復(fù)雜性,使得以邏輯為基礎(chǔ)的符號(hào)模型化研究方法難以取得較為理想的進(jìn)展。然而,隨著人工智能技術(shù)的發(fā)展,特別是機(jī)器學(xué)習(xí)的運(yùn)用,對(duì)于類似規(guī)則復(fù)雜、非邏輯嚴(yán)謹(jǐn)?shù)膯栴}有了較理想的解決方案。相信隨著人工智能研究的不斷發(fā)展,實(shí)現(xiàn)人類與機(jī)器的無障礙交流也許就在不遠(yuǎn)的將來。
襄陽職業(yè)技術(shù)學(xué)院學(xué)報(bào)2018年4期