「自然語言處理」是什麼
讓電腦擁有理解人類語言的能力,就是自然語言處理 (Natural Language Processing,縮寫 NLP)。然而,人和人之間就會誤會彼此的語言了,電腦要如何理解語義?中研院資訊科學研究所的馬偉雲助研究員說明:以中文來說,最基本的,要先教電腦學會「斷詞」和「理解詞的意思」。
如何理解一種語言?
小時候學習中文,會背誦課文詞彙的注釋,在作業簿練習這個詞的寫法。到了國中時期學英文,面對像天書般的英文文章,會把不懂的單字圈起來,拿出字典查這個字的意思。為什麼這樣做?
因為,詞彙是語言的最小單位。
然而,中文有一個特殊現象,就是「詞」和「詞」之間沒有邊界,整句串起來像條鎖鏈,不像英文有空格將每個字斷開。所以,若要理解一篇中文文章,必須先學會斷詞,而要學會斷詞,必須先知道這是一個詞、以及這個詞的意思。否則可能會產生這種令人「難過」的情況:
那麼,問題來了,如果聰明的人類都會誤解複雜的語言,那麼只懂 011000110 的電腦有可能學會斷詞、甚至理解同一個詞在不同上下文的意思嗎?其實,這就是自然語言處理 (Natural Language Processing) 的研究目標。本文專訪中研院中文詞知識庫小組計畫主持人馬偉雲,聊聊自然語言處理究竟是什麼。
Q:「自然語言」有多自然?
馬:我們先來了解「自然語言」的定義,與「程式語言」有什麼差別。
簡要來說,程式語言是人類為了與計算機溝通,而設計的人工語言;而自然語言的自然,是相對於「人工」語言的「自然」,換句話說,自然語言是人們溝通時自然地發展出來的語言。「自然語言處理」的目標,就在於讓電腦理解、或是運用人類語言。
Q:如何教電腦學會一種語言?
馬:若要讓電腦理解人類的語言,以中文來說,分成兩步驟:
第一步是斷詞、理解詞;第二步則是分析句子,包含語法及語義的自動解析。
自然語言處理透過這兩個步驟,將複雜的語言轉化為電腦容易處理、計算的形式。早期是人工訂定規則,現在則是讓機器自己學習。
早期的方式是基於一套詞彙資料庫,用程式語言寫好人工訂定的規則,讓電腦依指令做出反應。但這種人工方式不可能包含所有語言的歧異性,例如,當同樣的詞在不同上下文產生不同意思,就會和原本的人工規則相互牴觸。
1980 年代末期,自然語言處理引進機器學習 (Machine Learning) 的演算法,不再用程式語言命令電腦所有規則,而是建立演算法模型,讓電腦學會從訓練的資料中,尋找資料所含的特定模式和趨勢。我們實驗室——中研院的「中文詞知識庫小組」團隊——就是利用機器學習的演算法,讓電腦學會從訓練的資料中,自動歸納出語言的特性。