付 燕,辛 茹
(西安科技大學 計算機科學與技術學院,陜西 西安 710054)
問答技術是為了讓用戶通過自然語言就可以與計算機進行交互的技術。但是由于目前問題和潛在正確答案之間的匹配度并不高,給智能問答帶來了挑戰[1]。
梁敬東等[2]提出了一種通過word2vec和LSTM來計算句子相似度實現的FAQ問答系統,模型相較于傳統的算法較大提高了答案匹配的準確率;榮光輝等[3]提出的基于深度學習的方法解決了傳統人工構造特征中特征不足以及準確率低下的問題;陳靜[4]以句子的詞向量矩陣作為模型的輸入,以問答匹配的置信度作為模型的輸出,提高了問答系統的準確率。類似的基于深度學習的智能問答算法可參考文獻[5-8]等。
以上方法主要利用關鍵詞對文檔進行定位,得到的結果與用戶想要的答案有一定差距。基于此提出了一種基于word2vec的考慮文檔關鍵詞之間關系的混合神經網絡的智能問答算法。
LSTM網絡解決了長時依賴問題[9]。LSTM在抽取特征之后,針對不同時序產生的特征狀態,通過max-pooling或者avg-pooling獲得最終的特征。無論是max-pooling或者avg-pooling只是對不同的特征做出最后的選擇,因此提出的LSTM_CNN算法采用一些其它的技巧對特征進行選擇。該算法即是對這里的特征選擇進行改進,采用CNN算法的結構對所有的時序特征做出最后的選擇,即LSTM_CNN算法。算法框架如圖1所示。

圖1 LSTM_CNN算法流程
為了選擇合適的分詞工具作為本文數據預處理操作中的分詞處理,在同一實驗環境下,測試了現有常用的3種分詞方法(THULAC、LTP、JieBa)的性能。實驗環境為Intel Core i5 2.8 GHz。評測結果見表1。

表1 SIGHAN Bakeoff 2005 MSR,560 KB
以上是對標準測試集的實驗結果,同時也對各方法從速度上進行了實驗,結果見表2。

表2 數據集:CNKI_journal.txt(51 MB)
評測結果顯示,在速度與正確性上,結巴分詞(JieBa)均具有較好的性能,故采用結巴分詞(JieBa)的Python版本進行分詞操作。
本文選取的語料庫為搜狗新聞語料庫,其中的語料來自搜狐新聞2012年6月-7月期間,國內、國際、體育、社會和娛樂等18個頻道的新聞數據。
具體處理流程如圖2所示。

圖2 詞向量計算流程
本次實驗以答案對的形式存儲數據 (q,a+,a-),q表示問題,a+表示正向答案,a-表示負向答案。實驗所用的訓練數據已經包含了問題和正向答案,因此需要對負向答案進行選擇,實驗時采用隨機的方式對負向答案進行選擇,組合成 (q,a+,a-) 的形式。
對所得到的問題、答案對的形式,利用word2vec將一個句子轉換成固定長度的向量表示,從而便于進行數學處理。Word2vec矩陣給每個詞分配一個固定長度的向量表示,這個長度可以自行設定,比如300,實際上會遠遠小于字典長度(比如10 000)。而且兩個向量之間的夾角值可以作為它們之間關系的一個衡量。通過簡單的余弦函數,計算兩個單詞之間的相關性,如式(1)所示
(1)
LSTM_CNN算法選擇共享的LSTM模型來計算問題和答案的語義特征。LSTM對輸入的問題答案信息的詞向量進行特征選擇,可以對距離相對較遠的詞與詞之間的聯系選取出更好的特征。
CNN[10]最大的優勢在特征提取方面。當使用LSTM模型計算的到問題和答案的特征后,再通過共享的CNN做進一步的特征選取,這種方法得到的實驗結果性能更優。
采用問題和答案最終獲取的特征,計算目標函數(cosine_similary),如圖3所示。其中,P是1-MaxPooling; T是tanh層。目標函數計算如式(2)所示
L=max{0,M-cosine(q,a+)+cosine(q,a-)}
(2)
M是需要設定的參數margin,q、a+、a-分別是問題、正向答案、負向答案對應的語義表示向量。
本章算法的實驗環境見表3,算法在不同的環境下計算時會產生一些差異。

圖3 計算目標函數

表3 實驗環境
實驗所使用的數據集來自第六屆“泰迪杯”官方給出的全部訓練數據train_data_complete.json(170.6 MB),測試數據test_data_sample.json(552 KB)。其中訓練數據的格式為:問題-答案-標簽。標簽為1表示是問題的正確答案,標簽為0是無關內容。測試數據的格式為:問題-答案,未標注標簽。數據樣例見表4。

表4 數據集示例
數據預處理需要對原始問答數據進行分詞處理,數據集分詞后的結果一部分如圖4所示。測試集與訓練集的區別為測試集的標簽默認全是0。對原始數據進行分詞處理后,再構建相應的詞向量,構建的詞向量結果如圖5所示。

圖4 數據集分詞結果

圖5 詞向量結果
本模型使用結巴分詞處理后的訓練集、測試集數據以及詞向量進行實驗,數據集樣例見表4。
實驗中訓練設置的參數如下:學習率=0.05,每1000輪驗證一次,濾波器的尺寸=[1,2,3,5],濾波器的數目=500。經過多次實驗發現,訓練迭代輪數為3000次即可達到預期的目標,所以本次訓練迭代輪數為3000輪。經過3000輪的迭代訓練后,模型準確度已達到90%以上。已達到預期的訓練目標。模型準確度隨著迭代訓練輪數變化的趨勢如圖6所示。

圖6 模型準確度變化趨勢
在模型的訓練的過程中,為了對模型進行校驗,在每經過1000輪訓練迭代后,就會用測試集對模型進行校驗,并利用當前的模型求解問題與候選答案的關聯度,其值越接近1,則說明候選答案與問題的關聯度越高,也能說明候選答案是問題正確答案的可能性越大。訓練結束后,關聯度集部分結果如圖7所示。通過分析關聯度集中的數據,本文設置0.83為正確答案與錯誤答案的界限,關聯度低于0.83為錯誤答案,高于0.83為正確答案。根據此閾值,對測試集中的候選答案的標簽進行標注。

圖7 測試集關聯度集部分結果
為了驗證提出算法的有效性,將該算法分別與CNN和LSTM算法同等實驗條件下進行了對比。實驗結果見表5。

表5 不同算法的實驗對比結果
由表5中數據可以看出,CNN與LSTM都是比較好的深度學習方法,對于自然語義處理尤其是LSTM獨特的特點,通過循環重復利用網絡模塊,以便于更好處理語義之間的聯系;CNN可以直接通過詞向量作為神經網絡的輸入從而提取詞語直接的特征值,不必人工提取特征,從而使得對大型數據的語義處理效率更高,通過將二者結合,實驗結果驗證了該算法的有效性。
本文對LSTM及CNN等方法進行了深入的分析與研究,并詳細闡述了本文的考慮文檔關鍵詞之間關系的LSTM_CNN模型。但隨著現實應用需求的不斷變化,對智能問答算法的執行效率和答案的準確度也越來越高。因此未來還可從以下兩點對智能問答模型進行深入研究:①在線文本的處理;②模型性能的進一步優化。未來可通過對模型算法的進一步優化,給出準確率更高的答案,從而進一步提高模型的性能。