王明乾,楊文靜,倪 林
(國防科技大學 信息通信學院,西安 710100)
當前信息環境下,日常工作領域所需的各類專業領域信息也變得多種多樣.如何針對信息服務用戶需求,為用戶提供快速高效的領域內信息獲取方式也成了當前信息服務亟待解決的問題.領域知識問答[1]方面的相關研究是解決上述問題的有效方法,其能夠通過對用戶問題進行語義層面的解析并在領域文檔庫中匹配符合用戶需求的信息并提供給用戶.問答系統(Question Answering system,QA)是一種基于深度學習的文本處理模型,它基于用戶提出的問題在語義層面對用戶需求進行分析,并智能、簡潔的回答用戶提出的問題.可以滿足領域信息服務保障任務從海量信息中快速、準確、有針對性地獲取信息的需求.
早在19世紀60年代,就出現了基于問答模板、人工規則生成答案的問答系統.70年代還有一些基于文檔庫的問答系統研究.90年代左右,隨著搜索引擎技術的出現與發展,基于檢索的問答系統取得了一定發展.2010年之后,隨著自然語言處理技術的不斷發展,問答系統出現了3大主流方法:語義解析、信息抽取、向量建模.2015年開始,由于深度學習在自然語言建模方面取得的重大進展[2],出現了大量使用深度學習的問答系統.2016年,斯坦福大學推出了高質量機器閱讀理解數據集Stanford Question Answering Dataset(SQuAD)[3],它是基于自然問題的抽取式閱讀理解數據集.2017年,Wang等[4]提出了基于Match-LSTM的端到端神經網絡模型.2018年,Yu等[5]提出了QANet模型僅使用CNN和self-attention使得模型的訓練和預測的速度大大加快,并且可以并行處理輸入的單詞.2017年,Facebook的Chen等[6]提出了機器閱讀理解模型問答系統DrQA,利用機器閱讀理解技術在非結構化文本庫上構建QA系統.
與現有常見的開放領域問答系統相比,限定領域問答具有顯著的特點[1]:
(1)問題的多樣性較少,即同一個問題存在多種問法的情況較少;
(2)知識來源比較少,數據收集存在不少困難,也缺乏開放的知識源;
(3)問題的理解和回答需要深入利用專業知識,通過深度的推理準確理解問題和生成答案.
這些特點給領域信息服務問答系統的研發帶來了難題.新體制下信息服務保障需要新技術、新手段挖掘信息服務用戶信息需求.本文使用了領域內文檔庫作為知識來源,構建了能夠為用戶提供領域內信息服務保障的信息服務問答系統.
本文中采用了端到端的閉合域問答模型來構建信息服務問答系統,其架構基于兩個主要部分:檢索器(retriever)和解答器(reader).模型的總體架構如圖1所示.

圖1 信息服務問答系統總體框架
首先利用海量的專業領域文檔構建一個文檔庫,當信息服務用戶提出問題并輸入信息服務問答系統時,信息檢索器從領域文檔庫中檢索出N個語義與問題最相關,即最可能包含答案的文檔.選擇了可能性最大N個文檔之后,系統把N個文檔和問題發送至解答器.當解答器輸入一個文檔-問題對時,會輸出在該文檔中找到的最可能的答案,同時給出該答案是正確答案可能性評分.最后,將答案按照評分排序,選擇評分最高的作為最終答案.
本系統的信息檢索器基于TF-IDF(Term Frequency-Inverse Document Frequency)特征計算了問題語句和文檔庫中的每個文檔的余弦相似性,相似性越大的文檔越有可能包含問題的答案.
1.2.1 TF-IDF算法
TF-IDF[7]是一種統計方法,可以用來評估一個詞語對于整個文檔庫中每一篇文檔的重要程度.其核心思想是,在某一個文檔中出現頻率高且在整個文檔庫中出現在其他文檔中的頻率少的詞對該文檔更重要.因此取詞頻TF(詞語在文檔中出現的次數)和逆向文件頻率IDF(總文件數目除以包含該詞語的文件的數目取對數)的乘積TF-IDF構成了文檔庫的特征矩陣.其計算公式如式(1)-式(3)所示.

