計算的語言、言語的算計

                                    Shou-de Lin

涂林(Alan Turing 1912-1954),人稱人工智慧之父,曾經有一個預言、一個夢想。

西元1950年,涂林發表了一篇論文意欲探討一個嚴肅的問題:「電腦能不能自己思考?」論文中,他提出了一個不斷被討論至今的測驗,稱之為涂林試驗。在涂林試驗裡共有三方個體,一是裁判,一是人類,另一個則是號稱擁有智慧的電腦。裁判在終端機的一端分別與人類及電腦利用打字交談,但是並不知道哪一個終端機連到哪一個個體。他的任務正是要經由交談的內容來區別人與電腦。涂林認為,若有一個電腦程式能夠讓裁判誤以為它是人類,這樣的程式就能稱之為有智慧。他更預言,到西元兩千年時,人工智慧程式將可能通過涂林試驗。

西元兩千年到了也過了,不僅嘗試挑戰涂林試驗的系統從來沒有成功過,今日的學界更普遍認為這是個短期間無法實現的夢想。最大的原因是要通過涂林試驗,電腦不僅要懂得語言架構、擁有基本常識、能做邏輯推理,要能模擬人類特有的情感特質(如喜怒哀樂與幽默感),還要瞭解社會人心的價值系統,以及能夠自我學習。上述每個特質以目前的技術皆可在某種程度上單獨達成,但如何將其整合仍是個未解之謎,所需的資源也遠超過現今電腦記憶體和計算速度的上限。

如果涂林在21世紀復生,可能會有種夢想碎裂的心痛吧。但是,一份夢想的破滅也許是另一份夢想的開始:涂林試驗算是個濫觴,依始開啟了人們心中把電腦與語言做連結的企盼。自此之後,就不斷有人力及資源投入這方面的研究,稱之為「計算語言學」或「自然語言處理」。

            計算語言,乍聽之下似乎有些不搭。語言是人類獨有的溝通工具,不像物理或數學等建構在嚴謹的理論與公式之上,又要如何計算呢?而計算語言又有甚麼用途呢?

一言以蔽之,計算語言學是介於基礎科學與應用科學之間的一門學問,它整合了語言學、統計學,以及資訊科學中的人工智慧學,希望能利用電腦善於計算的功能來瞭解、處理以及應用語言。與其他的應用科學一般,它的目的是非常實用且明確的:希冀能結合電腦和語言,做出真正普及並能造福人群的工具。儘管對很多人而言計算語言學是陌生的學科,但是近十年在研究成果上的大躍進,已然使它的應用成為21世紀人類生活不可或缺的一環。臻於成熟並被廣泛使用的技術有網路搜尋引擎、語音辨識系統、手寫辨識系統、自動作文批改系統;漸漸成形並預計在不久的將來就能夠普及的有多國語言自動翻譯系統、文件摘要自動產生系統、自動回答問題系統等。這些應用乍看之下南轅北轍,但是現今主流的核心技術都利用到一個稱為「語言模型」(language model) 的重要觀念。

