跳到主要內容

科技大觀園商標

分類項目
Menu

AI看得懂數學題目嗎?淺談自然語言處理

109/11/05 398

中研院院區開放工作人員帶著小朋友與小學數學解題機器人互動。中研院院區開放工作人員帶著小朋友與小學數學解題機器人互動。

 

有種在地球上存在許久的自然語言,在外國人心中,它的難度直逼天際,光是發音就有「平、上、去、入」等聲調,還有同音字、破音字,更不要說字體繁複,一筆一劃都難以在短時間內學成,它是「中文」,一種有時候連身為華人的我們都可能摸不著頭緒的語言。


而當我們還是小學生時,做數學題目也常常碰到中文理解所造成的瓶頸,有時不是不會算,而是一開始題目就看錯,老師跟學生都欲哭無淚。這同時也是人工智慧最大的難題:了解自然語言。因此,由中央研究院成立的智慧型代理人系統實驗室便提出「讓AI自動解數學題與解釋」的計畫,希望能研究出不只要能解題,還要能解釋的人工智慧。

 

中文理解的困難在哪裡?

 

然而,中文剛好是一種文法寬鬆的語言。斷詞、詞序、標點符號、省略字詞,都可能造成電腦「閱讀障礙」。

 

中文與英文不同,一句話是用好幾個獨立的字組成,因此「斷詞」就變得很重要,例如「一台大冰箱」,電腦可能會沒斷好,以為有「台大」這個詞。或是「椅子幾張才夠?」電腦可能會誤判,以為「張才」是人的名字,這些問題都可能讓電腦不懂語句的意涵。

 

除了斷詞,中文的「詞序」也有很多種排列組合,比如說「衣服該洗了」,也能寫做「該洗衣服了」,而這樣的文法也能套用在好幾種事物上,不單單限制在「洗衣服」,做作業、修電腦、交報告…...,有太多種變化,但電腦若只能了解其中一種詞序,在閱讀上就受到了很大的限制。

 

另外,現代中文語句隨處可加逗號,或省去句號。「蘋果20個,每個10元,分裝成5盒,請問一盒蘋果多少錢?」前面三句可以改寫成「每個10元的蘋果20個分裝成5盒」。又或者「台北哪裡有可以唱卡拉OK的餐廳?要離捷運站近的哦,但也不要太貴。」可以寫成一句「台北哪裡有可以唱卡拉OK、離捷運站近、也不太貴的餐廳?」這個問題對人類非常簡單,因為我們知道「離捷運站近」,「不太貴」都是在描述「餐廳」的,但這樣「分段」的寫作方式,卻容易讓電腦不知道意思到哪裡才結束。

 

中文也經常省略重複的詞,這樣的情況也經常出現在題目裡,讓小學生滿頭問號,比如「1棵蘋果樹會結5顆蘋果,農夫種了3棵,請問會收成幾顆?」這樣「棵」來「顆」去,又把名詞省略,讓很多明明會算數學的小學生,由於常識積累不夠,而敗倒在中文的博大精深之下。

 
機器人解題需模擬人類的聯想能力(圖/Clarisse Croset,Unsplash)機器人解題需模擬人類的聯想能力(圖/Clarisse Croset,Unsplash)
 

人工智慧的聯想力

 

中文裡有這麼多讓小學生痛苦萬分、並讓電腦在分析語句時容易觸發的地雷,那麼,電腦該如何有效率的分析與推理呢?答案就是解題時的「聯想」

 

解數學題時,觸類旁通非常重要,否則只是在背算式。因此可以讓電腦先學會題目A,在解相同架構的題目B時,則利用聯想的能力,讓兩個題目「等同化」。請看以下舉例。

半打球賣48元;
幼稚園有五個小班共有50人;
打字員每20分鐘可以打1120個字。

 

如果我們將數字的部分用A,B代替,就可以更突顯出這三個句子的相似性:

半打球賣48元 (B個球賣A元);
幼稚園有五個小班共有50人 (B個小班有A個人);
打字員每20分鐘可以打1120個字 (B分鐘打A個字)。

 

由於上述事件的名詞不同,對應的動詞也不一樣,但其實稍微對應,就能看出題目之間的共同點。

B個球「賣」A元;
B個小班「有」A個人;
B分鐘「打」A個字。

 

或是更簡單的表達:

單位價格(元/球);
單位人數(人/班);
單位字數(字/分鐘)。

 

如果我們用「單位值」C代表相應的數字,就可以得到 A / B=C。的確,我們看這三題後面的問句,會發現都在問C等於多少,這是最基礎的「推理」。

 

一旦小學生了解這層推理,後面的變化題也就不是件難事了。比如可以變化如下:

打字員每20分鐘可以打1120個字,若連續打字半個小時,可以打幾個字?
 

從「基礎推理」我們可以得知每分鐘可以打1120 / 20=56字。所以,半小時(=30分鐘)可以打 56 x 30 = 1680 字。

 

在解答這個變化題的過程中,我們其實回答了兩個問題:打字員每20分鐘可以打1120個字,每分鐘可以打幾個字?若連續打字半個小時,可以打幾個字?

 

這兩個問題具有邏輯上的連續性,學生會先經過「基礎推理」的步驟,解決第一個問題:「打字員」每分鐘可以打幾個字,再回答第二個問題。而對於較熟練的學生,這個「基礎推理」的步驟已經變成一種「常識」,即使題目沒有問第一個問題也會先作。     

 

那麼,該如何讓電腦動起來呢?首先,我們告訴機器在不同的上下文,用合適的動詞、名詞。其次,對語言熟練的人經常會跳過「基礎推理」的常識部分,所以機器必須自行補足這些漏掉、言而不喻的部分,才能看懂後面的話語。

 
機器解題需補足人類世界的常識 (圖/Jessica Lewis,Unsplash)機器解題需補足人類世界的常識 (圖/Jessica Lewis,Unsplash)
 

就現代而言,人工智慧的發展離這樣的能力還有相當的距離,前述的「在不同的上下文,要用合適的動詞、名詞」,是「聯想」的要件。我們在作文的時候,經常需要參考別人在不同情境下所寫的句子、段落,修改之後納為己用,就是在訓練自己的聯想力。而這種能力對於電腦來說,仍處於困難的階段,但若有朝一日,真的讓電腦「學會」「聯想」,未來電腦理解自然語言的能力必可大幅提升。這部分就是中研院智慧型代理人系統實驗室1現在研究的重點。

 

「常識」本身就是一個日積月累、漫無邊際的學習之旅,因此需要透過大家對機器餵養,才能加快機器對世界的認知。也因此,中研院智慧型代理人系統實驗室設計了一個「集思廣益」的網站2,歡迎大家貢獻己力,替電腦建立一些基礎常識,協助人工智慧發展出更貼近人類的聯想力。

 

參考資料

創用 CC 授權條款 姓名標示─非商業性─禁止改作

本著作係採用 創用 CC 姓名標示─非商業性─禁止改作 3.0 台灣 授權條款 授權.

本授權條款允許使用者重製、散布、傳輸著作,但不得為商業目的之使用,亦不得修改該著作。 使用時必須按照著作人指定的方式表彰其姓名。
閱讀授權標章授權條款法律文字

OPEN
回頂部