式(1)中,ni,j是詞語wi在文檔dj中出現的次數,分母則是文檔dj中所有詞語出現的次數總和;tfi,j是詞頻,表示詞語wi在文檔dj中出現的頻率.式(2)中,|D|是文檔庫中文檔的數量.|j:ti∈dj|表示包含詞語wi的文檔數量.最后,如式(3)所示,tfi,j與idfi相乘得到詞語對于文檔的權重tfidfi,j.在本文中使用了機器學習scikit-learn[8]庫中的TfidfVectorizer模塊實現了文檔及問題向TFIDF特征矩陣的轉化.
1.2.2 匹配算法
當把文檔庫中的文檔及用戶提出的問題完全轉換為包含TF-IDF特征矩陣后,就可以對通過計算問題TF-IDF向量與每個文檔TF-IDF的相似度,來計算文檔與用戶問題之間的相似度了.對于問題來說,與其相似度越大的文檔越有可能包含問題的答案.本文中相似度的計算采用了余弦相似度算法[9],其計算公式如下:

當接收到用戶提交的問題之后,模型通過TF-IDF模型將問題序列轉化為TF-IDF表征向量,然后計算該向量與文檔庫的TF-IDF矩陣中所有向量的余弦相似度,與問題的相似度越大的文檔與問題越相關.本文取與問題向量余弦相似性最大的N個文檔,即與問題相似度最大的N個文檔作為檢索的結果,并傳遞給解答器.
解答器可以對信息檢索器搜索的結果進行進一步處理,對檢索出的N個文檔分別計算問題答案,進行比較后選出最佳的答案.解答器的核心算法就是對文檔和問題對進行閱讀理解,從而分析、推理、定位問題的答案.經典的神經網絡閱讀理解模型基本框架[10]主要包括詞嵌入層、語義編碼層、文檔-交互層、問答作答層.
本系統采用了BiDAF閱讀理解模型[11]作為解答器,其具體結構如圖2所示.

圖2 解答器模型結構
1.3.1 詞嵌入層
模型使用了詞嵌入層將詞語映射為維度固定的詞向量,獲取詞嵌入的方法是在訓練的過程中自動從數據中學習詞嵌入向量,學習方式與神經網絡中的權重相同.詞嵌入向量蘊含了詞語的語義信息,詞嵌入向量之間的幾何關系可以表示詞之間的語義關系.
1.3.2 語義嵌入層
語義嵌入層對詞嵌入層得到的文檔向量和問題向量分別進一步編碼.采用了可以讓每個詞語的特征向量與上下文進行了交互的雙向長短時記憶網絡(Bi-LSTM),從而捕捉到了文檔中詞語的語境信息,使特征向量更好的編碼了詞語在當前語境下的含義.Bi-LSTM模型是由正序的LSTM模型與倒序的LSTM模型組合而成,分別可以獲取詞語對上文和下文的依賴.從而將文檔和問題原始文本整合成了包含篇章、句子級語義信息的特征表示.
1.3.3 注意流層
獲取了文檔和問題各自的語義特征向量之后,為了完成問題的解答,需要進一步探索文檔與問題之間的相關關系.對于用戶問題來說文檔中的每個詞語對其的重要性是不同的,即答案部分對于問題來說比其他部分應該更重要.反之,對于文檔來說問題中與文檔相關性更大的詞語對于問題解答更加重要,因此本文采用了雙向注意流模型.包括了文檔-問題和問題-文檔兩個方向的注意流,前者用于獲取文檔更關注哪些詞語,后者用于獲取對于問題來說哪個單詞更重要.最后,雙向注意流拼接起來得到輸出矩陣G,G中每個列向量都可視為對應詞語的查詢感知表征.
1.3.4 模型構建層
模型構建層的輸入為注意流層的輸出G,經過一個Bi-LSTM層得到|M∈R2d×T|,M的每一個列向量都包含了對應單詞查詢感知的上下文信息,捕獲輸入矩陣在時序上依賴關系,而且還具有編碼降維的功能.
1.3.5 答案輸出層
問答答案輸出層的功能是生成答案起始位置p1和結束位置p2,最終根據p1和p2從文檔中截取預測的答案.
檢索器的評估指標使用正確率來衡量,已知每個問題對應一篇文章,檢索器的作用就是根據問題從文檔庫里找到其答案所在的文章.當給定一個問題時,檢索器從文檔庫中選出與問題最相似的N篇文檔作為返回結果.如果其答案所在的文檔包含在檢索結果中可以認為找到了所需的文章,即檢索成功,結果正確.如果問題所對應的文檔沒有包含在檢索結果中,說明檢索失敗,結果錯誤.本文使用檢索的正確率來檢驗檢索器的效果.公式如下:

