(北方工業大學信息學院,北京 100144)
在一些日常培訓教學場景中經常出現一種比較尷尬的情況,就是在學生問出一些老師無法立刻給出答案的科學問題時,老師不能在沒有查閱準確資料的情況下正確回答問題,經分析,在新時代的青年學生在接觸了多種多媒體資料后通常對一些未知的知識充滿好奇,并且會在實際場合中向老師提問,基于深度學習的問答系統開發的成果主要包括以下內容:基于B/S架構的智能答疑系統軟件以及基于問題回答語言自動生成相關技術的一項發明專利。
基于深度學習的自動問答系統需要對學生提出的問題進行關鍵字抽取操作,抽取出最能體現句子含義的一些詞或短語,問題關鍵字抽取在很大程度上影響著自動答疑軟件返回答案的準確性。問題關鍵字提取主要經過學生輸入問題、中文分詞、關鍵字提取三個步驟。自動問答系統輸入模塊主要支持兩種提問形式,學生可以在文本框內直接輸入文字也可以通過語音輸入問題。而中文分詞本系統使用的是jieba全模式方式進行分詞,全模式分詞會掃描所有可以成詞的詞語,分詞速度快,呈現關鍵詞完整,容錯率較高,對于可能出現的重復詞,使用NLTK(Natural Language Toolkit)模塊進行去重,達到準確分詞的效果。本系統關鍵字提取步驟采用的是詞頻-逆向文件頻率模型(TF-IDF),該算法根據某些詞語或者短語在目標文本中出現的頻率,給予其一定權重,最后統計各個詞語或短語的權重和,最終以權重和選取關鍵詞檢索的一種算法。意思就是,如果一個詞語或短語在文本中出現頻率較高,那么它的權重就高;反之,若一個詞出現的次數很少甚至不出現,則它的權重就低。
基于深度學習的自動問答系統提取出學生問題關鍵詞后,會將其與知識庫中的問題關鍵詞進行對比,計算并選取相似度高的問題,返回其答案,現在使用比較廣泛的相似度計算方法有基于向量余弦的相似度計算方法,基于語料庫的相似度計算方法,二者有各自的使用場景也各有優缺點,本項目結合二者的優點,在此之上按照本項目的相關情況,設計出了關鍵詞相似度計算方法。
首先,基于深度學習的自動問答系統接收到關鍵詞后,采用基于向量余弦模型(VSM)計算方法,該模型的使用前提條件是要基于圖論的理論依據,所以兩個詞語之間必須存在關聯,通過判斷兩個詞語轉換成兩個余弦向量之后的向量距離來判斷兩者之間的相似度大小。在系統中使用向量空間模型將問題句子映射為一個向量a(x1,x2,x3,…,xn),將目標句子映射為另一個向量b(y1,y2,y3,…,yn),如圖1所示。
計算其對應向量之間的夾角余弦:

此方法能夠簡單直接的計算出詞義的相似度,但也存在不能夠反映詞語在不同語境所表達的不同含義,所以本項目需要有針對性的建立語料庫,補足關鍵字匹配關聯性的問題。
基于深度學習的自動問答系統需要采用自然語言生成技術對答案語言進行組織,自然語言生成是自然語言處理的一部分,可以看做自然語言處理的反向過程,該技術通常接受非語法格式的輸入,采用知識庫或者邏輯形式等機器表述系統生成自然語言。

圖1 映射向量Fig.1 Mapping vector
針對學生語言特點的分析,本項目采用N-gram模型進行語言組織。N-gram模型是一種語言模型(Language Model,LM),是一個基于概率的判別模型,它的輸入是一句話(單詞的順序序列),輸出是這句話的概率,即這些單詞的聯合概率(joint probability)。N-gram模型類似于生活中“聯想”的原理。比如:當我們提到“西瓜”時,我們會立刻聯想到“綠色”“大”“圓的”這些詞語、當提到“上火”、“金罐”時,肯定會聯想到“加多寶”而不是百事可樂。Ngram基于這樣的思想,它的特點是某個詞語的出現依賴于其他若干個詞語,并且獲取的信息越多,預測越準確。
得到了經過N-gram模型排列組合的語句之后,本軟件采用基于LSTM的自然語言生成模型輸出答案[1]。雙向長短時記憶網絡(Long Short-Term Memory,LSTM)算法設計是傳統的循環神經網絡(Recurrent Neural Network,RNN)的擴展[2],在技術上解決了RNN容易出現梯度消失的問題,在長序列的中有更好的表現。
基于LSTM的自然語言生成模型,如圖2所示,主要是通過抽樣選取的方式將一個個詞語拼接成完整的句子,利用編碼解碼的方式,進而達到描述語義的目的。

