王明乾,楊文靜,倪 林
(國防科技大學(xué) 信息通信學(xué)院,西安 710100)
當(dāng)前信息環(huán)境下,日常工作領(lǐng)域所需的各類專業(yè)領(lǐng)域信息也變得多種多樣.如何針對信息服務(wù)用戶需求,為用戶提供快速高效的領(lǐng)域內(nèi)信息獲取方式也成了當(dāng)前信息服務(wù)亟待解決的問題.領(lǐng)域知識問答[1]方面的相關(guān)研究是解決上述問題的有效方法,其能夠通過對用戶問題進(jìn)行語義層面的解析并在領(lǐng)域文檔庫中匹配符合用戶需求的信息并提供給用戶.問答系統(tǒng)(Question Answering system,QA)是一種基于深度學(xué)習(xí)的文本處理模型,它基于用戶提出的問題在語義層面對用戶需求進(jìn)行分析,并智能、簡潔的回答用戶提出的問題.可以滿足領(lǐng)域信息服務(wù)保障任務(wù)從海量信息中快速、準(zhǔn)確、有針對性地獲取信息的需求.
早在19世紀(jì)60年代,就出現(xiàn)了基于問答模板、人工規(guī)則生成答案的問答系統(tǒng).70年代還有一些基于文檔庫的問答系統(tǒng)研究.90年代左右,隨著搜索引擎技術(shù)的出現(xiàn)與發(fā)展,基于檢索的問答系統(tǒng)取得了一定發(fā)展.2010年之后,隨著自然語言處理技術(shù)的不斷發(fā)展,問答系統(tǒng)出現(xiàn)了3大主流方法:語義解析、信息抽取、向量建模.2015年開始,由于深度學(xué)習(xí)在自然語言建模方面取得的重大進(jìn)展[2],出現(xiàn)了大量使用深度學(xué)習(xí)的問答系統(tǒng).2016年,斯坦福大學(xué)推出了高質(zhì)量機(jī)器閱讀理解數(shù)據(jù)集Stanford Question Answering Dataset(SQuAD)[3],它是基于自然問題的抽取式閱讀理解數(shù)據(jù)集.2017年,Wang等[4]提出了基于Match-LSTM的端到端神經(jīng)網(wǎng)絡(luò)模型.2018年,Yu等[5]提出了QANet模型僅使用CNN和self-attention使得模型的訓(xùn)練和預(yù)測的速度大大加快,并且可以并行處理輸入的單詞.2017年,Facebook的Chen等[6]提出了機(jī)器閱讀理解模型問答系統(tǒng)DrQA,利用機(jī)器閱讀理解技術(shù)在非結(jié)構(gòu)化文本庫上構(gòu)建QA系統(tǒng).
與現(xiàn)有常見的開放領(lǐng)域問答系統(tǒng)相比,限定領(lǐng)域問答具有顯著的特點(diǎn)[1]:
(1)問題的多樣性較少,即同一個問題存在多種問法的情況較少;
(2)知識來源比較少,數(shù)據(jù)收集存在不少困難,也缺乏開放的知識源;
(3)問題的理解和回答需要深入利用專業(yè)知識,通過深度的推理準(zhǔn)確理解問題和生成答案.
這些特點(diǎn)給領(lǐng)域信息服務(wù)問答系統(tǒng)的研發(fā)帶來了難題.新體制下信息服務(wù)保障需要新技術(shù)、新手段挖掘信息服務(wù)用戶信息需求.本文使用了領(lǐng)域內(nèi)文檔庫作為知識來源,構(gòu)建了能夠?yàn)橛脩籼峁╊I(lǐng)域內(nèi)信息服務(wù)保障的信息服務(wù)問答系統(tǒng).
本文中采用了端到端的閉合域問答模型來構(gòu)建信息服務(wù)問答系統(tǒng),其架構(gòu)基于兩個主要部分:檢索器(retriever)和解答器(reader).模型的總體架構(gòu)如圖1所示.
圖1 信息服務(wù)問答系統(tǒng)總體框架
首先利用海量的專業(yè)領(lǐng)域文檔構(gòu)建一個文檔庫,當(dāng)信息服務(wù)用戶提出問題并輸入信息服務(wù)問答系統(tǒng)時,信息檢索器從領(lǐng)域文檔庫中檢索出N個語義與問題最相關(guān),即最可能包含答案的文檔.選擇了可能性最大N個文檔之后,系統(tǒng)把N個文檔和問題發(fā)送至解答器.當(dāng)解答器輸入一個文檔-問題對時,會輸出在該文檔中找到的最可能的答案,同時給出該答案是正確答案可能性評分.最后,將答案按照評分排序,選擇評分最高的作為最終答案.
本系統(tǒng)的信息檢索器基于TF-IDF(Term Frequency-Inverse Document Frequency)特征計(jì)算了問題語句和文檔庫中的每個文檔的余弦相似性,相似性越大的文檔越有可能包含問題的答案.
1.2.1 TF-IDF算法
TF-IDF[7]是一種統(tǒng)計(jì)方法,可以用來評估一個詞語對于整個文檔庫中每一篇文檔的重要程度.其核心思想是,在某一個文檔中出現(xiàn)頻率高且在整個文檔庫中出現(xiàn)在其他文檔中的頻率少的詞對該文檔更重要.因此取詞頻TF(詞語在文檔中出現(xiàn)的次數(shù))和逆向文件頻率IDF(總文件數(shù)目除以包含該詞語的文件的數(shù)目取對數(shù))的乘積TF-IDF構(gòu)成了文檔庫的特征矩陣.其計(jì)算公式如式(1)-式(3)所示.
式(1)中,ni,j是詞語wi在文檔dj中出現(xiàn)的次數(shù),分母則是文檔dj中所有詞語出現(xiàn)的次數(shù)總和;tfi,j是詞頻,表示詞語wi在文檔dj中出現(xiàn)的頻率.式(2)中,|D|是文檔庫中文檔的數(shù)量.|j:ti∈dj|表示包含詞語wi的文檔數(shù)量.最后,如式(3)所示,tfi,j與idfi相乘得到詞語對于文檔的權(quán)重tfidfi,j.在本文中使用了機(jī)器學(xué)習(xí)scikit-learn[8]庫中的TfidfVectorizer模塊實(shí)現(xiàn)了文檔及問題向TFIDF特征矩陣的轉(zhuǎn)化.
1.2.2 匹配算法
當(dāng)把文檔庫中的文檔及用戶提出的問題完全轉(zhuǎn)換為包含TF-IDF特征矩陣后,就可以對通過計(jì)算問題TF-IDF向量與每個文檔TF-IDF的相似度,來計(jì)算文檔與用戶問題之間的相似度了.對于問題來說,與其相似度越大的文檔越有可能包含問題的答案.本文中相似度的計(jì)算采用了余弦相似度算法[9],其計(jì)算公式如下:
當(dāng)接收到用戶提交的問題之后,模型通過TF-IDF模型將問題序列轉(zhuǎn)化為TF-IDF表征向量,然后計(jì)算該向量與文檔庫的TF-IDF矩陣中所有向量的余弦相似度,與問題的相似度越大的文檔與問題越相關(guān).本文取與問題向量余弦相似性最大的N個文檔,即與問題相似度最大的N個文檔作為檢索的結(jié)果,并傳遞給解答器.
解答器可以對信息檢索器搜索的結(jié)果進(jìn)行進(jìn)一步處理,對檢索出的N個文檔分別計(jì)算問題答案,進(jìn)行比較后選出最佳的答案.解答器的核心算法就是對文檔和問題對進(jìn)行閱讀理解,從而分析、推理、定位問題的答案.經(jīng)典的神經(jīng)網(wǎng)絡(luò)閱讀理解模型基本框架[10]主要包括詞嵌入層、語義編碼層、文檔-交互層、問答作答層.
本系統(tǒng)采用了BiDAF閱讀理解模型[11]作為解答器,其具體結(jié)構(gòu)如圖2所示.
圖2 解答器模型結(jié)構(gòu)
1.3.1 詞嵌入層
模型使用了詞嵌入層將詞語映射為維度固定的詞向量,獲取詞嵌入的方法是在訓(xùn)練的過程中自動從數(shù)據(jù)中學(xué)習(xí)詞嵌入向量,學(xué)習(xí)方式與神經(jīng)網(wǎng)絡(luò)中的權(quán)重相同.詞嵌入向量蘊(yùn)含了詞語的語義信息,詞嵌入向量之間的幾何關(guān)系可以表示詞之間的語義關(guān)系.
1.3.2 語義嵌入層
語義嵌入層對詞嵌入層得到的文檔向量和問題向量分別進(jìn)一步編碼.采用了可以讓每個詞語的特征向量與上下文進(jìn)行了交互的雙向長短時記憶網(wǎng)絡(luò)(Bi-LSTM),從而捕捉到了文檔中詞語的語境信息,使特征向量更好的編碼了詞語在當(dāng)前語境下的含義.Bi-LSTM模型是由正序的LSTM模型與倒序的LSTM模型組合而成,分別可以獲取詞語對上文和下文的依賴.從而將文檔和問題原始文本整合成了包含篇章、句子級語義信息的特征表示.
1.3.3 注意流層
獲取了文檔和問題各自的語義特征向量之后,為了完成問題的解答,需要進(jìn)一步探索文檔與問題之間的相關(guān)關(guān)系.對于用戶問題來說文檔中的每個詞語對其的重要性是不同的,即答案部分對于問題來說比其他部分應(yīng)該更重要.反之,對于文檔來說問題中與文檔相關(guān)性更大的詞語對于問題解答更加重要,因此本文采用了雙向注意流模型.包括了文檔-問題和問題-文檔兩個方向的注意流,前者用于獲取文檔更關(guān)注哪些詞語,后者用于獲取對于問題來說哪個單詞更重要.最后,雙向注意流拼接起來得到輸出矩陣G,G中每個列向量都可視為對應(yīng)詞語的查詢感知表征.
1.3.4 模型構(gòu)建層
模型構(gòu)建層的輸入為注意流層的輸出G,經(jīng)過一個Bi-LSTM層得到|M∈R2d×T|,M的每一個列向量都包含了對應(yīng)單詞查詢感知的上下文信息,捕獲輸入矩陣在時序上依賴關(guān)系,而且還具有編碼降維的功能.
1.3.5 答案輸出層
問答答案輸出層的功能是生成答案起始位置p1和結(jié)束位置p2,最終根據(jù)p1和p2從文檔中截取預(yù)測的答案.
檢索器的評估指標(biāo)使用正確率來衡量,已知每個問題對應(yīng)一篇文章,檢索器的作用就是根據(jù)問題從文檔庫里找到其答案所在的文章.當(dāng)給定一個問題時,檢索器從文檔庫中選出與問題最相似的N篇文檔作為返回結(jié)果.如果其答案所在的文檔包含在檢索結(jié)果中可以認(rèn)為找到了所需的文章,即檢索成功,結(jié)果正確.如果問題所對應(yīng)的文檔沒有包含在檢索結(jié)果中,說明檢索失敗,結(jié)果錯誤.本文使用檢索的正確率來檢驗(yàn)檢索器的效果.公式如下:
其中,Nright為測試樣本中檢索結(jié)果正確的檢索數(shù)量,Nall為檢索所有測試檢索的總數(shù).
閱讀理解的評價一般以預(yù)測的答案與實(shí)際答案的匹配度進(jìn)行衡量,本文中同時計(jì)算了ROUGE-L和BLEU兩個指標(biāo),其中,ROUGE-L作為第一參考指標(biāo),BLEU作為第二參考指標(biāo).
(1)ROUGE-L
ROUGE評價方法[12]一般是用于摘要的評價,其基于摘要中n元詞(n-gram)的共現(xiàn)信息來評價摘要,是一種面向n元詞召回率的評價方法.其通過統(tǒng)計(jì)人工摘要與自動摘要共現(xiàn)的基本單元(n元語法、詞序列和詞對)的數(shù)目,來評價摘要的質(zhì)量.ROUGE準(zhǔn)則由一系列的評價方法組成,其中,ROUGE-L使用了最長公共子序列作為基本單元,字母L即是最長公共子序列(Longest Common Subsequence,LCS)的首字母.ROUGE-L計(jì)算方式如下:
其中,LCS(X,Y)是X和Y的最長公共子序列的長度,m,n分別表示人工標(biāo)準(zhǔn)摘要和機(jī)器自動摘要的長度(包含詞語的數(shù)量),RLCS,PLCS分別表示召回率和準(zhǔn)確率.最后的FLCS即是ROUGE-L.使用LCS的優(yōu)點(diǎn)是不需要連續(xù)匹配,而且反映了句子級詞序的順序匹配,由于它自動包含最長的順序通用n-gram,因此不需要預(yù)定義的n-gram長度.缺點(diǎn)是只計(jì)算一個最長子序列,最終的值忽略了其他備選的最長子序列及較短子序列的影響.
(2)BLEU
BLEU方法[13]計(jì)算兩段文本之間的相似度,不考慮詞語的順序,將待評價文本和參考文本的n-gram單元進(jìn)行匹配,并計(jì)算匹配單元的個數(shù).匹配單元數(shù)越多,則待評價文本與參考文本越相似,即質(zhì)量越好.算法中N的值可以變化,BLEU-4即N值為4.公式為:
其中,BP為懲罰因子,pn為多元精度,wn為多元精度對應(yīng)的權(quán)重.結(jié)果值介于(0,1),越大越好.
本次實(shí)驗(yàn)使用萊斯杯閱讀理解初賽數(shù)據(jù)集對檢索器和解答器進(jìn)行了訓(xùn)練和評估,該數(shù)據(jù)集包括新聞類、防務(wù)快訊類2萬余篇的文檔,每個文檔對應(yīng)5個左右的問題以及人工標(biāo)注的問題答案,約10個萬問題答案對.
數(shù)據(jù)集為JSON文件格式,包含多個文章以及每篇文章的問題-答案對,其中每個文章的答案為單行的JSON數(shù)據(jù).
本文選用了百度的飛槳(PaddlePaddle)作為深度學(xué)習(xí)模型的基礎(chǔ)框架,其目前國內(nèi)自主研發(fā)、開源開放、功能完備的產(chǎn)業(yè)級深度學(xué)習(xí)平臺,集深度學(xué)習(xí)核心框架、基礎(chǔ)模型庫、端到端開發(fā)套件、工具組件和服務(wù)平臺于一體.采用基于編程邏輯的組網(wǎng)范式,支持聲明式和命令式編程,兼具開發(fā)的靈活性和高性能.采用了在計(jì)算科學(xué)領(lǐng)域的領(lǐng)先地位、具有生態(tài)完整性和接口易用性的Python作為編程語言.具體環(huán)境配置如表1所示.
表1 軟硬件環(huán)境配置
3.3.1 檢索器評估
實(shí)驗(yàn)中,首先構(gòu)建檢索器評估數(shù)據(jù)集.將數(shù)據(jù)集轉(zhuǎn)換為問題-文檔對.使用原始數(shù)據(jù)集構(gòu)建了90 000多條問題-文檔對,使用sklearn的TfidfVectorizer將其轉(zhuǎn)化為TF-IDF矩陣作為檢索數(shù)據(jù)庫.并從問題-文檔對中選取了1000條數(shù)據(jù)作為測試集.依次設(shè)定N為3-19,測試檢索器的正確率.具體結(jié)果如圖3所示.
圖3 檢索器評估結(jié)果
由圖3可見,N值越大,檢索器的正確率越高,但是當(dāng)N大于12之后,其正確率增長變緩.由于N值越大,其結(jié)果包含的文檔數(shù)越多,不利于解答器進(jìn)一步從檢索結(jié)果中查找最終答案,同時會大大增加解答器的計(jì)算量.
3.3.2 解答器評估
(1)數(shù)據(jù)預(yù)處理
首先對問題和文檔進(jìn)行分詞,然后在對于文檔中定位答案范圍,這里使用了一個簡單的策略,將真實(shí)答案與每段文章進(jìn)行匹配,搜索與真實(shí)答案F1分?jǐn)?shù)最高的字符串,并使用這個字符串的范圍作為候選答案范圍.本文為每個問題尋找了一個范圍作為候選項(xiàng),使用其在文檔中的位置索引表示[start_idx,end_idx],其中,start_idx是答案的起始端,end_idx為答案的終止端.
(2)模型訓(xùn)練
訓(xùn)練時將文檔與問題作為輸入,模型的輸出與正確的答案范圍進(jìn)行比較計(jì)算誤差后對模型權(quán)重進(jìn)行更新.解答器重要超參數(shù)設(shè)置如表2所示.
表2中,batch_size為訓(xùn)練時每批次數(shù)據(jù)數(shù)量; cuda為布爾型變量,為True時使用GPU進(jìn)行訓(xùn)練,為False時使用CPU進(jìn)行訓(xùn)練; embed_size為字嵌入層詞向量的維度; hidden_size為模型隱藏層單元維度; init_lr表示初始學(xué)習(xí)率,表示模型學(xué)習(xí)的快慢; max_answer_len表示答案保留的最長長度; max_article_len表示文檔保留的最長長度; max_question_len表示問題保留的最長長度.
表2 解答器重要超參設(shè)置
本文在訓(xùn)練時初始學(xué)習(xí)率設(shè)置為0.001,訓(xùn)練過程中每個epoch完成后,模型在測試集上的損失Loss及評估指標(biāo)ROUGE-L、BLEU-4變化如圖4所示.
圖4 訓(xùn)練過程中模型在測試集上的Loss、ROUGE-L、BLEU-4
由圖4可知,隨著訓(xùn)練的進(jìn)行,模型在測試集上的損失逐漸降低,說明模型正在不斷優(yōu)化,在第5個epoch之后,損失又會變大說明從此時開始模型開始過擬合.與之對應(yīng)ROUGE-L、BLEU-4指標(biāo),一開始隨著Loss的減少而增加.當(dāng)發(fā)生過擬合時,隨著Loss的增加有所下降,因此,本文選用第4個epoch的訓(xùn)練結(jié)果作為解答器.
3.3.3 問答系統(tǒng)評估
最終將檢索器和解答器整合起來構(gòu)建的完整的問答系統(tǒng),首先對問題進(jìn)行分詞.然后,將分詞后的問題輸入檢索器,檢索器會檢索出與問題最相關(guān)的N個文檔.將問題與以上10個文檔分別輸入解答器,得到N個答案以及其對應(yīng)的概率分值,概率越大則答案越有可能是正確答案,因此選擇概率分值最大的答案作為最終答案.本文選取了9000多個問題對設(shè)置了不同N的系統(tǒng)效果進(jìn)行了評估,結(jié)果如圖5所示.
圖5 不同N值的系統(tǒng)效果
可見N為3時,綜合ROUGE-L、BLEU-4來看系統(tǒng)效果最佳,說明盡管隨著N的增加檢索器的結(jié)果包含正確答案的概率變高了,但是其結(jié)果也包含了更多錯誤答案,引入了噪聲.因此最終設(shè)置N為3,此時系統(tǒng),ROUGE-L指標(biāo)為,BLEU-4指標(biāo)為.對比解答器的測試結(jié)果有所下降,這由兩個原因?qū)е?一是檢索器不一定找到正確答案所在的文檔并提供給解答器; 二是檢索器找到正確的文檔且解答器找到正確答案的情況下,存在正確答案的概率值小于錯誤答案概率值的情況.
3.3.4 問答預(yù)測
問答系統(tǒng)建立完成之后,就可以使用其獲取信息了.使用時,系統(tǒng)輸入為用戶問題,輸出為系統(tǒng)從文檔庫中檢索并截取的問題答案.解答時,系統(tǒng)根據(jù)用戶提的問題先從文檔中檢索出可能包含答案的候選文章,然后使用解答器從候選文章中截取答案,并選取概率值最大的答案作為系統(tǒng)輸出.隨機(jī)選取了幾個問題及其參考、預(yù)測答案作為樣例,如圖6所示.
圖6 樣例問題-參考答案-預(yù)測答案對比
由圖6可知,對于大部分問題模型預(yù)測的答案與實(shí)際答案基本一致,也存在有些問題答案不合理的情況.總之,本模型可以從文檔中截取比較合理的問題答案,可以有效減少用戶獲取信息時所需要的時間,不過模型的精度還有待提高.
3.3.5 系統(tǒng)效果展示
由于本系統(tǒng)對于模型答案的預(yù)測還存在一定的誤差,在最終問答界面選取了概率最大的前5個答案作為系統(tǒng)最終的輸出,用戶可以從中選取所需答案.系統(tǒng)效果如圖7所示.
圖7 問答系統(tǒng)效果展示
本系統(tǒng)最終輸出了排名靠前的答案、分值以及答案所在的文章,對答案做了標(biāo)注,用戶可以直觀的獲取答案,也可以對答案的上下文進(jìn)行進(jìn)一步的了解.
本文對信息服務(wù)問答系統(tǒng)進(jìn)行了研究,模型基于領(lǐng)域閱讀理解數(shù)據(jù)集構(gòu)建了基于文檔庫的面向問題的檢索、解讀系統(tǒng).當(dāng)用戶提出問題時,可以依次通過信息檢索器找到答案所在文檔,并通過解答器找到答案在文檔中的位置,從而直接得到問題對應(yīng)的答案.本文的研究對于解決當(dāng)前海量信息環(huán)境下如何快速有效的獲取用戶所需的信息,提升綜合信息服務(wù)用戶獲取信息的效率具有重要意義.