2005年薩默語言學院(SIL International的報告書指出:世界上目前存在的語言有六千多種,其中有近百種廣泛為世界百分之八十以上的人口使用。這些語言看似繁雜,但可不是隨隨便便把一些符號聲音拼湊在一起就能成形。語言之所以能成為人類溝通的工具,主要在於其背後繁簡不一的規則與架構。例如「順序」在語言的使用上就是一個重要的原則,所有的語言在某種程度上都必須遵循一種順序規律。如同中文文法中,主詞通常比動詞先行,受詞則在最後;在日文反而是動詞出現於最後。又如英文單字的音節中,為了發聲容易的考量,子音之後接一個母音的機會比接另一個子音高。而除了語法上的順序外,某些詞彙在語意上特有的相關性也反映在其出現於文章的位置與頻率上。就好像在一篇文章中若出現曹雪芹這個名字,則同篇文章中也出現「紅樓夢」的機會就可能會比一般文章高得多。

由於這些規則的存在,使計算語言學家想到:如果電腦能夠找出並記錄這些語言中所帶有的規律,就有機會對語言做更進一步的處理。而各式各樣語言模型的產生,正是為了運用計算與統計原理來模擬進而利用這些藏於語言背後的規則。

拜網路普及之賜,在21世紀想要蒐集成千上萬的文件資料並非難事。有了這些文本,首先可對各單字或單詞在文件中出現的頻率進行統計,這個統計數值被稱為「單位語言模型」(unigram language model)。事實上絕大多數的語言其單位語言模型都符合極夫定律(Zipf’s law),這個定律告訴我們多數單字在文件中出現的機率其實是極低的,只有相對少數才會有很高的出現率,這樣不平均的分佈也成為找尋語言規則的有利線索。

單位語言模型最廣為人知的應用是在「資訊擷取」(information retrieval)上。這不禁令人想起倪匡小說中那個略帶神秘的「資料供應社」:需要資料的人可經由此機構以昂貴的代價換得想要的資訊。倪匡先生當初可能沒想到,這樣的資訊供應機制到了21世紀已然成為人人唾手可得的服務,並且有個一點也不神秘的別稱──搜尋引擎。

        搜尋引擎是計算語言學中相較之下較為簡單的問題,也因如此,它成為發展最完善、應用也最普及的領域。使用者只要輸入關鍵字,它就能自動找回相關的文件。搜尋引擎的基本觀念不難,簡言之便是利用單位語言模型的觀念來「計算」關鍵字與文件的關連度:先針對每份文件計算出其與關鍵字相關的單位語言模型,再傳回關鍵字出現頻率最多的文件就是了。但是這樣的搜尋有個問題,導因於不同的關鍵字重要程度可能不同。例如有人想找出陸羽茶經裡跟茶具相關的文件,可能會同時以「茶經」和「茶具」當成關鍵字來查詢。這就可能產生一種困擾:當兩個關鍵字都出現數次時,是該傳回「茶經」還是「茶具」出現較多的文件?合理的答案是前者的順位應該較高,因為「茶經」是一個比「茶具」來得特殊的名詞,代表性較高。這個例子告訴我們,一個好的搜尋引擎除了利用單位語言模型外,還要能夠自動計算每個關鍵字的代表性,找出的文件才較能符合使用者的期望。而這便要借重Tf-Idfterm frequency-inverse document frequency) 此類的技術。Tf值計算關鍵字出現在某單一文件上的頻率(頻率越高越好);idf值計算關鍵字在各式文件中的分佈頻率(如「茶經」比之「茶具」較不容易出現在各文件中),頻率低的話反而顯示此關鍵字的代表性比較高(一個常常出現在各種文件中的關鍵字是沒有甚麼指標性的)。結合tfidf這兩個計算值,搜尋引擎就能傳回比較符合期望的文件。

        但是光有Tf-Idf還不能解決搜尋引擎所有的問題。網際網路是個開放的空間,每個人都可以放上自己的文件供搜尋引擎搜索,大部分的人(尤其是商業網站或廣告)也都希望自己的網頁能夠被搜尋引擎排在很高的順位,於是很多投機的技巧就產生了。比如在網頁上用跟背景一樣的顏色寫下一千次「茶具」,網路上的閱讀者看不到這些字,但是搜尋引擎看得到,於是就會認為這個網頁似乎跟茶具很有關係,排名也會瞬間提升。可是等到使用者真正點選時,就會發現其實內容不是他想要的。為了避免此類作弊的情形發生,兩位史丹福的研究生佩吉(Larry Page) 和布林(Sergey Brin) 發展了一套名為PageRank的演算法(這套演算法後來成為Google的核心技術之一)。PageRank強調一個好的搜尋引擎除了Tf-Idf之外,還應重視網頁的「名望」(prestige)。它提出網頁的名望應該用民主的方式決定:被愈多其他的網頁所連結,名望也愈高,就像是選舉時獲得高票一般。但是這個投票機制並非一網頁一票的齊頭式平等,而是名望高的網頁有比較大的影響力。換句話說,提升名望的方法就是想辦法讓很多高名望的網頁連結到自己的網頁。因此網頁的連結便有如推薦一般:數個名不見經傳的人的保證,也許不如一個眾所皆知的大人物的推薦信來得有力。

除了上述這些相關度的問題之外,研究人員也著手解決搜尋引擎的其他問題:例如如何在短時間內搜尋數千萬份網頁(可參閱Google鴿子群集系統如何利用大量分散式主機進行平行運算)、如何搜尋所謂的「隱形網頁」、以及蒐集到網頁後如何整合各種不同的資訊等等。