圖2 LSTM 的自然語言生成模型Fig.2 LSTM's natural language generation model
LSTM內部,如圖3所示,使用門控機制解決了RNN的梯度消失問題[3],通過三個門結構:輸入門、遺忘門、輸出門、選擇性地遺忘部分歷史信息,加入部分當前輸入信息,最終整合到當前信息產生輸出信息。

圖3 LSTM 內部結構圖Fig.3 LSTM internal structure diagram
基于深度學習自動問答系統中主要的使用權限為學生用戶,主要的功能是提問,步驟如下:學生進入首頁,登錄自己的帳號,進入提問頁面,使用語音提出問題,或在文本框內輸入問題,點擊提交。系統收到問題后判斷問題輸入格式,如果是語音輸入則公司原有系統將語音轉化為文字進行錄入。系統處理接收到的句子,進行分詞和提取關鍵詞操作。系統根據關鍵詞在知識庫中檢索相似度高的問題。按照相似度從高到低輸出檢索到的問題答案。如果沒有相似度高的問題,轉向搜索引擎搜索問題,同時使用網絡爬蟲抓取相關網頁。
搜索到答案之后,使用自然語言生成技術將答案返回給學生,同時提示答案來源于網絡。教師通過歷史記錄給出標準答案后,學生通過查看歷史記錄獲取。
基于深度學習的自動問答系統中教師的使用權限為教師用戶,主要負責解答學生問題,篩選爬蟲結果,具體步驟如下:教師在首頁里登錄,需要先確認教師身份,認證通過后進入教師用戶頁面,可以在此頁面管理學生的相關信息。教師可以查看歷史記錄,查看是否有新提出的問題,該問題在現有知識庫中是否存在,若已有問題,查看是否準確,是否需要更改;若未記錄,查看搜索引擎以及網絡爬蟲結果。審閱搜索以及抓取到的結果是否正確,說法是否符合學生理解能力。如果對結果滿意,可以將問題及答案添加到知識庫;如果不滿意,可以刪掉結果,自行撰寫答案,添加到知識庫中。
基于深度學習的自動答疑系統是一套B/S 架構的智能答疑系統,可以幫助學生答疑科學常識相關課程難點,提高學生的自主學習能力;也方便教師集中尋找問題,及時對課程內容和教學方法進行調整。如下表是該軟件簡單介紹:
完成注冊信息后,返回首頁點擊登錄,進入登錄頁面,輸入信息,通過身份驗證后可以進入使用界面。學生進入使用界面后,可以在文本框中輸入自己想問的問題;或點擊麥克風錄入問題,說完語音后系統會將語音轉化為文字顯示在文本框內,確認完成后點擊提交即可獲取答案。
在提交問題后,系統分析模塊便開始分析問題。具體流程如下:
開始進行自然語言理解,進行分詞、語義理解、提取關鍵詞;在知識庫中比較提取出來的關鍵詞相似度查找答案,找到相似度超過0.5的問題,將答案以列表形式返回給學生。
如果知識庫中未收錄過該問題,系統將會轉向使用搜索引擎到網絡上查找答案。同時使用網絡爬蟲下載所有問題相關的網頁,將抓取到的結果添加到知識庫中。系統會將搜索到的結果返回顯示給學生,同時提示“所提問題在知識庫中未收錄,已為您在網上查詢到如下結果,結果可能存在錯誤,請等待教師確認?!钡冉處煂徍怂阉鹘Y果并確認標準答案后,學生點擊“查看歷史問題”即可查看準確答案。
本系統所實現的主要功能包括基于網絡爬蟲和歷史數據的知識庫自動構建,在系統的使用過程中,隨著使用者在本系統進行提問,隨著問題數量增加和類型不斷地豐富,本系統的網絡爬蟲功能會爬取網上與問題相關的網頁,豐富知識庫的內容,然后系統對網絡爬蟲爬取的答案進行篩選,這樣不僅能夠有效增強知識庫的精確性,同時該系統可通過網絡爬蟲靶向性地聚集在問答內容密集的網站,為知識庫的數據維護提供保障。另外本系統還實現了基于深度學習的問題答案語言自動組織與撰寫,當用戶使用本軟件進行提問時,輸入問題之后進行自然語言處理、提取關鍵字,在知識庫中檢索問題答案,最后采用自然語言處理的文本生成技術進行答案語言組織將查詢結果顯示給用戶。