其中,Nright為測試樣本中檢索結果正確的檢索數量,Nall為檢索所有測試檢索的總數.
閱讀理解的評價一般以預測的答案與實際答案的匹配度進行衡量,本文中同時計算了ROUGE-L和BLEU兩個指標,其中,ROUGE-L作為第一參考指標,BLEU作為第二參考指標.
(1)ROUGE-L
ROUGE評價方法[12]一般是用于摘要的評價,其基于摘要中n元詞(n-gram)的共現信息來評價摘要,是一種面向n元詞召回率的評價方法.其通過統計人工摘要與自動摘要共現的基本單元(n元語法、詞序列和詞對)的數目,來評價摘要的質量.ROUGE準則由一系列的評價方法組成,其中,ROUGE-L使用了最長公共子序列作為基本單元,字母L即是最長公共子序列(Longest Common Subsequence,LCS)的首字母.ROUGE-L計算方式如下:

其中,LCS(X,Y)是X和Y的最長公共子序列的長度,m,n分別表示人工標準摘要和機器自動摘要的長度(包含詞語的數量),RLCS,PLCS分別表示召回率和準確率.最后的FLCS即是ROUGE-L.使用LCS的優點是不需要連續匹配,而且反映了句子級詞序的順序匹配,由于它自動包含最長的順序通用n-gram,因此不需要預定義的n-gram長度.缺點是只計算一個最長子序列,最終的值忽略了其他備選的最長子序列及較短子序列的影響.
(2)BLEU
BLEU方法[13]計算兩段文本之間的相似度,不考慮詞語的順序,將待評價文本和參考文本的n-gram單元進行匹配,并計算匹配單元的個數.匹配單元數越多,則待評價文本與參考文本越相似,即質量越好.算法中N的值可以變化,BLEU-4即N值為4.公式為:

其中,BP為懲罰因子,pn為多元精度,wn為多元精度對應的權重.結果值介于(0,1),越大越好.
本次實驗使用萊斯杯閱讀理解初賽數據集對檢索器和解答器進行了訓練和評估,該數據集包括新聞類、防務快訊類2萬余篇的文檔,每個文檔對應5個左右的問題以及人工標注的問題答案,約10個萬問題答案對.
數據集為JSON文件格式,包含多個文章以及每篇文章的問題-答案對,其中每個文章的答案為單行的JSON數據.
本文選用了百度的飛槳(PaddlePaddle)作為深度學習模型的基礎框架,其目前國內自主研發、開源開放、功能完備的產業級深度學習平臺,集深度學習核心框架、基礎模型庫、端到端開發套件、工具組件和服務平臺于一體.采用基于編程邏輯的組網范式,支持聲明式和命令式編程,兼具開發的靈活性和高性能.采用了在計算科學領域的領先地位、具有生態完整性和接口易用性的Python作為編程語言.具體環境配置如表1所示.

表1 軟硬件環境配置
3.3.1 檢索器評估
實驗中,首先構建檢索器評估數據集.將數據集轉換為問題-文檔對.使用原始數據集構建了90 000多條問題-文檔對,使用sklearn的TfidfVectorizer將其轉化為TF-IDF矩陣作為檢索數據庫.并從問題-文檔對中選取了1000條數據作為測試集.依次設定N為3-19,測試檢索器的正確率.具體結果如圖3所示.

圖3 檢索器評估結果
由圖3可見,N值越大,檢索器的正確率越高,但是當N大于12之后,其正確率增長變緩.由于N值越大,其結果包含的文檔數越多,不利于解答器進一步從檢索結果中查找最終答案,同時會大大增加解答器的計算量.
3.3.2 解答器評估
(1)數據預處理
首先對問題和文檔進行分詞,然后在對于文檔中定位答案范圍,這里使用了一個簡單的策略,將真實答案與每段文章進行匹配,搜索與真實答案F1分數最高的字符串,并使用這個字符串的范圍作為候選答案范圍.本文為每個問題尋找了一個范圍作為候選項,使用其在文檔中的位置索引表示[start_idx,end_idx],其中,start_idx是答案的起始端,end_idx為答案的終止端.
(2)模型訓練
訓練時將文檔與問題作為輸入,模型的輸出與正確的答案范圍進行比較計算誤差后對模型權重進行更新.解答器重要超參數設置如表2所示.
表2中,batch_size為訓練時每批次數據數量; cuda為布爾型變量,為True時使用GPU進行訓練,為False時使用CPU進行訓練; embed_size為字嵌入層詞向量的維度; hidden_size為模型隱藏層單元維度; init_lr表示初始學習率,表示模型學習的快慢; max_answer_len表示答案保留的最長長度; max_article_len表示文檔保留的最長長度; max_question_len表示問題保留的最長長度.

