張紫璇,陸佳民,姜 笑,馮 鈞
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院,江蘇 南京 211100)
大數(shù)據(jù)智能時(shí)代到來(lái),各行各業(yè)開(kāi)始向智能化轉(zhuǎn)型?,F(xiàn)有的系統(tǒng)中,通過(guò)關(guān)鍵字匹配進(jìn)行檢索水利工程對(duì)象的基本屬性信息得到的結(jié)果往往過(guò)于寬泛,需要人工排查和篩選,甚至?xí)玫脚c用戶實(shí)際需要不相符的信息[1]。為了更好地在水利數(shù)據(jù)中精確地查找數(shù)據(jù),本文設(shè)計(jì)并開(kāi)發(fā)面向水利信息資源的智能問(wèn)答系統(tǒng),實(shí)現(xiàn)用戶自然語(yǔ)言檢索水利工程對(duì)象屬性基本信息的功能。
在水利領(lǐng)域建立面向水利信息資源的智能問(wèn)答系統(tǒng),存在如下的問(wèn)題和難點(diǎn):
1)使用語(yǔ)義解析的方式完成智能問(wèn)答時(shí),用戶使用自然語(yǔ)言問(wèn)句進(jìn)行查詢,而查詢知識(shí)庫(kù)需要使用的是SPARQL結(jié)構(gòu)化查詢語(yǔ)言。這需要構(gòu)建一個(gè)問(wèn)答解析器,但這種方式依賴于手工定義的規(guī)則以及詞匯表等外部支撐,回答范圍具有局限性,而且需要多步操作,容易出錯(cuò),對(duì)檢索的準(zhǔn)確度也有很大影響[2]。
2)水利行業(yè)領(lǐng)域問(wèn)答語(yǔ)料稀少,獲取途徑不多,難以得到大規(guī)模領(lǐng)域語(yǔ)料。缺乏語(yǔ)料阻礙了水利智能化更上一層的腳步。
本文針對(duì)以上問(wèn)題展開(kāi)研究,在研究語(yǔ)義解析方法上,在現(xiàn)有的解析框架基礎(chǔ)上構(gòu)建問(wèn)答解析器,將自然語(yǔ)言問(wèn)句轉(zhuǎn)化成結(jié)構(gòu)化查詢語(yǔ)言。針對(duì)問(wèn)答準(zhǔn)確率不高的問(wèn)題,采用依存句法分析代替已有框架中的句法結(jié)構(gòu)分析,完成語(yǔ)義查詢圖的構(gòu)建,提高語(yǔ)義解析的準(zhǔn)確率。針對(duì)水利領(lǐng)域缺乏語(yǔ)料的問(wèn)題,本文使用語(yǔ)義解析的方法構(gòu)建問(wèn)答系統(tǒng),獲得一批問(wèn)答對(duì)語(yǔ)料,在此基礎(chǔ)上提出語(yǔ)料擴(kuò)展方法,構(gòu)建語(yǔ)料庫(kù)。
目前開(kāi)放領(lǐng)域內(nèi)智能問(wèn)答主要有語(yǔ)義解析法和信息抽取法。語(yǔ)義解析法對(duì)自然語(yǔ)言進(jìn)行語(yǔ)義上的分析,將問(wèn)句轉(zhuǎn)化成SPARQL查詢語(yǔ)言[3]。然后通過(guò)對(duì)應(yīng)的查詢語(yǔ)句檢索得到答案;信息抽取法重點(diǎn)是提取問(wèn)句中的實(shí)體,在知識(shí)圖譜中查詢到以這個(gè)實(shí)體為中心的子圖,這個(gè)子圖當(dāng)中的任意一個(gè)節(jié)點(diǎn)、邊都是候選答案。依據(jù)特定的模板,按規(guī)則進(jìn)行信息抽取,得到能夠表示問(wèn)句、候選答案特征的向量。建立分類器,依據(jù)輸入的特征向量對(duì)所有候選答案進(jìn)行篩選,得到最終答案。
Zou等[4]提出了一種方法將自然語(yǔ)言查詢語(yǔ)句直接轉(zhuǎn)換成語(yǔ)義查詢圖,使用語(yǔ)義查詢圖對(duì)自然語(yǔ)言問(wèn)題建模,然后利用子圖匹配的方法進(jìn)行問(wèn)答,將語(yǔ)義消歧和回答問(wèn)題這2個(gè)步驟結(jié)合在一起,利用部分子圖匹配的結(jié)果進(jìn)行聯(lián)合消歧,效果顯著。許坤等[5]設(shè)計(jì)了一套轉(zhuǎn)換框架將自然語(yǔ)言問(wèn)句轉(zhuǎn)化為結(jié)構(gòu)化查詢語(yǔ)句,主要分析句法分析樹(shù),構(gòu)造出查詢語(yǔ)義圖,對(duì)該圖中的詞語(yǔ)進(jìn)行消歧,最后轉(zhuǎn)換成SPARQL查詢語(yǔ)言,得到答案。針對(duì)生物領(lǐng)域內(nèi)實(shí)體的特殊性,為了提高檢索的召回率,Zheng等[6]采用語(yǔ)義相似SPARQL查詢的方法執(zhí)行知識(shí)圖譜的檢索。為了降低問(wèn)題理解的不確定性,Zheng等[7]又提出了一種集成用戶交互的方法來(lái)實(shí)現(xiàn)高效問(wèn)答。
Yao等[8]利用信息抽取法構(gòu)建問(wèn)答系統(tǒng),將知識(shí)圖譜看作是相互關(guān)聯(lián)的主題的集合。首先提取問(wèn)題中的問(wèn)題詞,然后使用依存分析將問(wèn)題轉(zhuǎn)化為語(yǔ)法結(jié)構(gòu)樹(shù),將那些對(duì)問(wèn)題不重要的特征刪除,確定出答案范圍,學(xué)習(xí)依賴結(jié)果和正確答案在知識(shí)圖譜上子圖的匹配模式。
本文借鑒文獻(xiàn)[6]中的解析框架,構(gòu)建符合水利領(lǐng)域需求的問(wèn)答解析器完成基于語(yǔ)義解析的智能問(wèn)答。為了提高問(wèn)句到結(jié)構(gòu)化查詢語(yǔ)言的轉(zhuǎn)化成功率,在語(yǔ)義解析框架基礎(chǔ)之上給出了構(gòu)建查詢圖的算法。針對(duì)水利領(lǐng)域,在關(guān)系消歧部分采用的是規(guī)則映射法與同義詞詞典法相結(jié)合的方法。
中文分詞是語(yǔ)義解析的第一步,作用是將問(wèn)句分解成單獨(dú)的、不同詞性的詞語(yǔ),為后續(xù)處理打下基礎(chǔ)[9]。本文對(duì)知識(shí)圖譜中存在的所有節(jié)點(diǎn)的節(jié)點(diǎn)名稱建立一個(gè)領(lǐng)域詞典,包含水利領(lǐng)域的實(shí)體名稱、屬性名稱。
依存分析的任務(wù)是生成表示整個(gè)句子的句法關(guān)系的依存樹(shù)[10]。本文采用HanLP基于神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的高性能依存句法分析器進(jìn)行依存句法分析。例如查詢問(wèn)句“新安江水庫(kù)的建成時(shí)間是?”,使用HanLP的依存句法分析函數(shù)之后,得到依存句法樹(shù)示例如圖1所示。
圖1 依存句法樹(shù)示例
語(yǔ)義查詢圖是通過(guò)依存分析得到的依存句法分析樹(shù)構(gòu)建的,將語(yǔ)義查詢圖中的2個(gè)相鄰節(jié)點(diǎn)及連接2節(jié)點(diǎn)的邊構(gòu)造出一個(gè)三元組,轉(zhuǎn)化成SPARQL結(jié)構(gòu)化查詢語(yǔ)句。語(yǔ)義查詢圖的構(gòu)建算法描述如算法1。
算法1 語(yǔ)義查詢圖構(gòu)建算法
輸入:依存分析結(jié)果中的詞性,依存關(guān)系對(duì)象C。輸出:有向圖(語(yǔ)義查詢圖)。1 for C do2 if(Ci是名詞)3 //添加到語(yǔ)義圖名詞性節(jié)點(diǎn)集合4 if(Ci是動(dòng)詞){5 //找到動(dòng)詞的主語(yǔ)賓語(yǔ)6 //向有向圖中添加邊長(zhǎng)和頂點(diǎn)7 }8 end for9 for C do10 if(Ci是名詞){11 //找出有修飾關(guān)系的名詞12 //構(gòu)建成有向圖13 }14 end for15 return有向圖
算法1主要分析依存句法分析樹(shù)中的名詞性節(jié)點(diǎn)和動(dòng)詞性節(jié)點(diǎn)C。如果Ci是名詞,則構(gòu)建名詞性節(jié)點(diǎn),如果名詞性節(jié)點(diǎn)之間存在修飾關(guān)系,則構(gòu)建一條從修飾詞到被修飾詞的邊,構(gòu)建成有向圖;如果Ci是動(dòng)詞,則以動(dòng)詞為核心,根據(jù)依存句法分析找到動(dòng)詞的主體和動(dòng)詞的客體,即它的主語(yǔ)和賓語(yǔ),構(gòu)成有向圖,即語(yǔ)義查詢圖。例如問(wèn)句“新安江水庫(kù)的建成時(shí)間是?”,構(gòu)建的語(yǔ)義查詢圖如圖2所示。
圖2 語(yǔ)義查詢圖
生成語(yǔ)義查詢圖后,初步大致清楚用戶的查詢意圖。據(jù)此可以將語(yǔ)義查詢圖中的節(jié)點(diǎn)和關(guān)系映射到知識(shí)圖譜中的標(biāo)準(zhǔn)表示名稱,從本質(zhì)上來(lái)講這是消歧問(wèn)題,通過(guò)消歧步驟可將用戶輸入的自然語(yǔ)言詞語(yǔ)映射到知識(shí)圖譜上的概念、實(shí)體或?qū)ο竺Q[11]。
1)概念與實(shí)體消歧。
本文對(duì)概念和實(shí)體進(jìn)行消歧使用的是同義詞詞典映射法。通過(guò)水利信息資源知識(shí)圖譜,在百度百科中找到對(duì)應(yīng)的實(shí)體或概念,從百度百科中描述這些詞語(yǔ)的infobox里使用這些詞語(yǔ)的別名作為同義詞。例如百度百科中“太湖”的頁(yè)面,整個(gè)頁(yè)面對(duì)“太湖”進(jìn)行了詳細(xì)的介紹。其中“太湖地處長(zhǎng)江三角洲的南緣,古稱具區(qū)、震澤,又名笠澤、五湖,是中國(guó)五大淡水湖之一”?!坝置焙竺娴摹拔搴薄绑覞伞笨梢猿槿椤疤钡耐x詞,在其他的頁(yè)面中可能是“常簡(jiǎn)稱”“又稱”,后有實(shí)體的同義詞。
抽取實(shí)體的文本信息,然后對(duì)概念和實(shí)體使用消歧模板抽取文本中的實(shí)體的同義詞。本文使用Java正則表達(dá)式來(lái)表示模板,可抽取常簡(jiǎn)稱、又稱、又名、俗稱、古稱、原名、也叫這些詞后面的詞語(yǔ),并且分割中間出現(xiàn)“、”和“或”的詞語(yǔ)。例如上面“太湖”的例子中“古稱具區(qū)、震澤,又名笠澤、五湖”,可抽取出“具區(qū)”“震澤”“笠澤”“五湖”4個(gè)詞語(yǔ)。Infobox信息抽取概念或?qū)嶓w的“別名”屬性,將其屬性值抽取為實(shí)體的同義詞。最后將這些同義詞存放到同一個(gè)組里來(lái)表述這同一個(gè)詞。表1所示為部分實(shí)體同義詞詞典。
表1 實(shí)體同義詞詞典
實(shí)體同義詞太湖具區(qū)、震澤、笠澤、五湖三峽樞紐水庫(kù)主壩三峽大壩、三峽工程洪湖水鄉(xiāng)、漢江明珠新安江水庫(kù)千島湖
2)關(guān)系消歧。
本文對(duì)關(guān)系消歧采用的是規(guī)則映射法與同義詞詞典法相結(jié)合的方法。關(guān)系消歧時(shí),首先將詞語(yǔ)與規(guī)則映射表相匹配,如果在規(guī)則映射表中找到可匹配的規(guī)則,則將其替換完成消歧。如果在規(guī)則映射表中沒(méi)有匹配到合適的規(guī)則,則與同義詞詞典對(duì)照,詞典中記錄該詞,則將其替換完成消歧。
對(duì)于規(guī)則映射法,有些關(guān)系是由多個(gè)詞共同表達(dá)的,如問(wèn)句“新安江水庫(kù)什么時(shí)候建成的”,“什么時(shí)候”后面接一個(gè)動(dòng)詞,可將其映射為動(dòng)詞+(時(shí)間|日期),這樣就可以映射成“建成時(shí)間”或者“建成日期”,表2中列出了規(guī)則映射表。
表2 規(guī)則映射表
規(guī)則名稱關(guān)系映射什么時(shí)候.*?/vV+時(shí)間|日期歸|歸屬|(zhì)屬于.*?/n管理在|坐落于|處在.*?/n位于
問(wèn)句中還有一些關(guān)系是以同義詞的形式出現(xiàn)的,例如提問(wèn)“青海湖在哪里?”這個(gè)問(wèn)題時(shí),人們想問(wèn)的是“青海湖的所在位置”,這時(shí)候根據(jù)同義詞詞典將“在哪里”替換為“所在位置”。表3展示了部分關(guān)系同義詞。
表3 關(guān)系同義詞表
問(wèn)句中的詞匯同義詞哪一類類型多大面積|壩高|庫(kù)容|水深在哪里所在位置
到知識(shí)圖譜中查詢并返回答案是基于語(yǔ)義解析的問(wèn)答的最后一步。這一過(guò)程分為2步:一是根據(jù)用戶語(yǔ)義查詢圖生成SPARQL查詢語(yǔ)句,即生成一系列的Triple Pattern;二是根據(jù)生成的Triple Pattern到知識(shí)圖譜中查詢并返回答案。
“新安江水庫(kù)的建成時(shí)間是?”SPARQL的查詢語(yǔ)句,如圖3所示。
1 SELECT *2 FROM http://www.w3.org/WIBP_ZYML/CLASSMODLE#3 WHERE {4
圖3 SPARQL查詢語(yǔ)句樣例
基于以上的研究,在限制語(yǔ)料的情況下,問(wèn)答的性能不夠完善,主要表現(xiàn)在問(wèn)答范圍有限,回答準(zhǔn)確率不夠高。
基于表示學(xué)習(xí)的方法不是基于邏輯符號(hào)的,也不需要借助詞匯映射表等的外部支撐,靈活性高,性能表現(xiàn)比傳統(tǒng)問(wèn)答方式更好,但是基于表示學(xué)習(xí)的問(wèn)答模型需要大量數(shù)據(jù)進(jìn)行訓(xùn)練。水利領(lǐng)域缺乏一定規(guī)模的問(wèn)答語(yǔ)料,水利領(lǐng)域?qū)I(yè)性強(qiáng),獲取途徑不多,語(yǔ)料匱乏,無(wú)法獲得一定規(guī)模的專用語(yǔ)料。所以本文設(shè)計(jì)面向表示學(xué)習(xí)的問(wèn)答語(yǔ)料擴(kuò)充機(jī)制。
圖4是語(yǔ)料擴(kuò)充機(jī)制的流程:
首先,使用語(yǔ)義解析方法完成問(wèn)答。水利用戶根據(jù)自己的需求提出問(wèn)題,基于第1章所述的語(yǔ)義解析方法,系統(tǒng)返回答案。其次,將用戶使用上述基于語(yǔ)義解析的問(wèn)答系統(tǒng)提出的問(wèn)題、系統(tǒng)返回的答案以及用戶對(duì)該問(wèn)題答案的反饋記錄在日志中。這種方法主要是跟蹤用戶的行為,收集用戶對(duì)該問(wèn)題答案的修正,利用信息反饋機(jī)制,過(guò)濾無(wú)用信息進(jìn)行二次檢索。然后分析日志獲得問(wèn)答語(yǔ)料。雖然可以收集到一定數(shù)目的問(wèn)答對(duì),但還是不足以訓(xùn)練表示學(xué)習(xí)問(wèn)答模型。所以本文在收集到的語(yǔ)料基礎(chǔ)之上提出語(yǔ)料擴(kuò)充方法,對(duì)語(yǔ)料進(jìn)行擴(kuò)充,最終構(gòu)建成能夠用于表示學(xué)習(xí)問(wèn)答訓(xùn)練的水利領(lǐng)域語(yǔ)料庫(kù)。
圖4 語(yǔ)料擴(kuò)充步驟
1)基于語(yǔ)義解析的問(wèn)答。
首先使用第1章基于語(yǔ)義解析的方式完成問(wèn)答,將問(wèn)答構(gòu)建在水利信息資源管理系統(tǒng)上。圖5描述了用戶使用基于語(yǔ)義解析的問(wèn)答系統(tǒng)進(jìn)行提問(wèn)、反饋等行為的流程圖:
圖5 用戶問(wèn)答行為流程圖
用戶輸入自己想要查詢的問(wèn)題,點(diǎn)擊語(yǔ)義解析QA,系統(tǒng)返回從知識(shí)圖譜中查詢到的答案。用戶以自身的水利知識(shí)對(duì)給出的答案作出顯式反饋,即直接給出“滿意”或“不滿意”。
2)日志記錄。
日志是用戶行為的重要載體[12],其中包含了用戶進(jìn)行問(wèn)答時(shí)的搜索行為、反饋行為等。現(xiàn)在常用的日志框架有SLF4j、Log4j、Log4j2、Logback、jboss-loggin等。本文在系統(tǒng)中使用日志門面SLF4j與日志實(shí)現(xiàn)Logback配套的日志管理。日志中包含用戶的個(gè)人信息、瀏覽資源名稱、URL地址等,還包含了系統(tǒng)運(yùn)行過(guò)程中產(chǎn)生的錯(cuò)誤信息/運(yùn)行狀態(tài)等。對(duì)于用戶的問(wèn)答行為,本文在前臺(tái)交互頁(yè)面上使用js埋點(diǎn)技術(shù)獲取。
3)分析日志獲取語(yǔ)料。
與知識(shí)圖譜推薦中關(guān)注單獨(dú)用戶行為不同,本文針對(duì)的是所有用戶的所有問(wèn)答數(shù)據(jù),對(duì)日志進(jìn)行過(guò)濾篩選,提取出用戶的行為數(shù)據(jù)。日志中存儲(chǔ)的信息數(shù)據(jù),包含了豐富的用戶對(duì)結(jié)果的滿意度信息。本文使用公式(1)計(jì)算用戶對(duì)問(wèn)題答案的滿意分?jǐn)?shù):
(1)
其中,Score表示分?jǐn)?shù),顯示反饋對(duì)答案進(jìn)行投票,分為“滿意”和“不滿意”。Qscore表示顯示反饋中“正確(滿意)”票數(shù)與“錯(cuò)誤(不滿意)”票數(shù)的差額,加1是為了避免現(xiàn)實(shí)情況下大部分用戶不會(huì)參與到反饋中。Qclick是某一問(wèn)題下某一答案的點(diǎn)擊次數(shù),Qclicks是某一問(wèn)題下的點(diǎn)擊總次數(shù),α、β是所占的權(quán)重。
本系統(tǒng)經(jīng)過(guò)2018年9月—2019年1月共計(jì)5個(gè)月的測(cè)試使用,從日志中得到的問(wèn)答對(duì)共計(jì)370條。獲得的部分問(wèn)答對(duì)語(yǔ)料數(shù)據(jù)如表4所示。
表4 問(wèn)答語(yǔ)料集
問(wèn)句Q回答A幸福水庫(kù)是什么類型?(幸福水庫(kù),水庫(kù)類型,山丘水庫(kù))張街村的上級(jí)行政單位是?(張街村,上級(jí)行政單位,楊屯鎮(zhèn))潤(rùn)松河多長(zhǎng)?(潤(rùn)松河,河流長(zhǎng)度,32)新安江水庫(kù)什么時(shí)候建成?(新安江水庫(kù),建成時(shí)間,1965/12/01)黑龍江是幾級(jí)?(黑龍江流域,流域分區(qū)等級(jí),一級(jí)流域)
4)語(yǔ)料擴(kuò)充。
已收集到了一些問(wèn)答對(duì)語(yǔ)料,但這些數(shù)據(jù)規(guī)模較小。本文要使用的文獻(xiàn)[10]中的問(wèn)答模型的實(shí)驗(yàn)數(shù)據(jù)集為人工構(gòu)建,是標(biāo)準(zhǔn)地以(h,r,t)為基礎(chǔ),人為設(shè)定種子問(wèn)題,將三元組映射成自然語(yǔ)言問(wèn)題,然后進(jìn)行訓(xùn)練。本文參考這種思路,在收集到的真實(shí)數(shù)據(jù)基礎(chǔ)上給出擴(kuò)充算法2來(lái)擴(kuò)充語(yǔ)料集。
為了便于表述,本文使用O表示概念,Oe表示實(shí)體e所屬的概念。問(wèn)答對(duì)S={(qi,ai),i=1,2,…,|S|},是由(q,a),即(問(wèn)題、答案)對(duì)組成,其中a為三元組(h,r,t)。
算法2的主要思想是:首先遍歷所有已有語(yǔ)料集中的問(wèn)答對(duì)。取出一對(duì)問(wèn)答對(duì),取出問(wèn)答對(duì)中答案三元組(hi,ri,ti)所對(duì)應(yīng)的頭實(shí)體hi,找到實(shí)體hi所屬于的概念Ohi,然后查詢出該概念下的所有實(shí)體Oe,從Oe中取出10個(gè)實(shí)體ej,根據(jù)實(shí)體ej和關(guān)系ri查詢出tj,用hj、tj取代原來(lái)問(wèn)題,答案中的位置,形成新的問(wèn)答對(duì)。
算法2 問(wèn)答語(yǔ)料擴(kuò)充算法
輸入:問(wèn)答對(duì)集S1。輸出:擴(kuò)充后的問(wèn)答對(duì)集S2。1 for si si∈S1(si=(qi,ai),ai=(hi,ri,ti)) do2 在WaterKG中查詢出hi所屬的概念Ohi3 查詢出概念Ohi下所有實(shí)體的集合Oe4 任取Oe下的10個(gè)實(shí)體ej(1≤j≤10),ej≠hi5 for j do6 在WaterKG中查出ej、rj對(duì)應(yīng)的tj值7 將原問(wèn)題、答案對(duì)中hi、ri、ti中的hi、ti換成ej、tj8 構(gòu)成新的問(wèn)答對(duì)9 end for10 end for
通過(guò)上述算法,最終得到擴(kuò)充后的語(yǔ)料庫(kù),共計(jì)4000余條。問(wèn)答語(yǔ)料庫(kù)部分?jǐn)?shù)據(jù)展示如表5所示。
表5 擴(kuò)充后的問(wèn)答語(yǔ)料庫(kù)
問(wèn)句Q回答A幸福水庫(kù)是什么類型?(幸福水庫(kù),水庫(kù)類型,山丘水庫(kù))樹(shù)山水庫(kù)是什么類型?(樹(shù)山水庫(kù),水庫(kù)類型,平原水庫(kù))曹家山水庫(kù)是什么類型?(曹家山水庫(kù),水庫(kù)類型,山丘水庫(kù))潤(rùn)松河多長(zhǎng)?(潤(rùn)松河,河流長(zhǎng)度,32)金水河多長(zhǎng)?(金水河,河流長(zhǎng)度,18)內(nèi)城河多長(zhǎng)?(內(nèi)城河,河流長(zhǎng)度,12)黑龍江是幾級(jí)?(黑龍江流域,流域分區(qū)等級(jí),一級(jí)流域)哈巴河是幾級(jí)?(哈巴河,流域分區(qū)等級(jí),三級(jí)流域)盤龍江是幾級(jí)?(盤龍江,流域分區(qū)等級(jí),三級(jí)流域)
本文使用Bordes[13]等提出的基于嵌入的問(wèn)答模型,通過(guò)水利領(lǐng)域語(yǔ)料訓(xùn)練,構(gòu)建了水利問(wèn)答模型框架,通過(guò)訓(xùn)練該模型,完成基于表示學(xué)習(xí)的適用于水利行業(yè)的問(wèn)答系統(tǒng)。
基于表示學(xué)習(xí)的問(wèn)答模型[13]框架如圖6所示。
圖6 基于表示學(xué)習(xí)的問(wèn)答模型框架圖
首先,將知識(shí)圖譜中的實(shí)體、關(guān)系與問(wèn)句輸入到模型算法訓(xùn)練代碼中,學(xué)習(xí)知識(shí)圖譜中三元組與問(wèn)題中的詞語(yǔ)的低維向量嵌入,使得問(wèn)題和相應(yīng)的答案的向量在低維空間是相似的[14]。輸出知識(shí)圖譜中的實(shí)體關(guān)系向量表示和問(wèn)句中的詞語(yǔ)的向量表示。對(duì)于問(wèn)題的回答,將問(wèn)句以及所得的向量表示輸入到模型算法測(cè)試代碼中,得到問(wèn)題的答案。
1)S(·)函數(shù)。整個(gè)模型涉及一個(gè)函數(shù)S(q,a)的學(xué)習(xí),該函數(shù)是對(duì)一個(gè)問(wèn)題和一個(gè)三元組的相似性進(jìn)行評(píng)分,得分函數(shù)如式(2):
S(q,a)=f(q)Tg(a)
(2)
2)f(q)函數(shù)。f(q)是將問(wèn)題映射到低維向量空間的函數(shù)。采用詞袋模型來(lái)表示,對(duì)于問(wèn)題q,如(新安江水庫(kù),建成時(shí)間,什么時(shí)候?)中的每個(gè)詞語(yǔ)分別嵌入到k維的向量空間,然后將這些詞向量累加求和。問(wèn)題的分布式表達(dá)f(q)為公式(3):
f(q)=VTφ(q)
(3)
其中,q代表問(wèn)題,φ(q)代表nV維的問(wèn)題向量,是q的稀疏二進(jìn)制表示(∈{0,1}nV),表示詞語(yǔ)是否存在。詞向量矩陣V包含了所有詞語(yǔ)的向量表示,大小為RnV×k,表示用矩陣V將nV維的問(wèn)題向量映射到k維的低維空間。
3)g(a)函數(shù)。g(a)函數(shù)是將實(shí)體和關(guān)系映射到低維向量空間中的函數(shù),采用與問(wèn)題部分相同的詞袋模型來(lái)表示。公式(4)為答案分布式表達(dá):
g(a)=WTψ(a)
(4)
其中,ψ(a)表示ne維的答案輸入向量,是知識(shí)圖譜三元組的稀疏二進(jìn)制表示(∈{0,1}ne),表示實(shí)體和關(guān)系是否存在。詞向量矩陣W包含了所有的實(shí)體、關(guān)系的向量表示,大小為Rne×k,表示用矩陣W將ne維的答案向量映射到k維的低維空間。
對(duì)于知識(shí)圖譜全集T,給定問(wèn)題q,可以鏈接預(yù)測(cè)到它相應(yīng)的答案a′,即分值S(·)最高的答案,如公式(5)所示:
(5)
面向水利信息資源智能問(wèn)答系統(tǒng)主要包括:基于語(yǔ)義解析的問(wèn)答、語(yǔ)料收集、基于表示學(xué)習(xí)的問(wèn)答等核心功能。其總體架構(gòu)圖如圖7所示。
圖7 整體架構(gòu)圖
該系統(tǒng)采用B/S架構(gòu),包括線上、線下2個(gè)部分。線上主要是用戶輸入問(wèn)題,使用基于語(yǔ)義解析的問(wèn)答方法或基于表示學(xué)習(xí)的問(wèn)答方法,系統(tǒng)返回結(jié)果并展示,用戶對(duì)該問(wèn)題所返回的答案的反饋行為記錄到日志中。線下主要是對(duì)語(yǔ)料的收集,處理日志,抽取問(wèn)答對(duì)和用戶行為反饋,擴(kuò)充問(wèn)答語(yǔ)料,構(gòu)建成問(wèn)答語(yǔ)料庫(kù)。然后使用語(yǔ)料庫(kù)訓(xùn)練基于表示學(xué)習(xí)的問(wèn)答模型,該模型為線上基于表示學(xué)習(xí)的問(wèn)答服務(wù)。
面向水利信息資源的智能問(wèn)答系統(tǒng)包括3個(gè)主要模塊(如圖8所示):基于語(yǔ)義解析的問(wèn)答模塊、語(yǔ)料收集模塊、基于表示學(xué)習(xí)的問(wèn)答模塊。
圖8 系統(tǒng)模塊圖
基于語(yǔ)義解析的問(wèn)答模塊得到用戶所提問(wèn)題的答案。語(yǔ)料收集模塊包括用戶查詢問(wèn)句,得到答案,用戶的反饋,用戶的點(diǎn)擊行為記錄在日志里,從日志中提取出問(wèn)答數(shù)據(jù),構(gòu)成問(wèn)答對(duì),得到語(yǔ)料集,經(jīng)過(guò)語(yǔ)料擴(kuò)充后構(gòu)建成語(yǔ)料庫(kù)?;诒硎緦W(xué)習(xí)的問(wèn)答模塊依賴于基于語(yǔ)義解析的問(wèn)答模塊與語(yǔ)料收集模塊。根據(jù)語(yǔ)料收集模塊中最終構(gòu)建的語(yǔ)料庫(kù),訓(xùn)練基于表示學(xué)習(xí)的問(wèn)答模型,訓(xùn)練完成后使用該模型提供智能問(wèn)答功能。
面向水利信息資源的智能問(wèn)答系統(tǒng)實(shí)現(xiàn)了自動(dòng)回答用戶自然語(yǔ)句提問(wèn)的問(wèn)題。圖9給出使用語(yǔ)義解析方法對(duì)問(wèn)句“劉家峽水庫(kù)有多高?”作出回答的界面。圖10給出基于表示學(xué)習(xí)方法對(duì)該問(wèn)句的回答。
圖9 基于語(yǔ)義解析的回答頁(yè)面
圖10 基于表示學(xué)習(xí)的回答頁(yè)面
本文研究了面向水利信息資源,基于知識(shí)圖譜、語(yǔ)義解析和表示學(xué)習(xí)的智能問(wèn)答,雖然取得了一定的成果,能夠很好地滿足目前的需求,但是從長(zhǎng)遠(yuǎn)的發(fā)展眼光來(lái)看,仍然有很多需要拓展和改進(jìn)的地方,需要在以下幾點(diǎn)繼續(xù)深入研究:
首先,缺乏質(zhì)量較高的問(wèn)答對(duì)或結(jié)構(gòu)化的水利行業(yè)數(shù)據(jù)集。本文中日志收集的過(guò)程能夠收集到一定的問(wèn)答語(yǔ)料對(duì),這些問(wèn)題來(lái)自水利行業(yè)從業(yè)者,質(zhì)量有所保證,能夠滿足研究使用,但數(shù)據(jù)集的規(guī)模太小,問(wèn)題種類也不夠豐富。
其次,在語(yǔ)義解析的問(wèn)答過(guò)程中,用戶輸入的問(wèn)句中的詞語(yǔ)很難和知識(shí)圖譜中的詞語(yǔ)形成映射,在分析沒(méi)有回答出問(wèn)題或者回答錯(cuò)誤的案例時(shí)發(fā)現(xiàn),大部分錯(cuò)誤都是因?yàn)閷?shí)體關(guān)系消歧。
最后,基于表示學(xué)習(xí)的問(wèn)答模型并不十分理想,存在一定的局限性。未來(lái)可以在答案端將答案的路徑的向量表示,與答案相關(guān)的知識(shí)圖譜子圖的實(shí)體和關(guān)系的向量表示,答案類型或者上下文相關(guān)度融合進(jìn)來(lái),以提升問(wèn)答效果。