孟慶松,張 翔,何世柱,劉 康,趙 軍
(1. 哈爾濱理工大學(xué) 自動(dòng)化學(xué)院,黑龍江 哈爾濱 150080;2.中國科學(xué)院自動(dòng)化研究所 模式識(shí)別國家重點(diǎn)實(shí)驗(yàn)室,北京 100160)
隨著互聯(lián)網(wǎng)技術(shù)和O2O服務(wù)的迅速發(fā)展,網(wǎng)絡(luò)上積累了大量組織良好的結(jié)構(gòu)化數(shù)據(jù)。這些數(shù)據(jù)的組織形式多種多樣,如概念標(biāo)簽體系、商品信息庫、微博關(guān)系網(wǎng)、知識(shí)圖譜等,其中,以關(guān)聯(lián)互聯(lián)網(wǎng)中所有知識(shí)資源為目標(biāo)的開放鏈接數(shù)據(jù)計(jì)劃[注]http://linkeddata.org/為典型的代表項(xiàng)目,其基本組成部分就是各領(lǐng)域知識(shí)圖譜。知識(shí)圖譜包含高質(zhì)量、組織良好的結(jié)構(gòu)化知識(shí)數(shù)據(jù),是人工智能的重要基礎(chǔ)設(shè)施,在網(wǎng)頁搜索[1]、推薦系統(tǒng)[2]、問答系統(tǒng)[3]等應(yīng)用中發(fā)揮著重要作用。
本文研究如何利用知識(shí)圖譜中實(shí)體的結(jié)構(gòu)化事實(shí)信息生成其自然語言描述文本。圖1展示了在維基媒體基金會(huì)所維護(hù)的知識(shí)圖譜(或稱知識(shí)庫)WikiData[4]上瀏覽著名作曲家“約翰·塞巴斯蒂安·巴赫”的實(shí)體的局部效果[注]https://www.wikidata.org/wiki/Q1339。除了包含巴赫的大量結(jié)構(gòu)化事實(shí),還包含了該人物的一句話描述文本“德國巴洛克作曲家和音樂家”。實(shí)體描述生成(Entity Description Generation,EDG),就是給定知識(shí)庫的實(shí)體及其相關(guān)的結(jié)構(gòu)化數(shù)據(jù),自動(dòng)地生成其描述內(nèi)容,一般為一句話的簡介。
圖1 知識(shí)庫中實(shí)體的事實(shí)及描述示例
盡管知識(shí)圖譜包含了豐富的對(duì)機(jī)器友好的語義信息(例如,以機(jī)器碼和符號(hào)描述實(shí)體及關(guān)系、以三元組形式描述事實(shí),如圖1所示),但是這些符號(hào)表示的結(jié)構(gòu)化數(shù)據(jù)難以被人類所閱讀和理解,給知識(shí)呈現(xiàn)帶來了不小的挑戰(zhàn)。事實(shí)上,在信息交流過程中,大部分人更樂于閱讀和表達(dá)自然語言。例如,雖然圖1的網(wǎng)頁中可以找到上百條與巴赫有關(guān)的信息(如巴赫創(chuàng)作的眾多音樂作品、他的妻子和20個(gè)孩子等),但是這些數(shù)據(jù)的堆砌顯然不如文本描述直觀。實(shí)際上,大部分想要了解該人物的用戶首先更樂于閱讀文字描述。此外,實(shí)體描述還對(duì)很多下游任務(wù)有幫助,如知識(shí)圖譜人物關(guān)系的解釋[5]、時(shí)間線的描述[6]、問答系統(tǒng)[7]等任務(wù)都能通過文字描述提升用戶體驗(yàn)。
然而,完全依靠人工為實(shí)體編寫描述是難以完成的。表1給出了當(dāng)前較為流行的幾個(gè)通用領(lǐng)域知識(shí)庫的數(shù)據(jù)規(guī)模。容易看到,雖然WikiData等在線知識(shí)庫允許用戶對(duì)其做人工修改,但僅僅依靠人力難以給大量實(shí)體加上描述信息。相較而言,大部分實(shí)體都包含結(jié)構(gòu)化的事實(shí)信息。如果能夠利用實(shí)體已有結(jié)構(gòu)化數(shù)據(jù)自動(dòng)生成相對(duì)應(yīng)的實(shí)體描述內(nèi)容,將有利于進(jìn)一步提升知識(shí)圖譜的應(yīng)用價(jià)值。因此,如何利用自然語言描述結(jié)構(gòu)化知識(shí)圖譜中的概念和事實(shí)具有重要研究意義和應(yīng)用價(jià)值。
表1 常見知識(shí)圖譜的數(shù)據(jù)規(guī)模及實(shí)體描述數(shù)目
實(shí)體描述的應(yīng)用需求是為讀者提供該實(shí)體的基本信息,自然這個(gè)任務(wù)就要求模型生成的句子具有功能效用和流暢性。其中功能效用指句子應(yīng)當(dāng)滿足讀者對(duì)該實(shí)體了解的需要。本文則主要提升句子的流暢性,它要求句子對(duì)閱讀者自然且不晦澀。NIST曾在DUC2007任務(wù)[8]中列舉了對(duì)生成句子的一些要求,在流暢性方面則有如語法正確、句子簡練等要求。在該任務(wù)的最終評(píng)測(cè)中,所有的句子都會(huì)由人工判斷是否符合給定標(biāo)準(zhǔn)。
由于流暢性尚無自動(dòng)化的評(píng)價(jià)指標(biāo),本文嘗試對(duì)人工構(gòu)造的實(shí)體描述進(jìn)行觀察。以WikiData知識(shí)庫中的實(shí)體“Peter Dinklage(彼特·丁拉基)”為例,通過人工構(gòu)建的維基數(shù)據(jù)和維基百科之間的對(duì)應(yīng),得到維基百科對(duì)于 “彼特·丁拉基”的介紹: “彼特·海頓·丁拉基,美國演員。因出演HBO的熱門影集《權(quán)力的游戲》而名聲大噪。”在這個(gè)句子中,下劃線部分的內(nèi)容都是與“彼特·丁拉基”有關(guān)的信息,從實(shí)體的屬性里可以直接得到,但是“HBO”則與這個(gè)演員并無直接關(guān)系。實(shí)際上,只有在“權(quán)力的游戲”實(shí)體的結(jié)構(gòu)化數(shù)據(jù)中可以獲得,即HBO是《權(quán)力的游戲》的出品公司,并且“權(quán)力的游戲”與“彼特·丁拉基”實(shí)體有直接關(guān)聯(lián),可以從該演員的實(shí)體出發(fā),在知識(shí)圖譜上遍歷得到。因此,由于實(shí)體描述生成的目標(biāo)接近人工撰寫的效果,假若以維基百科的內(nèi)容為范本,提升實(shí)體描述的流暢性,那么從對(duì)應(yīng)實(shí)體在知識(shí)圖譜上的鄰居中進(jìn)一步提取屬性值信息將是非常有用的。也就是說,一個(gè)流暢的實(shí)體描述句子勢(shì)必需要利用知識(shí)庫上的多跳屬性。
若觀察人工撰寫的實(shí)體描述句子,多跳屬性提供的信息一般會(huì)以形容詞或者定語從句等語法形式出現(xiàn),例如,上文中提到的“HBO”就是一個(gè)形容詞作修飾成分。當(dāng)然,這些內(nèi)容是可選的,刪除以后并不會(huì)影響句子表達(dá)的語義。表2給出了本文用到的數(shù)據(jù)集中實(shí)體的直接屬性和多跳屬性與目標(biāo)句子的詞匯覆蓋程度差異??梢钥吹剑尤攵嗵鴮傩院笤~匯量的覆蓋會(huì)有顯著提升。這說明,在大量人工撰寫的實(shí)體介紹中,多跳屬性具有重要作用。因此我們可以認(rèn)為,直觀上流暢的實(shí)體描述一定包含了知識(shí)庫中的多跳屬性。
表2 驗(yàn)證集上多跳屬性詞匯覆蓋占比(%)
本文使用深度神經(jīng)網(wǎng)絡(luò)中的編碼器—解碼器框架對(duì)實(shí)體描述生成進(jìn)行建模,使用編碼器對(duì)知識(shí)庫中與實(shí)體有關(guān)的事實(shí)進(jìn)行編碼,使用關(guān)注機(jī)制和LSTM網(wǎng)絡(luò)對(duì)目標(biāo)實(shí)體描述進(jìn)行解碼。為了解決實(shí)體描述標(biāo)注數(shù)據(jù)缺少的問題,本文從WikiData知識(shí)庫上整理得到特定領(lǐng)域的子集,進(jìn)行訓(xùn)練,最終驗(yàn)證了多跳事實(shí)對(duì)于提升流暢度的重要作用。
實(shí)體描述的生成任務(wù)形式可以歸類為數(shù)據(jù)到文本生成(data-to-text generation)的一種。這類任務(wù)在知識(shí)庫誕生之前就有多種應(yīng)用,例如,從結(jié)構(gòu)化數(shù)據(jù)生成天氣預(yù)報(bào)[9],向病人解釋藥物的作用[10],總結(jié)數(shù)據(jù)庫表中的統(tǒng)計(jì)數(shù)據(jù)[11]等。
Reiter和Dale系統(tǒng)性地提出[12]了數(shù)據(jù)到文本生成系統(tǒng)的三個(gè)主要步驟。第一步是文檔規(guī)劃,主要是先選擇用于生成文本的結(jié)構(gòu)化數(shù)據(jù),再安排結(jié)構(gòu)化數(shù)據(jù)之間的邏輯關(guān)系,即內(nèi)容選擇、篇章規(guī)劃兩個(gè)小步驟。第二步是微觀規(guī)劃,需要完成可能的句子聚合、確定數(shù)據(jù)具體用詞、生成指代表達(dá)等過程。最后一步是表述具現(xiàn)化,即用前兩步的結(jié)果生成具體的符合語法的句子。這三個(gè)步驟在傳統(tǒng)的生成系統(tǒng)中都有體現(xiàn),但較新的文獻(xiàn)多選擇進(jìn)行聯(lián)合學(xué)習(xí),從而避免傳統(tǒng)的管道(pipeline)系統(tǒng)中誤差傳遞的問題。圖2展示了傳統(tǒng)文本生成系統(tǒng)中的這三個(gè)步驟間的順序關(guān)系。
圖2 數(shù)據(jù)到文本生成系統(tǒng)的主要步驟
數(shù)據(jù)到文本生成的經(jīng)典方法對(duì)于實(shí)體描述生成有不少可借鑒之處。這些方法在很多方面都有所區(qū)別,如所針對(duì)的數(shù)據(jù)類型、選用的生成技術(shù)、研究的應(yīng)用場(chǎng)景、使用的評(píng)價(jià)手段等,所使用的文本生成技術(shù)是它們的主要區(qū)別[13]。
基于模板的生成方法是文本生成的主要方法。模板在形式上一般包含了句子的表達(dá)模式,在關(guān)鍵的地方留有空缺。當(dāng)給定一個(gè)新的結(jié)構(gòu)化數(shù)據(jù),將一些直接屬性代入模板的對(duì)應(yīng)空缺之中,就可以得到一個(gè)針對(duì)該數(shù)據(jù)的較為流暢的新句子。Angeli等[14]使用聯(lián)合概率建模的方法,加入了多種決策,把文檔規(guī)劃和表述具現(xiàn)化結(jié)合起來。對(duì)于選擇數(shù)據(jù)記錄、選擇字段、選擇模板等細(xì)節(jié),使用人工選定的特征和對(duì)數(shù)線性模型進(jìn)行排序和優(yōu)選。然而他們生成的評(píng)論僅限于天氣預(yù)報(bào)生成和機(jī)器人球賽兩個(gè)領(lǐng)域,可以簡單且有針對(duì)性地構(gòu)造模板。即只需將特定域的取值從訓(xùn)練文本抽去,再抽去數(shù)字就可以構(gòu)成一個(gè)模板。Duma和Klein[15]則在抽取之前先對(duì)齊數(shù)據(jù)和文本,再對(duì)抽取的結(jié)果使用人工規(guī)則進(jìn)行過濾,最終在268篇文章里抽取出了74個(gè)模板,其中有43個(gè)模板經(jīng)過人工審查發(fā)現(xiàn)符合語法正確的要求。Saldanha等[16]則主要針對(duì)公司實(shí)體,使用成對(duì)的種子詞進(jìn)行bootstrap,不斷執(zhí)行模式抽取、詞對(duì)發(fā)現(xiàn)兩個(gè)步驟,再使用打分和刪除規(guī)則來提取實(shí)體描述的模板。
生成語法則是自然語言處理中較為重要的方法,具有比模板好得多的泛化能力。Konstas和Lapata[17]在生成描述時(shí)使用了概率上下文無關(guān)語法(PCFG),每條產(chǎn)生式的概率服從多項(xiàng)分布。他們還加上了基于超圖的排序,用于優(yōu)選。Gyawali和Gardent[18]使用基于特征的詞匯化樹連接語法(Feature-based Lexicalized TAG)進(jìn)行句子生成。他們首先進(jìn)行了對(duì)齊子樹結(jié)構(gòu)和知識(shí)庫的三元組數(shù)據(jù),再抽取FB-LTAG語法。他們單獨(dú)訓(xùn)練了一個(gè)語言模型,對(duì)生成的結(jié)果進(jìn)行排序,選擇出最自然的表達(dá)。同時(shí)為了處理訓(xùn)練集中沒有出現(xiàn)過的新模式,他們還設(shè)計(jì)了基于規(guī)則的算法,從訓(xùn)練集上學(xué)習(xí)到的語法中猜測(cè)和擴(kuò)充新語法。
隨著神經(jīng)網(wǎng)絡(luò)方法的興起,數(shù)據(jù)到文本生成任務(wù)中也有一些研究采用深度神經(jīng)網(wǎng)絡(luò)來進(jìn)行的多步驟聯(lián)合學(xué)習(xí)。Mei等[19]使用雙向長短時(shí)記憶(Bi-LSTM)網(wǎng)絡(luò)模型,使用預(yù)選概率進(jìn)行粗篩選,再結(jié)合關(guān)注機(jī)制進(jìn)行精選。他們主要在天氣領(lǐng)域的WeatherGov數(shù)據(jù)集上做了生成實(shí)驗(yàn),同時(shí)在RoboCup的機(jī)器人球賽數(shù)據(jù)上考察了文本生成模型對(duì)不同領(lǐng)域的適應(yīng)能力。
實(shí)體描述的生成任務(wù)大多以神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),為了克服模板和生成語法常常限于具體表達(dá)的不足,Lebret等[20]針對(duì)人物領(lǐng)域,為每個(gè)人物生成描述信息。他們使用維基百科頁面上的信息框(InfoBox)作為輸入,輸出目標(biāo)則是同頁面上的維基百科描述。信息框的內(nèi)容由人工整理,往往會(huì)因人物職業(yè)不同而關(guān)注不同的屬性,例如,針對(duì)科學(xué)家應(yīng)標(biāo)出其專業(yè)方向,對(duì)球類運(yùn)動(dòng)員則會(huì)給出他加入的球隊(duì);但若人物具有相近職業(yè)則可能具有相同屬性,不過取值卻不同,例如籃球運(yùn)動(dòng)員和足球運(yùn)動(dòng)員各自的球隊(duì)名稱就有較大差別。基于這兩類考慮,他們?cè)O(shè)計(jì)了一個(gè)條件概率,以針對(duì)信息框中屬性、屬性值中的詞來建立語言模型。他們還使用了拷貝機(jī)制[21],從信息框中直接拷貝未登錄詞到目標(biāo)句子里,以解決句子中經(jīng)常需要生成低頻、未登錄詞的問題。
Chisholm等[22]使用神經(jīng)網(wǎng)絡(luò)中常用的Seq2Seq框架進(jìn)行人物描述的生成。他們使用WikiData作為輸入數(shù)據(jù),但將結(jié)構(gòu)化數(shù)據(jù)中每個(gè)屬性和屬性的取值依次相連,從而拼接成序列。借助Seq2Seq框架和神經(jīng)網(wǎng)絡(luò)的強(qiáng)大擬合能力,他們能學(xué)習(xí)到結(jié)構(gòu)化數(shù)據(jù)到實(shí)體描述句子之間的映射。例如,對(duì)于WikiData中的實(shí)體“Matias Tuomi”,他們用圖3所示的方式構(gòu)造輸入數(shù)據(jù)。同時(shí)他們借鑒自編碼器(auto-encoder)的思想,將目標(biāo)句子又轉(zhuǎn)換回原序列,以此擴(kuò)展原始模型。這樣的訓(xùn)練方法可以把文本生成和關(guān)系抽取兩個(gè)任務(wù)結(jié)合起來進(jìn)行聯(lián)合訓(xùn)練。實(shí)驗(yàn)效果表明這樣的聯(lián)合訓(xùn)練方式會(huì)優(yōu)于單獨(dú)使用文本生成任務(wù)進(jìn)行訓(xùn)練得到的模型。
圖3 知識(shí)庫中的事實(shí)相連構(gòu)成的輸入序列
實(shí)體描述的生成與傳統(tǒng)的生成工作相同,因此傳統(tǒng)工作中的句子生成技術(shù)(如模板、生成語法、神經(jīng)網(wǎng)絡(luò)等)可以借鑒到實(shí)體描述生成的工作中。但另一方面,傳統(tǒng)的自然語言生成工作使用記錄、λ表達(dá)式等作為輸入,而實(shí)體描述的生成需使用大規(guī)模知識(shí)圖譜。在知識(shí)圖譜中,基本的組成元素是事實(shí)三元組,若從一個(gè)實(shí)體出發(fā),在圖譜上遍歷,可能的遍歷路徑呈指數(shù)級(jí)上升。因此,如何選擇合適的事實(shí)三元組進(jìn)行句子生成是一個(gè)更具挑戰(zhàn)性的任務(wù)。此外,由于知識(shí)圖譜往往是開放領(lǐng)域的,所以,其句子表達(dá)將更具多樣性。
本節(jié)基于編碼器—解碼器的神經(jīng)網(wǎng)絡(luò)框架,提出一個(gè)利用多跳屬性的實(shí)體描述生成模型,并利用了關(guān)注機(jī)制。
首先對(duì)記號(hào)代表的含義及實(shí)體描述生成的任務(wù)進(jìn)行形式化說明。給定一個(gè)知識(shí)庫四元組K=(E,R,F,V),其中E為實(shí)體集合,R為二元關(guān)系集合,V為字符串、數(shù)值組成的常量集合。集合F為知識(shí)庫中的事實(shí)的集合,且每個(gè)事實(shí)為由頭實(shí)體、關(guān)系、尾實(shí)體組成的三元組〈h,r,t〉,并且F={〈h,r,t〉|h∈E,r∈R,t∈E∪V}。
針對(duì)每個(gè)實(shí)體e∈E,定義一個(gè)函數(shù)f:E→R×(E∪V),以三元組形式返回實(shí)體相關(guān)的屬性。并且定義fr:R×(E∪V)→R和ft:R×(E∪V)→(E∪V)兩個(gè)函數(shù),分別返回三元組的關(guān)系類型及具體的尾實(shí)體。
給定數(shù)據(jù)集D={(e1,s1),…,(en,sn)},有n組輸入和輸出數(shù)據(jù),每對(duì)數(shù)據(jù)由實(shí)體e∈E和該實(shí)體對(duì)應(yīng)的句子s=(w1,w2,…,wL)組成,其中每個(gè)wi,i=1,2,…,L表示第i個(gè)詞,L表示句子長度。
實(shí)體描述生成就是給定輸入數(shù)據(jù)集D,利用函數(shù)f獲取每個(gè)實(shí)體e在知識(shí)庫K上的相關(guān)屬性,生成盡可能接近標(biāo)準(zhǔn)句子s的輸出。
而我們已經(jīng)提到,生成流暢的實(shí)體描述需要使用多跳屬性。因此除了實(shí)體e的直接數(shù)據(jù)f(e)之外,我們還可以進(jìn)行更遠(yuǎn)的遍歷,以利用多跳數(shù)據(jù)f(ft(e))。
本文所提出的模型則使用編碼器—解碼器的神經(jīng)網(wǎng)絡(luò)框架。整體模型結(jié)構(gòu)如圖4所示,主要包括3個(gè)模塊: ①預(yù)處理模塊,針對(duì)不同實(shí)體從知識(shí)庫中選擇特定的屬性,構(gòu)建多跳屬性集合; ②編碼器模塊,負(fù)責(zé)編碼輸入的三元組屬性集合,得到每個(gè)三元組的向量表示; ③解碼器模塊,依次解碼句子中的每個(gè)詞。下面詳細(xì)說明每個(gè)模塊。
圖4 使用多跳屬性的實(shí)體描述生成模型整體框架
2.2.1 預(yù)處理模塊: 構(gòu)建事實(shí)三元組集合
數(shù)據(jù)預(yù)處理模塊需要構(gòu)建每個(gè)樣本對(duì)應(yīng)的輸入和輸出。為了利用多跳屬性的數(shù)據(jù),我們使用深度優(yōu)先搜索算法遍歷WikiData知識(shí)庫。由于數(shù)據(jù)量巨大,我們限制了所選屬性值在從實(shí)體出發(fā)最遠(yuǎn)僅兩跳路徑范圍內(nèi),最終得到每個(gè)實(shí)體相關(guān)的事實(shí)三元組集合。我們直接使用遍歷順序?yàn)檫@些三元組賦予一個(gè)排序。后續(xù)模型在關(guān)注機(jī)制的幫助下,并不會(huì)被這個(gè)順序所影響。
2.2.2 編碼器模塊
編碼器模塊為輸入的三元組賦予向量表示。我們獨(dú)立看待每個(gè)三元組,假設(shè)它們并沒有嚴(yán)格的關(guān)聯(lián),編碼器獨(dú)立對(duì)待每個(gè)三元組的表示。由于目標(biāo)是生成單詞序列,因此三元組中的符號(hào)、關(guān)系等取值需要單獨(dú)設(shè)計(jì)embedding。而詞序列的embedding則包含了頭實(shí)體和尾實(shí)體的取值。這樣在解碼時(shí)可以避免解碼出屬性符號(hào),只得到預(yù)測(cè)詞。
如果三元組的尾部不是實(shí)體,而是其他取值,例如字符串、數(shù)值等,這個(gè)值則也會(huì)放到詞表中。若尾部是另一個(gè)知識(shí)庫實(shí)體,則取該實(shí)體的名稱加入詞表。
每個(gè)三元組T=〈h,r,t〉通過上述embedding層變換為三個(gè)向量即〈vh,vr,vt〉。我們將三元組的向量視為一個(gè)序列,我們簡單地通過求平均的方式獲得單個(gè)三元組的表示,在實(shí)驗(yàn)中這種簡單的方法會(huì)比使用一個(gè)LSTM模型對(duì)三個(gè)向量進(jìn)行融合還要好,具體如式(1)所示。
(1)
編碼器獨(dú)立地對(duì)每個(gè)三元組取出embedding以及平均操作,最終得到所有輸入的三元組向量序列{v1,v2,…,vM}。
2.2.3 解碼器模塊
我們使用標(biāo)準(zhǔn)的LSTM作為解碼器,每個(gè)循環(huán)單元由式(2)~式(7)所確定。
LSTM的隱層狀態(tài)和記憶狀態(tài)都初始化為零向量。當(dāng)輸入為
關(guān)注機(jī)制是解碼器中的重要組成部分。在解碼第i個(gè)詞時(shí),需要使用前一步的隱層狀態(tài)hi-1。我們使用了矩陣關(guān)注機(jī)制。首先以0偏置的雙線性函數(shù)計(jì)算對(duì)于每個(gè)輸入的三元組的相似度,如式(8)所示。
(8)
再使用softmax函數(shù)處理前一步得到的相似度,得到歸整化的關(guān)注權(quán)重,如式(9)所示。
(9)
利用這個(gè)權(quán)重對(duì)所有輸入的三元組向量進(jìn)行加權(quán)求和,得到在hi-1的情形下對(duì)于輸入三元組的整體表示,作為當(dāng)前詞的上下文向量,如式(10)所示。
(10)
接下來將輸入詞通過詞表示矩陣后得到的表示wi與上下文向量進(jìn)行拼接,合為一個(gè)輸入送入LSTM單元中進(jìn)行計(jì)算,如式(11)所示。
hi=LSTM([ui;wi])
(11)
最后,為了得到下一個(gè)詞,我們使用一個(gè)簡單的Softmax層,即用線性映射到詞表大小的logits向量,再使用Softmax函數(shù)預(yù)測(cè)每個(gè)詞的概率,如式(12)所示。
pi=Softmax(Wthi)
(12)
在訓(xùn)練和測(cè)試時(shí)取其中概率最大的詞作為當(dāng)前步驟的輸出。
我們使用交叉熵作為模型的優(yōu)化目標(biāo),并使用基于隨機(jī)梯度下降的方法來優(yōu)化。具體的目標(biāo)函數(shù)如式(13)所示,其中p(wi|w1,…,wi-1,e)表示模型在給定輸入實(shí)體和前i-1個(gè)詞時(shí),輸出第i個(gè)詞的概率。
L=∑(e,s))∈D∑ilogp(wi|w1,…,wi-1,e)
(13)
在實(shí)際的公開數(shù)據(jù)中,知識(shí)圖譜的實(shí)體描述都不甚完美。為了保證任務(wù)具有良好定義,即通過實(shí)體的結(jié)構(gòu)化數(shù)據(jù)能確實(shí)輸出其描述,我們利用維基百科和維基數(shù)據(jù)(WikiData)之間的映射來構(gòu)建數(shù)據(jù)集。我們使用了WikiData的20180416的dump數(shù)據(jù)作為輸入。
對(duì)于每個(gè)實(shí)體,我們首先從WikiData數(shù)據(jù)中的“類—實(shí)例(P31)”和“類—子類(P279)”兩種三元組作為父子類別的依據(jù),構(gòu)建了類別的分類樹。我們選擇了幾個(gè)類別來按領(lǐng)域篩選,把類別、子類別、該類別的實(shí)體、子類別實(shí)體都作為此領(lǐng)域的實(shí)體。后續(xù)只對(duì)分到某個(gè)領(lǐng)域中的實(shí)體集合進(jìn)行處理。
WikiData盡量給出了每個(gè)實(shí)體和這個(gè)實(shí)體的維基百科頁面的對(duì)應(yīng)關(guān)系。但有的實(shí)體分類比較細(xì),未必有專門維基百科頁面(例如,各種復(fù)雜的有機(jī)物、罕見元素的同位素等)。此外,我們也希望將來可以針對(duì)同一實(shí)體進(jìn)行多語言描述生成工作?;谶@兩個(gè)要求,對(duì)于每個(gè)領(lǐng)域的實(shí)體,我們讓實(shí)體同時(shí)具有中文和英文的對(duì)應(yīng)維基百科頁面。由于中文維基百科的覆蓋度并不高,這個(gè)條件能過濾掉很多的實(shí)體。為了保證訓(xùn)練數(shù)據(jù)規(guī)模大小足夠用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練,我們按照實(shí)體數(shù)量挑選了一些領(lǐng)域。
由于篩選出的實(shí)體均有對(duì)應(yīng)的維基百科頁面,我們使用一些過濾規(guī)則扔掉維基百科維護(hù)和管理所加入的標(biāo)注句子,將頁面正文中開頭一定長度的文本(一般為一兩個(gè)句子)作為訓(xùn)練的目標(biāo),得到一組質(zhì)量相對(duì)較好的實(shí)體描述標(biāo)注。
通過分析最終得到的數(shù)據(jù)量,我們隨機(jī)地切分了實(shí)體集合,構(gòu)造出訓(xùn)練集、驗(yàn)證集和測(cè)試集。表3給出了我們的數(shù)據(jù)集規(guī)模。書籍領(lǐng)域由于樣本過少,則不用于訓(xùn)練。
表3 數(shù)據(jù)集篩選前后規(guī)模
我們使用驗(yàn)證集來選擇模型的embedding維度,從50、100、300中選擇了效果最好的一組即300,并將LSTM隱層表示的維度也設(shè)為300。LSTM輸出加入了dropout并設(shè)比率為0.2。同時(shí)由于顯存大小的限制,我們?cè)O(shè)置了每個(gè)實(shí)體最多能輸入100個(gè)三元組,batch大小設(shè)為50。我們使用Adam進(jìn)行優(yōu)化,并使用其推薦的參數(shù)配置[23],將alpha、beta1、beta2分別設(shè)置為0.001、0.9和0.999。
我們也對(duì)三元組的關(guān)系進(jìn)行了一定限制,除了統(tǒng)計(jì)關(guān)系的出現(xiàn)頻次外,也排除了一些無用的屬性如書籍的ISBN號(hào)等,實(shí)際數(shù)據(jù)中只使用出現(xiàn)頻次最多的36種關(guān)系。
由于我們把維基百科給出的實(shí)體描述作為標(biāo)準(zhǔn)句子,這里使用自動(dòng)化指標(biāo)BLEU值[24]、ROUGE[25]值給出評(píng)價(jià)。
本節(jié)實(shí)驗(yàn)的主要關(guān)注點(diǎn)是引入多跳屬性是否能提升模型生成實(shí)體描述的能力?;A(chǔ)模型(Base)也是用本文提出的模型結(jié)構(gòu),但僅使用實(shí)體自身的結(jié)構(gòu)化三元組集合,而多跳模型(MultiHop)則使用3.1節(jié)中構(gòu)建出的完整三元組集合。二者訓(xùn)練時(shí)使用的目標(biāo)句子均相同。表4是兩個(gè)模型在開發(fā)集和測(cè)試集上由不同的自動(dòng)化指標(biāo)給出的性能。
表4 驗(yàn)證集和測(cè)試集上各項(xiàng)自動(dòng)評(píng)價(jià)結(jié)果
可以看到,多跳模型無論在驗(yàn)證集還是測(cè)試集上,各個(gè)自動(dòng)化指標(biāo)都有明顯的性能提升。這說明我們的模型通過編碼多跳數(shù)據(jù)的表示,能覆蓋更多人工描述中所用的詞匯,從而貼近人工描述的語言風(fēng)格,生成更流暢的句子。
在具體實(shí)現(xiàn)時(shí),由于多跳模型使用的數(shù)據(jù)源更大,引入的結(jié)構(gòu)化信息更多,詞匯表也不可避免地增大很多,兩種情形的模型不可混用。由于詞匯表一般由數(shù)據(jù)中的高頻詞構(gòu)成,其他詞匯作為未登錄詞統(tǒng)一看作一個(gè)符號(hào)。相比之下,訓(xùn)練數(shù)據(jù)的詞匯在多跳模型下未登錄詞比例會(huì)稍高一些。但即便如此,多跳模型依然在評(píng)價(jià)指標(biāo)上有大幅提升。這說明了人工編寫的實(shí)體描述的用詞確實(shí)更多地存在于多跳屬性值中。因此,要提升生成句子的流暢度,也就必須用到多跳數(shù)據(jù)。
具體地,BLEU值使用了生成句和標(biāo)準(zhǔn)句之間的n-gram重復(fù)出現(xiàn)數(shù)目進(jìn)行得分計(jì)算,ROUGE則基于兩者的最長公共子串進(jìn)行計(jì)算,它們都可以視為基于詞重疊的評(píng)價(jià)方法,在機(jī)器翻譯和文摘等任務(wù)中都有應(yīng)用。但是,在生成任務(wù)中,由于句子限制不多,各種多樣表達(dá)都可接受,因此基于詞重疊的評(píng)價(jià)結(jié)果與人工評(píng)價(jià)的結(jié)果之間相關(guān)性不強(qiáng)[26],需要人工介入評(píng)價(jià)。然而,對(duì)大量樣本做人工評(píng)價(jià)成本很高,是不實(shí)際的??紤]到BLEU和ROUGE等指標(biāo)的計(jì)算方法,當(dāng)詞重疊度相當(dāng)高時(shí),生成句已經(jīng)和標(biāo)準(zhǔn)句幾乎相同,可以認(rèn)為效果較好。
表5給出了一些多跳模型生成句子的例子,可以看到所有的標(biāo)準(zhǔn)句和生成句都較為接近。但是,生成句1給出了錯(cuò)誤的信息,即“奧地利國家圖書館”;生成句2也給出了錯(cuò)誤的信息,即“地鐵3號(hào)線”;而非正確的“2號(hào)線”。因此,多跳數(shù)據(jù)雖然能在一定程度一上提升流暢度,但是知識(shí)性的提升仍然有待進(jìn)一步研究。
表5 多跳模型生成樣例
續(xù)表
實(shí)體描述是知識(shí)庫或知識(shí)圖譜的重要組成部分,本文討論了自動(dòng)生成實(shí)體描述的必要性,并提出知識(shí)庫的多跳信息對(duì)于實(shí)體描述生成非常有益,可以提升句子的流暢度,并接近人工撰寫的實(shí)體描述。本文的實(shí)驗(yàn)則輔助證明了多跳信息的益處。
但是,由于自動(dòng)指標(biāo)的BLEU值本身只能衡量生成句子與標(biāo)準(zhǔn)句子之間的詞匯相似度,不一定能準(zhǔn)確體現(xiàn)句子流暢性。如何衡量句子的流暢性將其并用到模型訓(xùn)練中,依然是未來需要研究的問題。另一方面,實(shí)體描述的最終目的是滿足其功能效用。然而,神經(jīng)網(wǎng)絡(luò)模型的可解釋性不高,難以解釋為何會(huì)輸出這樣的句子,有時(shí)會(huì)與已知的三元組相矛盾。如何提升神經(jīng)網(wǎng)絡(luò)的準(zhǔn)確性,與模板或語法系統(tǒng)相結(jié)合,也是未來實(shí)體描述生成的一個(gè)研究方向。