表2 解答器重要超參設置
本文在訓練時初始學習率設置為0.001,訓練過程中每個epoch完成后,模型在測試集上的損失Loss及評估指標ROUGE-L、BLEU-4變化如圖4所示.

圖4 訓練過程中模型在測試集上的Loss、ROUGE-L、BLEU-4
由圖4可知,隨著訓練的進行,模型在測試集上的損失逐漸降低,說明模型正在不斷優化,在第5個epoch之后,損失又會變大說明從此時開始模型開始過擬合.與之對應ROUGE-L、BLEU-4指標,一開始隨著Loss的減少而增加.當發生過擬合時,隨著Loss的增加有所下降,因此,本文選用第4個epoch的訓練結果作為解答器.
3.3.3 問答系統評估
最終將檢索器和解答器整合起來構建的完整的問答系統,首先對問題進行分詞.然后,將分詞后的問題輸入檢索器,檢索器會檢索出與問題最相關的N個文檔.將問題與以上10個文檔分別輸入解答器,得到N個答案以及其對應的概率分值,概率越大則答案越有可能是正確答案,因此選擇概率分值最大的答案作為最終答案.本文選取了9000多個問題對設置了不同N的系統效果進行了評估,結果如圖5所示.

圖5 不同N值的系統效果
可見N為3時,綜合ROUGE-L、BLEU-4來看系統效果最佳,說明盡管隨著N的增加檢索器的結果包含正確答案的概率變高了,但是其結果也包含了更多錯誤答案,引入了噪聲.因此最終設置N為3,此時系統,ROUGE-L指標為,BLEU-4指標為.對比解答器的測試結果有所下降,這由兩個原因導致,一是檢索器不一定找到正確答案所在的文檔并提供給解答器; 二是檢索器找到正確的文檔且解答器找到正確答案的情況下,存在正確答案的概率值小于錯誤答案概率值的情況.
3.3.4 問答預測
問答系統建立完成之后,就可以使用其獲取信息了.使用時,系統輸入為用戶問題,輸出為系統從文檔庫中檢索并截取的問題答案.解答時,系統根據用戶提的問題先從文檔中檢索出可能包含答案的候選文章,然后使用解答器從候選文章中截取答案,并選取概率值最大的答案作為系統輸出.隨機選取了幾個問題及其參考、預測答案作為樣例,如圖6所示.

圖6 樣例問題-參考答案-預測答案對比
由圖6可知,對于大部分問題模型預測的答案與實際答案基本一致,也存在有些問題答案不合理的情況.總之,本模型可以從文檔中截取比較合理的問題答案,可以有效減少用戶獲取信息時所需要的時間,不過模型的精度還有待提高.
3.3.5 系統效果展示
由于本系統對于模型答案的預測還存在一定的誤差,在最終問答界面選取了概率最大的前5個答案作為系統最終的輸出,用戶可以從中選取所需答案.系統效果如圖7所示.

圖7 問答系統效果展示
本系統最終輸出了排名靠前的答案、分值以及答案所在的文章,對答案做了標注,用戶可以直觀的獲取答案,也可以對答案的上下文進行進一步的了解.
本文對信息服務問答系統進行了研究,模型基于領域閱讀理解數據集構建了基于文檔庫的面向問題的檢索、解讀系統.當用戶提出問題時,可以依次通過信息檢索器找到答案所在文檔,并通過解答器找到答案在文檔中的位置,從而直接得到問題對應的答案.本文的研究對于解決當前海量信息環境下如何快速有效的獲取用戶所需的信息,提升綜合信息服務用戶獲取信息的效率具有重要意義.