劉園園 李勁華 趙俊莉
(青島大學(xué)數(shù)據(jù)科學(xué)與軟件工程學(xué)院 山東 青島 266071)
問答系統(tǒng)由于具有簡(jiǎn)單、準(zhǔn)確的回答而越來越成為自然語(yǔ)言處理、信息檢索等領(lǐng)域研究的重點(diǎn),與傳統(tǒng)的搜索引擎相比,問答系統(tǒng)不僅能接受用戶直接的自然語(yǔ)言方式提問,而且能夠更深層次地理解用戶的查詢意圖,返回精準(zhǔn)的答案。
中國(guó)每年參加高考的學(xué)生越來越多,高考結(jié)束后所有考生都將面臨艱難的志愿選擇問題,學(xué)生需要在有限的時(shí)間內(nèi)充分地了解學(xué)校信息、選擇合適的學(xué)校,一旦報(bào)名時(shí)選擇有誤,就可能會(huì)與理想的學(xué)校失之交臂,因此,能夠快速、準(zhǔn)確地了解學(xué)校信息非常重要。目前對(duì)學(xué)校基本信息的查詢主要是基于搜索引擎,但是這種方式返回的是成百上千的網(wǎng)頁(yè),學(xué)生從中定位到所需要的信息需要耗費(fèi)大量精力,而且每查詢一個(gè)學(xué)校的信息都需要進(jìn)行一次網(wǎng)頁(yè)檢索,做出很多無(wú)用功,另外單個(gè)學(xué)校的搜索也無(wú)法實(shí)現(xiàn)對(duì)學(xué)校信息整合、比較。因此研究并開發(fā)一款面向考生的、綜合各學(xué)校信息的高考咨詢領(lǐng)域的智能問答系統(tǒng),具有現(xiàn)實(shí)意義且十分必要。
問答系統(tǒng)按其問題答案的來源可以分為基于Web的問答系統(tǒng)[1]、基于社區(qū)的問答系統(tǒng)[2]、基于知識(shí)圖譜的問答系統(tǒng)[3]等。知識(shí)圖譜能夠通過建立數(shù)據(jù)之間的關(guān)聯(lián)鏈接,將碎片化的數(shù)據(jù)有機(jī)地組織起來,更易于信息的搜索、挖掘和分析[4],因此成為問答系統(tǒng)常用的數(shù)據(jù)存儲(chǔ)形式。
基于知識(shí)圖譜的問答方法(KBQA)主要分為基于語(yǔ)義解析[5]的方法和基于信息檢索[6]的方法?;谡Z(yǔ)義解析的方法通過對(duì)自然語(yǔ)言進(jìn)行語(yǔ)義解析,將其轉(zhuǎn)換成邏輯形式,然后生成相應(yīng)的結(jié)構(gòu)化查詢語(yǔ)句,在知識(shí)庫(kù)中檢索得出答案?;谛畔z索的方法可以看作是答案的排序算法,從知識(shí)庫(kù)中檢索候選答案的集合,根據(jù)問題特征和候選答案特征對(duì)候選答案進(jìn)行評(píng)分和排序,選擇得分最高的作為最終答案。
現(xiàn)有的KBQA方法大多集中在簡(jiǎn)單的問題上,即僅涉及一個(gè)實(shí)體和一個(gè)關(guān)系,常見的解決方法是將問題映射到知識(shí)圖譜中的三元組查詢,即能得到答案;而涉及多個(gè)實(shí)體和關(guān)系的復(fù)雜問句,一般的KBQA方法則不能很好的工作[7]。高考咨詢領(lǐng)域的問句大多是含有多實(shí)體或關(guān)系的復(fù)雜問句,如問句“山東省排名第一的大學(xué)是哪個(gè)?”中就包含多個(gè)約束:1) 問句意圖是學(xué)校;2) 學(xué)校位于山東??;3) 學(xué)校排名第一。因此,為了能回答多約束問題, 本文設(shè)計(jì)一個(gè)基于語(yǔ)義解析的問答模型,首先通過主題實(shí)體和查詢意圖生成核心推理鏈,然后通過添加約束生成最終的查詢圖,從而將語(yǔ)義解析轉(zhuǎn)化為查詢圖生成,最后將查詢圖轉(zhuǎn)換為知識(shí)庫(kù)查詢語(yǔ)句。
知識(shí)圖譜是一種新的知識(shí)表示方法,最先由谷歌提出以提供更加智能的搜索服務(wù)。知識(shí)圖譜本質(zhì)是具有一個(gè)有向圖結(jié)構(gòu)的知識(shí)庫(kù),以結(jié)構(gòu)化的方式描述了現(xiàn)實(shí)世界中存在的實(shí)體、概念,以及它們之間的語(yǔ)義關(guān)系,以更好地組織、管理和理解互聯(lián)網(wǎng)時(shí)代產(chǎn)生的海量信息[8]。目前知識(shí)圖譜已經(jīng)在醫(yī)學(xué)[9]、電商[10]等多個(gè)領(lǐng)域得到廣泛研究。
知識(shí)圖譜的構(gòu)建方式有兩種,一種是自頂向下的構(gòu)建方式,一種是自底向上的構(gòu)建方式。前者指的是預(yù)先為知識(shí)庫(kù)定義好本體或數(shù)據(jù)模式,然后再將實(shí)體加入到知識(shí)庫(kù)中;后者指的是先利用相關(guān)技術(shù)把文本中的有用實(shí)體提取出來,從中選擇置信度較高的添加到知識(shí)庫(kù)中,從而構(gòu)建出頂層本體模式[11]。本文高校信息知識(shí)圖譜的構(gòu)建大體分為三個(gè)步驟:1) 設(shè)計(jì)知識(shí)圖譜本體;2) 采集數(shù)據(jù);3) 數(shù)據(jù)導(dǎo)入與可視化。構(gòu)建流程如圖1所示。
圖1 知識(shí)圖譜構(gòu)建流程
構(gòu)建知識(shí)圖譜之前要了解構(gòu)建的領(lǐng)域,然后設(shè)計(jì)知識(shí)圖譜的結(jié)構(gòu)。為了能了解到學(xué)生在高考報(bào)名時(shí)最常咨詢的信息,本文在一些大學(xué)的貼吧、高考咨詢類網(wǎng)站等收集相關(guān)的問句,對(duì)其進(jìn)行整理分類,可以了解到,學(xué)生想要知道的信息大體分為三種情況:1) 學(xué)校基本信息。如地址、排名、是否是985、獎(jiǎng)學(xué)金政策、宿舍環(huán)境等。2) 學(xué)院信息。如招生計(jì)劃、學(xué)院特色、招生專業(yè)等。3) 專業(yè)信息。包括未來就業(yè)方向、所學(xué)課程、錄取分?jǐn)?shù)等。
知識(shí)圖譜包括實(shí)體、屬性和關(guān)系,一些信息點(diǎn)既可以作為實(shí)體存儲(chǔ),也可以作為實(shí)體的屬性存儲(chǔ),為了有效地劃分實(shí)體和屬性,本文首先列舉出所有的信息點(diǎn),然后把其中與其他實(shí)體有聯(lián)系的、易成為比較點(diǎn)的、易反向詢問的、帶有屬性的信息點(diǎn)歸為實(shí)體類,其他的歸為屬性類。如“專業(yè)的錄取分?jǐn)?shù)”這個(gè)信息點(diǎn)由于具有錄取時(shí)間、錄取省份和錄取類別等多個(gè)屬性,因此不能作為“專業(yè)”這個(gè)信息點(diǎn)的屬性,而是作為一個(gè)單獨(dú)的節(jié)點(diǎn),與“專業(yè)”節(jié)點(diǎn)建立聯(lián)系;而如“學(xué)校地址”這個(gè)信息點(diǎn)由于是學(xué)校單獨(dú)有的,而且各個(gè)學(xué)校的地址都不相同,不太可能與其他實(shí)體相連,因此,將其劃分為屬性。
為了能更清晰地了解各個(gè)實(shí)體之間的聯(lián)系,本文選用protege構(gòu)建高校知識(shí)圖譜的本體模型。如圖2所示,共構(gòu)建了12個(gè)實(shí)體,14種關(guān)系,每個(gè)實(shí)體有不同的屬性。
圖2 高校信息知識(shí)圖譜本體
構(gòu)建完本體之后,下一步就是數(shù)據(jù)的獲取,本文主要通過Python爬蟲的方式獲取數(shù)據(jù),主要數(shù)據(jù)來源如下: 學(xué)校的基本信息從百度百科等半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行爬?。辉合翟O(shè)置、專業(yè)錄取分?jǐn)?shù)線和招生計(jì)劃等從各學(xué)校官網(wǎng)和中國(guó)教育在線-高考數(shù)據(jù)庫(kù)網(wǎng)站獲取;學(xué)校排名、院校特性和宿舍條件等從陽(yáng)光高考網(wǎng)站進(jìn)行獲取。陽(yáng)光高考網(wǎng)站是教育部高校招生陽(yáng)光工程指定平臺(tái),集合了一些院校信息、就業(yè)率、錄取分?jǐn)?shù)線等信息,爬取的部分信息如圖3所示。另外還有一部分?jǐn)?shù)據(jù)來自于中文開放知識(shí)圖譜CN-DBpedia。
圖3 基于陽(yáng)光高考網(wǎng)站爬取的數(shù)據(jù)示例
知識(shí)圖譜的存儲(chǔ)可以分為基于表結(jié)構(gòu)的存儲(chǔ)和基于圖結(jié)構(gòu)的存儲(chǔ),基于圖結(jié)構(gòu)的存儲(chǔ)用節(jié)點(diǎn)表示實(shí)體,用邊表示實(shí)體之間的關(guān)系,能夠直接準(zhǔn)確反映知識(shí)圖譜的內(nèi)部結(jié)構(gòu),有利于對(duì)知識(shí)的查詢。本文采用屬性圖數(shù)據(jù)庫(kù)Neo4j進(jìn)行知識(shí)存儲(chǔ),為實(shí)現(xiàn)高考咨詢領(lǐng)域的問答系統(tǒng)提供底層的數(shù)據(jù)支持。
Neo4j是目前最廣泛流行的屬性圖數(shù)據(jù)庫(kù),具有成熟數(shù)據(jù)庫(kù)的所有特性,能夠?qū)?shù)據(jù)進(jìn)行高效的處理。另外,Neo4j還支持以圖的方式對(duì)數(shù)據(jù)進(jìn)行可視化展示。Neo4j自帶一個(gè)大數(shù)據(jù)量的導(dǎo)入工具neo4j-import,支持并行、可擴(kuò)展地大規(guī)模導(dǎo)入CSV數(shù)據(jù),導(dǎo)入的CSV文件一般至少包含一個(gè)實(shí)體文件和一個(gè)關(guān)系文件。實(shí)體文件的格式一般包括“:ID”“name”“:LABEL”等欄,關(guān)系文件的格式包括“:START_ID”“:END_ID”“name”“:TYPE”等欄,其中“:LABEL”和“:TYPE”分別代表實(shí)體的類型和關(guān)系的類型,“:START_ID”和“:END_ID”分別是關(guān)系中開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)的ID,二者缺一不可,因?yàn)殛P(guān)系不能指向空也不能從空發(fā)起。本文將爬取的信息數(shù)據(jù)轉(zhuǎn)換成以上的CSV文件,然后進(jìn)行數(shù)據(jù)導(dǎo)入。導(dǎo)入后的可視化效果如圖4所示,單擊節(jié)點(diǎn)可以看到該節(jié)點(diǎn)的屬性,有向邊代表兩個(gè)實(shí)體的關(guān)系,為了方便查詢,本文將一些時(shí)間、省份等屬性添加到關(guān)系中,如圖5所示。
圖4 知識(shí)圖譜的可視化展示
圖5 知識(shí)圖譜中關(guān)系的屬性展示
本文主要采用基于語(yǔ)義解析的方法實(shí)現(xiàn)問答系統(tǒng),通過添加約束到核心推理鏈[12]以生成查詢圖,然后將查詢圖映射成Cypher語(yǔ)句。采用的方法如下:1) 識(shí)別問句意圖以生成答案節(jié)點(diǎn)。2) 將問句進(jìn)行實(shí)體識(shí)別并提取出主題實(shí)體。3) 根據(jù)問句類別和主題實(shí)體生成核心推理鏈,并通過相似度計(jì)算模型對(duì)其進(jìn)行質(zhì)量評(píng)估。4) 對(duì)每條核心推理鏈添加約束,生成查詢圖,對(duì)生成的查詢圖再次進(jìn)行相似度計(jì)算,并得到最終的得分。5) 將得分最高的查詢圖轉(zhuǎn)換為Cypher查詢語(yǔ)句,到知識(shí)庫(kù)中檢索答案返回給用戶。其架構(gòu)如圖6所示。
圖6 問答系統(tǒng)流程
意圖分類的目的是知道用戶的查詢意圖,即最終要返回給用戶的節(jié)點(diǎn)類型。例如,當(dāng)意圖分類的結(jié)果是“專業(yè)”,那么也就知道最終返回給用戶的實(shí)體必須屬于“專業(yè)”類型;當(dāng)意圖分類的結(jié)果是“學(xué)校-屬性”,那么就知道答案節(jié)點(diǎn)是“學(xué)校”類型,且詢問的是其某個(gè)屬性,因此,將答案節(jié)點(diǎn)限制為學(xué)校類型,并且通過“RETURN 學(xué)校.屬性”的方式返回給用戶所想要的答案。
本文定義分類的類別包括所構(gòu)建的本體中的所有實(shí)體類型(12種)、實(shí)體-屬性類型(5種)、關(guān)系類共18個(gè)類別。實(shí)體-屬性類型是指詢問的不是某個(gè)實(shí)體本身,而是實(shí)體的某個(gè)屬性,如問句“青島大學(xué)文學(xué)院在哪”的類別就屬于“學(xué)院-屬性”類,實(shí)體-屬性類只有5種是因?yàn)橐恍?shí)體類型如“省份”沒有給其設(shè)置屬性。關(guān)系類是指詢問兩個(gè)實(shí)體之間的關(guān)系,如“青島大學(xué)是985高校嗎”就屬于關(guān)系類。
意圖分類是本文問答系統(tǒng)的關(guān)鍵環(huán)節(jié),其準(zhǔn)確率較大地影響到問答系統(tǒng)的準(zhǔn)確率,經(jīng)過多種分類器的實(shí)驗(yàn)比較,本文選擇BERT[13]微調(diào)模型用于本文的問句分類。微調(diào)模型如圖7所示,將句子的每個(gè)字分割成一個(gè)token,即圖7中的Toki,BERT的輸入是Toki對(duì)應(yīng)的表征Ei,然后通過堆疊的Transform編碼器生成字向量Ti,由于句子頭部的[CLS]對(duì)應(yīng)的向量C包含了整個(gè)句子的語(yǔ)義信息,因此被送到輸出層用于分類。
圖7 BERT分類微調(diào)模型
主題實(shí)體是問句查詢的核心實(shí)體。大多數(shù)問題的答案都與核心實(shí)體有著直接或間接的聯(lián)系,因此只需要找到一個(gè)核心實(shí)體,然后通過邊的連接搜索其子圖即可找到問題的答案[14]。
主題實(shí)體的識(shí)別分為兩步。首先,通過命名實(shí)體模塊識(shí)別所有實(shí)體;然后,根據(jù)設(shè)定的規(guī)則對(duì)其進(jìn)行打分排序,設(shè)置排序第一的實(shí)體為主題實(shí)體。
2.2.1實(shí)體識(shí)別
實(shí)體識(shí)別的目的是識(shí)別句子中的實(shí)體信息,本文設(shè)計(jì)的問答系統(tǒng)面向的是高考咨詢領(lǐng)域,因此涉及到的實(shí)體主要有省份、城市、學(xué)校、專業(yè)、學(xué)院、校區(qū)、年份、人名、錄取分?jǐn)?shù)、院校特性、排名等。對(duì)于類別有限、固定且易統(tǒng)計(jì)的實(shí)體,如省份、城市、年份、人名、學(xué)校名、錄取批次等,本文通過調(diào)用HanLP的Python接口pyhanlp,利用其CRF實(shí)現(xiàn)并加上添加專業(yè)字典的方式來進(jìn)行實(shí)體的識(shí)別,pyhanlp詞性標(biāo)注功能可以準(zhǔn)確地實(shí)現(xiàn)大部分實(shí)體的識(shí)別。對(duì)于其他容易造成混淆的實(shí)體以及不能用詞性標(biāo)注解決的實(shí)體,如“青島大學(xué)是211嗎?”中“211”在詞性標(biāo)注里的結(jié)果是數(shù)詞“m”,但在這里指的是學(xué)校特性。因此,對(duì)于這些實(shí)體,本文選擇了BiLSTM-CRF的NER模型,這個(gè)模型在實(shí)體識(shí)別方面具有較好的效果,其數(shù)據(jù)集的標(biāo)注格式如圖8所示。
圖8 實(shí)體識(shí)別數(shù)據(jù)集標(biāo)注示例圖
實(shí)體識(shí)別之后通過同義詞典或正則對(duì)其進(jìn)行改寫,改寫成在知識(shí)庫(kù)中存儲(chǔ)的標(biāo)準(zhǔn)形式,如“山東省”和“山東”都統(tǒng)一為“山東”。
2.2.2實(shí)體排序
在實(shí)體識(shí)別模塊之后,獲得了一系列實(shí)體,本文根據(jù)高考領(lǐng)域的本體模型以及常見問題,設(shè)置了如下的打分規(guī)則:
(1) 類型優(yōu)先級(jí)。由于大部分問題是圍繞學(xué)校的,因此學(xué)校類型的實(shí)體具有最高的優(yōu)先級(jí),分?jǐn)?shù)為0;其余的實(shí)體類型按照到學(xué)校類型的最短距離來計(jì)算,距離越近優(yōu)先級(jí)越高。
(2) 指向關(guān)系。指向關(guān)系是指優(yōu)先選擇指向其他實(shí)體的節(jié)點(diǎn),而不是被指向的節(jié)點(diǎn)。對(duì)每個(gè)實(shí)體,計(jì)算指向此實(shí)體的邊數(shù),每條邊計(jì)一分。
(3) 距離疑問詞的距離。計(jì)算每個(gè)實(shí)體到問句疑問詞的距離,將距離值作為分?jǐn)?shù)添加給每個(gè)實(shí)體。
最后,將每個(gè)實(shí)體按其得分由低到高進(jìn)行排序,分?jǐn)?shù)最低的那個(gè)實(shí)體為主題實(shí)體?!芭判颉睂?shí)體不算在主題實(shí)體中,如果問句中沒有實(shí)體可以作為主題實(shí)體,用問句的答案節(jié)點(diǎn)作為主題實(shí)體。
核心推理鏈?zhǔn)侵钢黝}實(shí)體到答案節(jié)點(diǎn)的路徑,比如問句“青島大學(xué)有哪些專業(yè)在中心校區(qū)?”中主題實(shí)體節(jié)點(diǎn)“<青島大學(xué)>”到答案節(jié)點(diǎn)“:專業(yè)”之間的路徑就有四種情況,如圖9所示,其中:“:”后的詞表示實(shí)體的類型;“<>”中的詞表示實(shí)體的值。本文將有實(shí)體值的節(jié)點(diǎn)稱為實(shí)體節(jié)點(diǎn),僅有實(shí)體類型而無(wú)具體值的節(jié)點(diǎn)稱為變量節(jié)點(diǎn),代表答案的節(jié)點(diǎn)稱為答案節(jié)點(diǎn),答案節(jié)點(diǎn)也屬于變量節(jié)點(diǎn)。圖9顯示了四條路徑:“青島大學(xué)-屬于-屬于”“青島大學(xué)-招生專業(yè)”“青島大學(xué)-院系設(shè)置-招生專業(yè)”“青島大學(xué)-包含校區(qū)-所屬校區(qū)-招生專業(yè)”。
圖9 核心推理鏈?zhǔn)纠龍D
雖然這四條路徑均能與答案節(jié)點(diǎn)相連,但是無(wú)疑第四條路徑的質(zhì)量最高,為了評(píng)估每條路徑的質(zhì)量,本文通過計(jì)算每條路徑與問句的相似度,對(duì)每條路徑進(jìn)行評(píng)分排序。
通過觀察本體圖,我們發(fā)現(xiàn)任意兩個(gè)實(shí)體的距離不超過3,而且問句中的答案大多數(shù)都在三跳以內(nèi),因此,我們只考慮三跳以內(nèi)的核心推理鏈,具體步驟如下:
首先,通過查詢知識(shí)庫(kù),計(jì)算主題實(shí)體節(jié)點(diǎn)與答案節(jié)點(diǎn)的最短距離,如果等于1,那么從知識(shí)庫(kù)中查詢主題實(shí)體節(jié)點(diǎn)到答案節(jié)點(diǎn)的所有一跳、兩跳、三跳的路徑;如果等于2,那么查詢所有兩跳、三跳的路徑;如果等于3,那么僅查詢一條路徑即可。
在獲得所有核心推理鏈之后,計(jì)算與問題之間的相似性。本文使用BERT初始化詞向量,將兩個(gè)句子分別輸入到Siamese循環(huán)神經(jīng)網(wǎng)絡(luò)[15]來生成句子的語(yǔ)義表示,然后利用曼哈頓距離計(jì)算語(yǔ)義相似度,搭建的模型(BERT-Siamese模型)結(jié)構(gòu)如圖10所示,其中hleft和hright分別是兩個(gè)BiLSTM的輸出向量,將其進(jìn)行曼哈頓距離計(jì)算后輸出相似度結(jié)果y。
圖10 本文相似度計(jì)算模型
在得到核心推理鏈之后,還需要解析問句中的約束,問句中的約束是指對(duì)答案的限定,將答案聚焦在想要的范圍。約束一般分為實(shí)體約束、非實(shí)體約束、排序約束,以及計(jì)數(shù)約束等[16]。
約束一般加在實(shí)體節(jié)點(diǎn)或者中間的變量節(jié)點(diǎn)處。核心推理鏈的實(shí)體節(jié)點(diǎn)就是主題實(shí)體,變量節(jié)點(diǎn)就是推理鏈中沒有具體值的節(jié)點(diǎn),如圖11所示。對(duì)于問句“青島大學(xué)哪些專業(yè)2019年的錄取分?jǐn)?shù)小于560?”,其核心推理鏈之一為“青島大學(xué)-招生專業(yè)”,對(duì)于剩余實(shí)體“560”和“2019”即是對(duì)答案節(jié)點(diǎn)“:專業(yè)”約束,把剩余實(shí)體與答案節(jié)點(diǎn)建立連接,即生成最終的查詢圖。
圖11 添加約束示例
添加約束的算法如算法1所示,由于已經(jīng)將時(shí)間約束歸為實(shí)體約束里,因此本文就依次考慮對(duì)實(shí)體約束、排序約束和計(jì)數(shù)約束的添加。
算法1添加約束算法
輸入:核心推理鏈t,待添加的實(shí)體集合E。
輸出:G。
1 G = ?
2 insertttoT
3 foreache∈Edo
4Temp(t) = ?
5 foreacht∈Tdo
6g=AddConstraint(t,e)
7 insertgtoTemp(t)
8 end
9T=Temp(t)
10 end
11 insertTtoG
12 ifpaixu==True:
13 foreachg∈Gdo
14 if “分?jǐn)?shù)” or “排名”or “招生人數(shù)” ∈g:
15 insert paixuConstraint tog
16 else
17g1 =AddConstraint(g, “分?jǐn)?shù)”)
18g2 =AddConstraint(g, “排名”)
19g3 =AddConstraint(g, “招生人數(shù)”)
20 insertg1,g2,g3 toG
21 end
22 ifisJishu==True:
23 foreachg∈Gdo
24 insertjishuConstrainttog
25 end
26 returnG
對(duì)于實(shí)體約束,首先判斷此約束是實(shí)體類約束(如“中心校區(qū)”)還是屬性類約束(如錄取分?jǐn)?shù)的屬性“2019年”),如果是屬性類約束,則先將其轉(zhuǎn)換為具有此屬性的實(shí)體類型。然后在推理鏈中查詢是否有此實(shí)體類型的節(jié)點(diǎn),如果有,則直接將約束添加給那個(gè)變量節(jié)點(diǎn);如果沒有,則與其中的變量節(jié)點(diǎn)建立關(guān)系,建立關(guān)系的原則是選擇與距離最近的變量節(jié)點(diǎn)建立關(guān)系,如果與多個(gè)變量節(jié)點(diǎn)的最近距離相同,則分別與之建立關(guān)系,生成多個(gè)不同的查詢圖,如果與任一節(jié)點(diǎn)均無(wú)法建立關(guān)系,則舍棄掉此實(shí)體約束。另外對(duì)于類型為“分?jǐn)?shù)”的實(shí)體進(jìn)行額外檢測(cè),利用字符串匹配方法判斷問句中是否在其前面出現(xiàn)“大于”或“小于”等詞語(yǔ),如果存在,則將約束中的“=”改為“>=”或“<=”。
對(duì)于排序約束,能進(jìn)行排序的實(shí)體類型包括“排名”“分?jǐn)?shù)”“招生人數(shù)”,因此如果有排序?qū)嶓w的存在,那么就查詢此時(shí)的查詢圖中是否存在上述變量節(jié)點(diǎn)之一,如果有,則將此約束加到這個(gè)變量節(jié)點(diǎn)當(dāng)中,如果查詢圖中沒有上述變量節(jié)點(diǎn),則分別添加上述節(jié)點(diǎn)和對(duì)應(yīng)的排序約束,生成多個(gè)查詢圖。
對(duì)于計(jì)數(shù)約束,本文通過訓(xùn)練一個(gè)二分類的分類器,判斷需要返回的是實(shí)體還是實(shí)體的數(shù)量。
最后采用2.3節(jié)的相似度計(jì)算模型對(duì)生成的每個(gè)查詢圖進(jìn)行評(píng)分,此得分加上生成此查詢圖的推理鏈的分?jǐn)?shù)為查詢圖最終的得分,選擇最終得分排名第一的查詢圖作為最終的查詢圖。
得到最終的查詢圖之后要將其轉(zhuǎn)換為Neo4j數(shù)據(jù)庫(kù)語(yǔ)句,Neo4j數(shù)據(jù)庫(kù)使用的是Cypher查詢語(yǔ)句,圖12描述了程序運(yùn)行中查詢圖的自動(dòng)生成過程以及查詢語(yǔ)句的轉(zhuǎn)換。
圖12 查詢語(yǔ)句生成示例圖
問句數(shù)據(jù)集:本文通過人工構(gòu)建問句以及在一些大學(xué)的貼吧、百度知道等網(wǎng)站爬取高考咨詢相關(guān)問句的方式,得到3 000條事實(shí)類問句作為數(shù)據(jù)集。本文的問句分類(意圖分類和計(jì)數(shù)約束二分類)和命名實(shí)體識(shí)別均使用此數(shù)據(jù)集。
相似度計(jì)算數(shù)據(jù)集:相似度計(jì)算模型的輸入為兩個(gè)句子及其相似性標(biāo)簽,第一個(gè)句子來自于爬取的3 000條問句,第二個(gè)句子來自于知識(shí)庫(kù),從生成的核心推理鏈和查詢圖中人工選取其中最正確的數(shù)據(jù),標(biāo)簽設(shè)置為1,其余的標(biāo)簽為0。為了讓數(shù)據(jù)集的正負(fù)樣本均衡,將正樣本重復(fù)2次進(jìn)行過采樣。經(jīng)過以上處理,得到一個(gè)含有29 000個(gè)句子對(duì)的數(shù)據(jù)集,將其按7∶3的比例分為訓(xùn)練集和測(cè)試集。
本文采用微調(diào)BERT的方法進(jìn)行問句分類,在測(cè)試集上的準(zhǔn)確率分別為97%和100%,另外本文也探索了其他方法進(jìn)行問句分類效果對(duì)比,實(shí)驗(yàn)結(jié)果如表1所示。
表1 問句分類實(shí)驗(yàn)結(jié)果(%)
BiLSTM-CRF模型的命名實(shí)體識(shí)別結(jié)果為:精確率為93%,召回率為92%,F(xiàn)1值為92%。BERT-Siamese模型的相似度計(jì)算結(jié)果為:精確率為79%,召回率為85%,F(xiàn)1值為81%。整個(gè)問答系統(tǒng)隨機(jī)采取100道進(jìn)行測(cè)試,其中84%的問題回答正確,從而驗(yàn)證了本文所提出的問答模型的合理性,也說明本文系統(tǒng)基本可以滿足用戶對(duì)高考咨詢的一般問答需求。
為了方便用戶使用,利用Python的Flask框架搭建問答系統(tǒng),運(yùn)行界面如圖13所示??忌梢圆榭锤鱾€(gè)省份的學(xué)校,或者根據(jù)分?jǐn)?shù)選專業(yè)或者根據(jù)專業(yè)選大學(xué),還可以查看學(xué)校之間的關(guān)系等。
圖13 本文的問答系統(tǒng)界面
本文基于高考報(bào)名時(shí)考生經(jīng)常咨詢的問題,利用protégé設(shè)計(jì)高考領(lǐng)域的知識(shí)圖譜本體,構(gòu)建了高校信息知識(shí)圖譜。在此基礎(chǔ)上,對(duì)多限制問句的問答方法進(jìn)行了研究,采用基于深度學(xué)習(xí)和語(yǔ)義解析相結(jié)合的方法,將用戶的問句自動(dòng)轉(zhuǎn)換成知識(shí)庫(kù)查詢語(yǔ)句,實(shí)現(xiàn)了高考咨詢問答系統(tǒng)。
本文的問答系統(tǒng)也有不足之處,本文系統(tǒng)只可以回答高考咨詢領(lǐng)域的事實(shí)類問句,對(duì)于非事實(shí)類問句或者知識(shí)庫(kù)中沒有存入的知識(shí)無(wú)法回答;另外查詢圖的相似度計(jì)算的準(zhǔn)確率也有待提高,因此今后的工作將在數(shù)據(jù)源、相似度計(jì)算算法等方面進(jìn)行深入研究。