張 瓏,楊 波,羅琨杰
(天津師范大學計算機與信息工程學院,天津300387)
數(shù)學應用題(math word problem,MWP)是指一種用自然語言描述的簡短問題,問題中通常包含一些數(shù)字信息、變量信息和數(shù)量關系,需要學習者或自動解算器能夠理解問題中涉及的邏輯和規(guī)則,利用數(shù)學知識(算式或方程組)進行定量推理,計算得出一些未知量,并最終得到問題的答案.數(shù)學應用題主要分為兩大類:一類是只需進行簡單計算的算數(shù)應用題,另一類是涉及多個未知量的方程組應用題.算數(shù)應用題相對來說較為簡單,它的輸入是以單詞序列(w1,w2,…,wk)形式展現(xiàn)的數(shù)學描述,問題文本中提供n 個已知數(shù)量q1,q2,…,qn和所需解決的問題,目標是提取與問題相關的已知量,然后將問題映射到用來解決相應問題的算術表達式E 中.方程(組)應用題更具有挑戰(zhàn)性,它需要計算多個未知變量,列出一系列方程,才能得到最終答案.
數(shù)學應用題涉及自然語言理解和人類問題解決的關鍵問題,具有以下典型特征:(1)主體部分僅由幾個句子組成,結構簡單;(2)語法簡單,僅涉及較少的領域知識;(3)一般無法通過執(zhí)行關鍵字或模式匹配來簡單地提取問題的答案;(4)數(shù)學應用題解算器有自己的應用,如個性化試題生成,智能學習助手等[1].因此,數(shù)學應用題常被作為研究自然語言理解和人類問題解決的理想對象.
為數(shù)學應用題設計自動解算器的研究起始于1960 年代[2-5],至今仍受到廣泛關注,相關研究對如何設計有效的自動解算器做了大量工作,然而,當應用于大而多樣的數(shù)據(jù)集時,現(xiàn)有方法仍沒有達到很高的準確率,因為人類可讀的語言和機器可理解的邏輯之間仍然存在很大的語義差距[6],因此,雖然人工智能和機器學習算法取得了巨大進步,但是即使設計高效率的自動解決小學數(shù)學應用題的解算器仍是一項巨大的挑戰(zhàn).從自然語言理解角度來看,數(shù)學應用題解算器是評估人工智能水平的良好試驗平臺,解決大規(guī)模數(shù)學應用題是將人工智能應用到教育領域的重大突破[7].
本文對自動數(shù)學應用題解算器的研究工作進行綜述.首先對現(xiàn)有數(shù)據(jù)集進行總結并分析各數(shù)據(jù)集的特點,以及數(shù)據(jù)生成方法;然后重點對自動解算器模型進行分類分析,包括基于模板匹配的方法[8-13]、基于統(tǒng)計分類的方法[1,14-19]、基于樹或圖的圖形方法[20-23]和基于深度學習框架的方法[24-28],給出各類型解算器的基本思路、需要提取的典型特征及代表性算法;進一步,介紹了自動解算器性能的評估策略;最后指出該領域研究存在的問題和未來潛在的研究方向.
目前用于研究數(shù)學應用題解算器的數(shù)據(jù)集主要來源于人工采集和網站自動爬取等方式.這些數(shù)據(jù)集有些規(guī)模較小、且只涉及單一類型的問題,有些規(guī)模較大、涉及多種類型的問題.本節(jié)介紹常用的典型數(shù)據(jù)集,并對其數(shù)據(jù)規(guī)模、數(shù)據(jù)來源、涉及的運算種類、問題類型、相關研究等信息進行歸納.
(1)AI2[14].包含395 個單步或多步數(shù)學應用題,只涉及加法和減法運算,每個問題都包含多個變量,并有可能包含與解決方案無關的變量.
(2)IL[20].包含562 個單步數(shù)學應用題,每個問題中都包含無關變量,只涉及加減乘除4 種基本運算.
(3)CC[20]. 包含從commoncoresheets.com 獲取的600 個多步數(shù)學應用題,分為6 種類型:加后減、減后加、加乘混合、加除混合、減乘混合和減除混合,每種類型包含100 個問題,每個問題都不包含無關變量.
(4)Alg514[10].包含從Algebra.com 獲取的514 個線性代數(shù)問題,只涉及4 種基本運算.
(5)DRAW-1K[29].包含從Algebra.com 抓取的12000個線性代數(shù)問題,每個問題都是單變量問題,只涉及4 種基本運算.
(6)Dolphin18K[8].包含從Yahoo 網站的數(shù)學學科中自動提取的18 000 個帶注釋的數(shù)學應用題,包含線性和非線性問題,只涉及4 種基本運算.
(7)Math23K[24].包含從一些在線教育網站上搜索得到的23 161 個中文數(shù)學應用題,只涉及單變量問題,只涉及4 種基本運算.
此外,還有些數(shù)據(jù)集利用以上數(shù)據(jù)集或其子集進行組合,形成新的數(shù)據(jù)集.本文將這些數(shù)據(jù)集的相關信息總結歸納,具體見表1.
表1 數(shù)學應用題數(shù)據(jù)集Tab.1 Math word problem datasets
數(shù)據(jù)生成是自動數(shù)學應用題解算器的重要研究內容之一.傳統(tǒng)的生成數(shù)學應用題的方法主要依靠人工設計或學習網站爬取,這種方式費時費力,因此,一個有效的自動化數(shù)學應用題生成器是必要的.
文獻[34]提出一種個性化生成數(shù)學應用題的方法,能夠根據(jù)學生喜好自動生成數(shù)學應用題.該方法使用以一階邏輯表示事實和規(guī)則的應答集編程生成數(shù)學應用題,以滿足包含數(shù)學概念和語意連貫的要求.文獻[35]利用表達式樹的概念構建二維導引合成算法自動生成數(shù)學應用題,能有效地合成真實、多樣和可配置的數(shù)學應用題.該方法首先使用量綱單位實例化一些運算規(guī)則;然后隨機合成一個等式兩邊都是單變量且量綱單位一致的種子方程;接著,選擇方程等式的任何一邊按照量綱單位實例化規(guī)則進行變量展開,合成一個量綱單位一致的方程;最后,對生成方程的方程樹以自底向上遍歷的方式生成一個數(shù)學應用題.文獻[33]提出了主題重寫方法,與二維導引合成算法不同,主題重寫方法并不是從無到有地生成數(shù)學應用題,而是對原始問題s 進行主題變換,從而生成具有新主題t 的應用題s′.主題重寫方法使用兩步解碼過程:(1)識別原始問題s 中的內容詞(名詞、動詞、形容詞和命名實體),并將這些內容詞視為重寫的起始點;(2)對于每個詞匯類,從主題t 中提取前k 個主題詞.在兩步解碼過程中,解碼器都會考慮從候選列表中進行額外重寫,并根據(jù)式(1)計算函數(shù)R 對其進行評分,
其中:Sem(·)考察候選重寫問題s′的語意連貫性,根據(jù)單個詞的語義以及詞匯之間存在的語義關系對整個候選重寫問題的語義進行建模;Syn(·)考察候選問題s′的句法兼容性,考察原始問題s 的句法關系對候選重寫問題s′的適用程度,并用其來評價候選重寫問題s′的句法關系;Th(·)考察候選重寫問題s′的主題性,將單個詞的主題性上升到整個問題的主題性,從而考察候選重寫問題s′的主題性;α、β、γ 為每個函數(shù)的權重.考慮到重寫候選空間較大,文獻[33]使用波束近似搜索來得到最佳候選重寫.這種主題重寫方法能對現(xiàn)有的故事進行改編,達到改變其主題、而不改變其所含數(shù)學概念的目的.
自動數(shù)學應用題解算器的核心工作是構建將自然語言描述的數(shù)學應用題文本映射到對應方程(組)的有效算法,而方程(組)的具體求解過程和計算結果利用通用的數(shù)學搜索引擎(Wolfram Alpha)容易直接獲得.本節(jié)主要對自動數(shù)學應用題解算方法進行分類分析,介紹各類方法常用的特征,以及相應的準確率結果,并總結了自動數(shù)學應用題解算器的評估策略.
2.1.1 提取特征
方程模板一般由一系列數(shù)字槽和未知量槽以及相應運算符構成,構造相應的方程模板需要一些能夠反映這些槽之間關系的特征.在基于模板匹配的方法中,常用的特征[9-11]有3 種:(1)單槽特征,表征該槽代表的數(shù)字是否用于解決問題,或者數(shù)字出現(xiàn)的次數(shù)、順序;(2)槽對特征,表征2 個槽之間是否存在共指關系,或數(shù)量關系、依賴關系;(3)全局特征,表征解決方案的屬性.
2.1.2 基于模板匹配方法的解算器
基于模板匹配方法需要預先定義一組方程式模板集,其中每個方程模板都包含一組數(shù)字槽和未知量槽,數(shù)字槽由從文本中提取的數(shù)字填充,未知量槽由代表未知量的名詞填充.文獻[10]提出了跨句子邊界推理(KAZB)算法,該算法同時分析多個句子以產生數(shù)學應用題的全局語義表示.首先,選擇一個方程模板作為所有方程系統(tǒng)的框架,這個模板中包含數(shù)字槽和未知量槽;然后,從文本中提取填充數(shù)字槽和未知量槽的相關信息;最后,將這些相關信息與數(shù)字槽和未知量槽對應以實例化方程模板,再通過自動求解方程獲得答案.由于KAZB 算法單獨考慮數(shù)字槽與未知量槽的對齊與插入,而未知量槽的填充與數(shù)字槽的對齊密切相關,這樣會增加方程系統(tǒng)的假設空間,為此,文獻[11]提出了二次規(guī)劃(ZDC)算法以解決這個問題,該算法使用對數(shù)線性模型來描述方程模板的選擇和數(shù)字對齊,僅考慮方程模板的數(shù)字槽填充,并設計一些有效特征來描述數(shù)字與未知量的關系,最后使用最大邊界目標來訓練對數(shù)線性模型,以增大正確對齊和錯誤對齊的邊界.對于一些規(guī)模龐大且復雜的數(shù)據(jù)集,如,Dolphin18K 是從問答網站上獲取的數(shù)據(jù)集,其中問題的答案不能直接從最好解答中得出,此時,簡單的匹配無法滿足需求.為此,文獻[8]提出一種基于相似度(SIM)的算法,利用一個評分函數(shù)或一個等級感知分類器返回概率最高的實例.基于模板匹配的方法存在2 個主要缺點:(1)數(shù)學概念無法通過稀疏的訓練實例捕獲大量有用的信息;(2)學習過程很大程度上依賴于詞匯和句法特征.考慮到以上缺點,文獻[9]提出了利用細粒度方程表達式(Fine-Grain)解決數(shù)學應用題,首先檢索相關的方程系統(tǒng)模板,并將問題文本中的數(shù)字與方程模板對齊,然后進行細粒度(更小的方程單位)推理獲得最終答案.
上述基于模板匹配方法的解算器所獲得的準確率見表2.這類方法的重點在于利用已知模板去構造相應問題的特定方程,需要從預先定義的模板集中選擇相應的方程模板,再進行槽的填充,但這類方法只能解決固定類型的問題,泛化能力差,并且需要大量的人工注釋,費時費力.因此,基于模板匹配的方法更適用于題型單一,規(guī)模較小的數(shù)據(jù)集. Dolphin18K數(shù)據(jù)集規(guī)模較大且存在數(shù)據(jù)集標簽不完整、數(shù)據(jù)形式復雜等問題,因此,在此數(shù)據(jù)集上這類方法性能不好,而Alg514 屬于小規(guī)模數(shù)據(jù)集,標簽完整,涉及題型較為單一,在此數(shù)據(jù)集上這類方法性能較好.
表2 基于模板匹配方法解算器的準確率Tab.2 Accuracy of solvers based on template matching
2.2.1 提取特征
基于統(tǒng)計分類的方法需要對特定對象進行分類,這里的對象可以是單詞級別的,也可以是句子或問題級別的.這類方法需要捕獲各類對象的有效特征,以便分類.在基于統(tǒng)計分類的方法中,常用的特征[14,16]有3 種:(1)問題級別特征,表征問題類別及其關鍵字特征;(2)句子級別特征,表征句子位置以及句子之間或句子元素之間的依賴關系;(3)實體相關特征,表征特殊名詞短語的數(shù)量.
2.2.2 基于統(tǒng)計分類方法的解算器
基于統(tǒng)計分類方法的重點在于分類,有些方法對問題文本中的重要成分進行分類,有些方法對整個問題進行分類.文獻[14]認為數(shù)學應用題描述的是部分世界狀態(tài)的轉變,相關動詞在狀態(tài)變換中起重要作用,由此提出使用動詞分類法(ARIS)解決數(shù)學應用題.ARIS 自動將問題文本中的每個句子分割成一些片段,每個片段都由實體(整個問題中觀察或改變數(shù)量的某個對象)、容器(實體的集合)、數(shù)量(實體所對應的量)、動詞和屬性組成,這些片段表示了某種世界狀態(tài),通過使用少量容易獲得的訓練數(shù)據(jù),ARIS 可將數(shù)學應用題映射到世界狀態(tài)變換,通過動詞類型跟蹤狀態(tài)的更新,形成方程式來解決問題.與ARIS 相同,文獻[15]利用自然語言處理技術(NLP)從用英文表示的數(shù)學應用題中檢索相關信息,將給定的問題文本劃分為成分相同的句子,再從每個句子中提取所有者、實體和關鍵字等信息,最后對所呈現(xiàn)的事實進行排序,并得出答案.自動解決數(shù)學應用題的能力在很大程度上取決于分析問題類型和識別問題組成的能力[16].文獻[16]針對小學階段的3 種問題類型:增加和減少(join and separate)、部分-部分-整體(part-part-whole)和比較(compare),提出multistage approach 算法. 該算法將問題解決過程分為3 個階段:預測問題類型;識別每個問題中句子(或句子類型)的功能;從問題中提取必要的信息,生成相應的數(shù)學方程.與multistage approach 算法相似,文獻[17]提出使用公式(Formula)解決數(shù)學應用題,首先識別問題文本中每個句子的變量及其相關屬性,自動將這些信息映射到語義表示;然后利用該語義表示識別公式及其屬性,屬性分為3種:部分和整體(part-whole)、數(shù)值變化(change)和數(shù)量比較(campare);最后根據(jù)公式的形式化描述生成方程.
上述基于統(tǒng)計分類方法的解算器所獲得的準確率見表3.這類方法的重點在于分類,而無論對何種級別的對象進行分類,都無法涵蓋全部類別,所以對類別的定義以及類別邊界的劃分等是需要重點解決的問題.因此,這類方法更適用于問題類型較為有限的情況.SingleEQ 和AI2 都屬于小型數(shù)據(jù)集,SingleEQ涉及4 種基本運算,類型較為復雜,而AI2 僅涉及加減2 種運算,類型較為單一,對于類別劃分,AI2 數(shù)據(jù)集的任務量較小.因此,基于統(tǒng)計分類方法的解算器在AI2 數(shù)據(jù)集上的性能表現(xiàn)優(yōu)于SingleEQ 數(shù)據(jù)集.
表3 基于統(tǒng)計分類方法解算器的準確率Tab.3 Accuracy of solvers based on statistical classification
2.3.1 提取特征
基于樹或圖的方法需要將數(shù)學應用題映射成特定的圖形,再進行方程構建,因此需要一些特征來描述圖形元素之間的關系.在圖形方法中,常用的特征[20-21]有3 種:(1)個體數(shù)量特征,表征數(shù)量是否表示比率或比率單位的一部分;(2)數(shù)量對特征,表征2 個數(shù)量之間是否具有相同的依賴動詞,或2 個數(shù)量是否具有相同的單位等;(3)問題特征,問題中包含的所需操作的信號.
2.3.2 基于樹或圖方法的解算器
算術表達式可以自然地表示為二叉樹結構,葉子結點代表問題文本中出現(xiàn)的數(shù)量,非葉子節(jié)點代表其2 個子節(jié)點需要進行的運算操作,優(yōu)先級高(低)的運算符處于較低(高)層.文獻[20]提出了以表達式樹概念為核心的算法ExpTree,該算法將提取到的n 個數(shù)量(q1,q2,…,qn)的問題文本P 作為系統(tǒng)輸入,系統(tǒng)目標是將應用題映射到一個只讀一次(每個數(shù)量只使用一次)的算術表達式E 中.首先通過數(shù)量模型(quantity schema)模塊提取問題文本中的重要數(shù)量,然后采用相關性分類器(二類分類器,判定問題文本P 中出現(xiàn)的數(shù)量是否與解決問題有關)和LCA 分類器(多類分類器,判定相關數(shù)量之間的運算符)對表達式樹進行全局推理.定義表達式E 的得分為
其中:T 為表達式樹;IRR(q)為數(shù)量q 與問題解答無關的可能性;PAIR(qi,qj,op)為LCA 分類器選擇運算符op 的可能性,LCA(qi,qj,T)為T 中qi和qj的最近公共祖先;wIRR為縮放參數(shù);I(E)為未出現(xiàn)在表達式E 中的所有數(shù)量.與ExpTree 相比,文獻[21]提出的解算器ALGES 有2 處明顯的不同:(1)ALGES 采用一種更貪婪的方式,枚舉所有可能的方程樹,并且考慮無關變量;(2)ALGES 通過整數(shù)線性規(guī)劃(ILP)生成樹的空間,來表示類型一致的代數(shù)方程.文獻[23]提出的DOL 方法可以看作是基于樹方法的拓展,其目標由建立一個方程樹轉換為建立一個自然語言文本的結構語義表示.DOL 方法的核心是通過一個語義解析器將文本句子轉換為DOL 樹,每個DOL 節(jié)點的詞匯和語法規(guī)則都采用半監(jiān)督的方式構建,然后使用基于上下文的無關語法(CFG)計算每個DOL 節(jié)點的得分,并選擇得分最高的DOL 樹的派生,最后通過推理模塊獲得答案.
文獻[22]提出了一個重要概念:單位依賴圖(unit dependence graphs,UDG),來表示不同數(shù)量單位及問題之間的關系,再進行推理得到表達式.對于應用題中的每個量和問題,在UDG 中都存在相應的節(jié)點.UDG 由RATE、SAME UNIT、NUM UNIT 和DEN UNIT組成.RATE 為描述比率關系的數(shù)字;SAME UNIT 表示由無向邊連接的2 個節(jié)點具有相同的單位;NUM UNIT 表示源節(jié)點U 的分子單位與目標節(jié)點V 的單位匹配;DEN UNIT 表示源節(jié)點U 的分母單位與目標節(jié)點V 的單位匹配.構造一個應用題的UDG 本質上是一個結構化預測問題,利用節(jié)點分類器(二類分類器,以每個節(jié)點為輸入,判斷其是否為RATE)和邊分類器(多類分類器,以一對節(jié)點為輸入,預測對應邊的屬性)獨立預測結構的各個部分,然后再通過聯(lián)合推理得到UDG,從而得到解的表達式樹,最后以遍歷的形式得到解的表達式.表4 給出了一個UDG 的應用實例.
表4 單位依賴圖實例Tab.4 Example for unit dependence graphs
上述基于圖形方法的解算器所獲得的準確率見表5.相關研究表明,基于圖形的方法往往適用于類型簡單的數(shù)據(jù)集.Dolphin18K 和CC 數(shù)據(jù)集涉及的應用題類型繁多復雜,簡單的樹或圖不能完全處理數(shù)量間的關系,因此,基于圖形方法的解算器在這2 個數(shù)據(jù)集上的準確率較低,而AI2、IL、SingleEQ 和AllArith涉及的問題類型較為單一,因此這類方法在這些數(shù)據(jù)集上的準確率較高.
表5 基于圖形方法解算器的準確率Tab.5 Accuracy of solvers based on tree or graph
基于圖形的方法通過引入圖形輔助表示數(shù)量間的關系,其中包含一些數(shù)學概念,在一定程度上簡化了問題文本到方程表達式的轉化過程,為之后自動解算器的研究提供了新的思路.
2.4.1 提取特征
近年來,深度學習算法在智能應用領域取得了巨大成功.深度學習的主要優(yōu)點是,在訓練數(shù)據(jù)量足夠的情況下,能夠以數(shù)據(jù)驅動的方式有效學習特征,無需人工干預,減少了對特征的需求,但也可以選擇一些特征增強算法性能.用于深度學習算法的特征包括數(shù)量對特征和問題相關特征,這些特征與前面3 類方法的特征相同.
2.4.2 基于深度學習框架的解算器
近幾年,基于深度學習的方法已經成為解算器設計的主流方法,主要分為2 種形式:(1)強化學習的形式,利用循環(huán)獎勵機制構造方程;(2)端到端的形式,最經典的端到端形式是Encoder-Decoder 框架,在Encoder 層和Decoder 層采用RNN 或者CNN 作為編碼器和解碼器,用來完成從數(shù)學應用題到方程表達式的映射.
(1)強化學習形式的解算器模型.
強化學習的形式通過給定一組內部狀態(tài)S={s1,…,sm}和動作A={a1,…,an},迭代地將動作A 作用于狀態(tài)S,從而得到新的狀態(tài)S′,直到狀態(tài)S′滿足終止條件.文獻[36]首先將深度學習方法與強化學習結合在一起,提出深Q 網絡模型,成功地直接從高維輸入來學習控制策略.深Q 網絡成功地解決了各種大搜索空間問題,并且在精度和運行時間方面都展現(xiàn)了良好的性能.借助深Q 網絡,文獻[25]提出的MathDQN 模型將深層強化學習應用于求解數(shù)學應用題,以解決其指數(shù)級方程模板的搜索問題. MathDQN 結合了Exp-Tree 算法的思想,首先,將數(shù)學應用題序列作為模型輸入,利用ExpTree 算法中的數(shù)量模型模塊提取出與問題解決有關的數(shù)量,并將其作為表達式樹的葉子結點,在此過程中利用重排序機制(re-order)對葉子結點按照構建表達式樹的順序進行重新排列;然后,使用深Q 網絡框架構建表達式樹,在此過程中使用所選數(shù)量對特征(feature extraction)向量表示狀態(tài),并通過環(huán)境的反饋(reward signal)以正負獎勵的形式迭代地選擇數(shù)量對及其運算符;最后,對深Q 網絡構造的表達式樹進行遍歷得到方程.MathDQN 模型的算法流程如圖1 所示.
圖1 MathDQN 模型算法流程Fig.1 Flowchart of MathDQN
(2)端到端形式的解算器模型.
文獻[24]提出的DNS(deep neural solver)模型是首個不依賴于復雜特征工程的基于深度學習的解算器模型,并且首次將seq2seq 模型[37]應用于自動解算器設計,對解算器的發(fā)展做出了里程碑式的貢獻.DNS首先將問題文本中出現(xiàn)的數(shù)字映射到一些數(shù)字標簽,并用這些數(shù)字標簽代替原始問題文本中的數(shù)字;然后將帶數(shù)字標簽的應用題作為seq2seq 模型的輸入,seq2seq 模型由1 層嵌入層和由2 層GRU 組成的編碼層以及由2 層LSTM 組成的解碼層構成,模型輸出為一個方程模板,對得到的方程模板進行相應的數(shù)字對應后即得到解決應用題的具體方程.為避免應用題文本中無關數(shù)量的影響,DNS 提供了一個基于LSTM 的二分類模型的重要數(shù)字識別模塊(SNI),用于判別解決問題所需的重要數(shù)字,只對這些重要數(shù)字進行映射,從而有效提高了模型性能.進一步,文獻[24]通過設置超參數(shù)閾值θ 將seq2seq 模型與基于相似性的檢索模型結合,建立了混合DNS 模型,該模型中,如果待測試問題與檢索問題的Jaccard 相似度超過θ,就將檢索問題的方程模板作為測試問題方程模板,否則,利用seq2seq 模型生成方程模板.與原模型相比,新模型能夠產生新的方程模板,并且不需要預定義的方程模板集.
文獻[32]提出的方法Ensemble Model,在DNS 的基礎上增加了方程歸一化模塊,利用方程表達式樹的唯一性解決seq2seq 模型輸出的方程模板中出現(xiàn)的數(shù)字順序和括號匹配問題,使用相應的歸一化策略提高條件概率(方程模板|問題文本)的值,從而得到唯一的方程模板.另外,文獻[32]還集成了機器翻譯中較為流行的3 種seq2seq 模型(BiLSTM、ConvS2S、Transformer)的優(yōu)點改進了Ensemble Model.
隨著深度學習方法在解算器設計中應用的發(fā)展,對大型數(shù)據(jù)集的需求也有所增加,因此出現(xiàn)了一些規(guī)模較大的數(shù)據(jù)集,如Math23K 和Dolphin18K 等. 然而,很多解算器在這些大型數(shù)據(jù)集上性能并不好,主要是因為一些端到端的方法會產生指數(shù)級的目標表達式映射,占用大量空間.為解決此問題,文獻[26]提出了一個基于遞歸神經網絡的解算器模型T-RNN.以一個應用題為例,T-RNN 模型的解算過程如圖2 所示,模型由2 個過程組成:模板預測過程(圖2 左側)和利用遞歸神經網絡解算過程(圖2 右側).模板預測過程的目的是將問題文本映射成能夠轉換為樹形結構的方程模板,這里采用了2 種減少方程模板數(shù)量的方法:(1)將運算符封裝成<op>的形式,再用遞歸神經網絡判定<op>的真實值;(2)添加一個方程歸一化模塊,以規(guī)范方程模板的形式.模板預測過程首先將問題文本中的數(shù)字映射為數(shù)字標簽,然后將映射后的文本經過1 層嵌入層輸入到seq2seq 模型中,這里的seq2seq 模型選用BiLSTM 與LSTM 分別作為譯碼器與解碼器,seq2seq 模型的輸出經過1 層注意力層(attention)以更好地捕捉數(shù)量之間的關系,最后得到形似n1<op>n2<op>n3的方程模板,該模板同時可以由樹形結構表示.在得到方程模板后,通過遞歸神經網絡確定數(shù)量間的運算符,便可得到最終方程和答案.在此之前,T-RNN 還設計了一個數(shù)量表示(quantity representation)模塊,首先對數(shù)字映射后的問題文本經過詞嵌入操作,并將其作為BiLSTM 層的輸入,獲得一系列隱藏狀態(tài),輸出之前將其經過1 層自注意力層(self attention)以捕捉數(shù)量間更多的語義關系,得到新的更有意義的數(shù)量表示q0,q1,…,qn,這些新的數(shù)量表示與方程模板中的數(shù)字標簽一一對應.遞歸神經網絡利用新的數(shù)量表示確定數(shù)量間的運算符,得到最終的表達式及其結果.T-RNN 通過采取一系列措施減少方程模板的數(shù)量,有效提高了解算器的性能.
圖2 T-RNN 模型Fig.2 T-RNN model
基于深度學習框架的方法不需要提取大量有效特征,減少了人為干預,并且能夠通過大量的自主學習產生新的方程模板,減小了對于預定義模板集的依賴,大大拓寬了能夠解決的問題類型的范圍,開啟了數(shù)學應用題解算器發(fā)展的新篇章.上述基于深度學習框架的解算器所獲得的準確率見表6.AI2、Alg514 和IL 為英文小型數(shù)據(jù)集,模板數(shù)量少,問題類型單一,因此基于深度學習方法的性能并不明顯優(yōu)于其他傳統(tǒng)方法;Math23K 屬于大型數(shù)據(jù)集,涉及的問題類型復雜,但它屬于中文語料,語義理解分析是一大難關,因此,基于深度學習的方法在這個數(shù)據(jù)集上的準確率稍低于小型數(shù)據(jù)集;CC 數(shù)據(jù)集涉及的應用題類型繁多復雜,基于深度學習的方法在這個數(shù)據(jù)集上具有較好的性能,準確率優(yōu)于其他類型方法.
表6 基于深度學習方法解算器的準確率Tab.6 Accuracy of solvers based on deep learning
解算器的性能評估也是值得關注的問題,目前最流行的評估策略是考察解算器的準確率[8,10,11,21,23],這顯然是一個易于實現(xiàn)的度量指標,另一種評估策略是從黃金方程系統(tǒng)中提取最優(yōu)推導,將其與解算器的預測推導進行比較[10].受文獻[10]影響,文獻[29]的研究表明一些錯誤的方程有時也能產生正確的答案,只考慮正確率是不全面的,因此提出了一種新的評估策略:方程準確性,并使用“派生”來評價解算器性能.用x 表示問題文本,y 表示方程系統(tǒng),q 表示文本中出現(xiàn)的數(shù)量,T 表示方程模板,A 表示數(shù)字與模板的對齊,C(T)表示方程模板中的系數(shù)集.派生分為4 個階段:第1 階段為衍生結構,提取問題文本中的數(shù)量,將其與模板方程對齊,并將對齊A 和模板T 一起作為方程系統(tǒng)的派生標識z=(T,A);第2 階段為派生等價,如果對應的模板T1、T2和對齊A1、A2是等效的,那么派生(T1,A1)和(T2,A2)是等價的;第3 階段為模板等效,對于2 個模板T1和T2,其對應的系數(shù)集為C(T1)和C(T2),當|C(T1)|=|C(T2)|,并且能夠建立從C(T1)到C(T2)的一一映射時,那么T1和T2所確定方程的解是相同的,也就是這2 個模板是等效的;第4階段為對齊等效,分別識別模板T1和T2中的插槽,如果能夠建立一個A1到A2的一一映射,則認為這2個對齊是等效的.經過以上4 個階段的判別可以確定解算器的方程與正確方程是等價的,保證了方程的準確性. 這種評估策略可以更準確地評估解算器的性能,準確找到其他策略可能忽略的錯誤.
本文對近年來自動數(shù)學應用題解算器的研究工作進行了綜述.首先,介紹數(shù)學應用題解算器的研究內容和意義,對現(xiàn)有研究所用數(shù)據(jù)集進行了匯總和特點分析,并進一步介紹了數(shù)據(jù)生成方法;然后,對自動解算方法進行了分類分析,給出不同類型解算器的基本思路、需要提取的典型特征及代表性處理算法;最后,介紹了自動解算器性能的評估策略.
自動數(shù)學應用題解算器的研究發(fā)展至今,目前研究現(xiàn)狀還不是很樂觀,現(xiàn)有的解算器模型還存在很多問題:
(1)語義分析問題.機器理解與人類語義理解有很大差異,如一些罕見詞匯與短語,系統(tǒng)不能夠很好地理解.如,ZDC 算法不能很好地識別未出現(xiàn)過的詞[11].
(2)知識背景問題.部分數(shù)學應用題的解決需要特定的學科常識,系統(tǒng)如果未獲得相應的常識庫,就無法解決該類問題.如,ALGES 不能獲得1 周與7 天等價的有關常識[21].
(3)局限性問題.基于模板匹配的方法通常只能解決存在于預定義模板中的問題;一些數(shù)學應用題解算器只能解決特定類型的問題.
(4)無關量問題.問題文本中出現(xiàn)的數(shù)量并不都參與問題解決,因此,準確判別無關量很重要.
(5)數(shù)據(jù)集規(guī)模問題.對于基于深度學習的方法,數(shù)據(jù)集規(guī)模對系統(tǒng)性能有很大影響,目前普遍使用的數(shù)據(jù)集規(guī)模還比較小,不足以訓練出更好的性能.
(6)分類器性能問題.在對問題類型或詞類型進行分類預測時,分類器性能對系統(tǒng)的性能有很大影響.
隨著人工智能的發(fā)展和相關技術的提升,本文認為數(shù)學應用題解算器的研究有以下幾個方面值得繼續(xù)探索:
(1)在數(shù)據(jù)集方面,可以通過數(shù)據(jù)驅動的方法生成更真實的數(shù)據(jù),提高數(shù)據(jù)集的規(guī)模和質量,更好地為系統(tǒng)服務.
(2)基于根據(jù)動詞范疇分類的思想[14],可以嘗試將分類范圍擴大到整個問題,先考慮對問題類型進行分類(如先將問題劃分為單變量問題或多變量問題),然后再選擇解決問題的最優(yōu)模型.
(3)數(shù)據(jù)預處理可以采用更有效的方法,如,利用深層雙向語言模型中的ELMo 模型[38]建立詞向量,采用知識圖譜的形式獲取更為完整的語義關系等.
(4)對網絡結構進行優(yōu)化,如在模型中結合生成對抗網絡等新型深度學習算法提高系統(tǒng)性能.
(5)可以進一步結合現(xiàn)有模型的優(yōu)勢設計解算器,如,將序列建模模型TCN[39]建立在seq2seq 框架上,利用TCN 感受野廣和時序性的特點構建深度學習模型;采用圖網絡[40]的方式構建相應的圖結構,提取相應的實體作為節(jié)點,利用邊表示節(jié)點間涵蓋的數(shù)學關系,以提高模型性能.