較之搜尋引擎,其他自然語言所處理的問題,舉凡語音辨識、自動翻譯、光學辨識、自動回答問題等就困難得多,所需要的語言模型也更為複雜。除了單位語言模型之外,同樣經由大量文本資料所計算出的「雙位」(bigram)語言模型也被大量運用。雙位語言模型也是一個機率分佈,計算一個字伴隨另一個字出現的機率,例如利用大量的文件或搜尋引擎,可以統計出當我們在文件中看到「光」這個字時,下一個字出現「明」的機會很高(大約是8-12%),而出現「合」的機率就小多了(1-2%)。同理,只要蒐集的資料夠多,我們也可以計算「三位」(某個字出現在兩個已知的字後面的機率)甚至更高位的語言模型。

            那雙位甚至更高位語言模型有甚麼應用價值呢?它們又跟語音辨識、自動翻譯等應用有何關係?這其中牽涉到複雜的統計及最佳化的概念。不過簡單說來,既然語言模型的目的是要記錄語言中的規則性,電腦就可以運用這些計算出來的機率幫助它做出最好的選擇。以一個中翻英的句子為例,假設電腦在翻譯的過程中遭遇到了兩難,不知道英文「I am cold」該翻成「我很冷」或「我是冷」,它可以去查閱中文的雙位語言模型,發現「冷」前面出現「很」的機率比「是」高很多,於是推測前者可能是較好的翻譯。

由於語言模型的概念是要記錄一種伴隨發生的規則,因此它不但能針對相同的語言,也可運用在不同語言之間。例如我們可以在網路上找出許多中英對照的文件,進而算出某些英文字翻譯成某些中文的機率(如good翻譯成「好」的機率遠大於「貨品」的機率),這樣的跨語言模型可以提升自動翻譯的正確率。此外,語言模型的概念也被用於建構「聲波模型」上,如此便可記錄某種波形伴隨另一種波形的機率,進而提升語音辨識率。相似的概念也運用在光學辨識與文件自動批改上。如GMAT留學考試裡作文的批改方式,從前都是由兩位閱卷人的分數平均,近幾年來則改以自然語言處理程式取代其中一位閱卷人。這個自動閱卷系統就是利用語言模型加上一些英文基本文法,配合若干寫好的範本,利用機器學習的計算理論來評判文章的好壞。研究結果顯示新式的托福閱卷法,不僅大幅減少了批改作文的時間及人力,其結果與兩個真人閱卷者相去並不大。

值得一提的是,語言的使用往往是因人、因主題而異的。例如在前述的例子中若我們蒐集的文本都是與植物有關的,那麼「合」出現在「光」之後的機率可能就會提升很多。每個人的談吐和書寫也都有自己的風格,有些人可能偏好使用比較長的句子或某些特別的詞彙。蒐集每個作者的作品後,就可以針對個人建立起不同的語言模型以捕捉其寫作風格的差異性。這樣的觀念也被廣泛應用在典籍考據上,稱之為「計算風格學」。數十年前就曾有人利用此項技術辨別美國獨立建國一些具有爭議的匿名文章;也有計算顯示利用紅樓夢最終四十回所建立的語言模型跟前面章節並無太大的差距,從而假設紅樓夢最終四十回應非他人代筆。

語言的產生是人類演化的重要指標。同樣的,讓電腦能夠瞭解並利用語言,不但是人工智慧研究必須跨越的門檻,也是科技能夠進一步造福人類的關鍵躍進。計算語言學的應用在今日已漸成為人類生活上不可或缺的工具,不僅逐漸吸引跨領域的學者加入研究,若干較為成熟的技術如語言模型者,也被廣泛應用在其他領域如生物資訊與資料探勘上。雖然距離實現涂林的夢想還有一段漫長的路要走,令人欣慰的是,在這段長征的過程中,我們並非一無所獲,有一群人正用心撿拾著這夢想中的吉光片羽,讓它們從科幻小說的想像躍入人類真實的生活中。

「言語值不值得算計?語言又如何計算?」也許下個世代的人們還是會提出一樣的問題。然而,希望在那個時候,一個擁有語音辨識功能、精通多國語言翻譯的智慧型搜尋引擎,已然能夠代替你我,提供他們一個清楚的答案。