田煥,陳志榮
(寧波工程學(xué)院 理學(xué)院,浙江 寧波 315211)
當(dāng)前大數(shù)據(jù)時代背景下,高校已經(jīng)建立起數(shù)字化教學(xué)管理和各類信息服務(wù)平臺,但是校園信息繁多且通常分布在各個獨立的校內(nèi)網(wǎng)站上,這給缺少綜合信息處理能力、獲取專業(yè)培養(yǎng)方案或校園信息的途徑往往還是依賴詢問學(xué)長、老師等的大學(xué)生,帶來諸如數(shù)據(jù)陳舊、信息不實、課程設(shè)置不理解等一系列負(fù)面問題。因此,迫切需要為大學(xué)生提供一個可以進(jìn)行人機(jī)對話、實時答疑解惑,且簡單、易操作的綜合服務(wù)平臺。
當(dāng)前有關(guān)人工智能的技術(shù)已遍布各行各業(yè),多個領(lǐng)域也因人工智能技術(shù)的加入而快速發(fā)展,人們在各方面生活也因此更加便利高效。而作為在人工智能領(lǐng)域中較有難度的研究方向——人機(jī)對話,也得到了廣泛的重視。各大企業(yè)的人機(jī)對話產(chǎn)品不斷涌現(xiàn),如蘋果公司的Siri,微軟的Cortana等。本文將采用人工智能技術(shù)面向高校應(yīng)用場景,根據(jù)大學(xué)生高頻搜索的校園和專業(yè)信息的問答文本數(shù)據(jù),訓(xùn)練二進(jìn)制詞向量文件,結(jié)合Seq2Seq模型和Attention機(jī)制構(gòu)建生成式對話模型,最后開發(fā)實現(xiàn)高校智能對話系統(tǒng)。
首先需要收集數(shù)據(jù)并訓(xùn)練,將問答對文本數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制向量文件,借此與問題向量進(jìn)行余弦相似度計算,返回相似度最高的回答。對于余弦相似度未達(dá)到設(shè)定閾值的問題,利用Seq2Seq和Attention機(jī)制組建的生成式對話模型,作生成式應(yīng)答,具體如圖1所示。
圖1 人機(jī)智能對話模型
經(jīng)過訓(xùn)練后的結(jié)構(gòu)化數(shù)據(jù)是實現(xiàn)人機(jī)對話的核心基礎(chǔ)。本文以信息與計算科學(xué)專業(yè)為例,重點關(guān)注專業(yè)培養(yǎng)方案、課程設(shè)置、專業(yè)教師評價、學(xué)分規(guī)定、往屆畢業(yè)生信息、考研相關(guān)、就業(yè)信息、出國資訊和獎學(xué)金信息等。通過收集線上線下大學(xué)生問卷、歷屆生專業(yè)評價調(diào)查、咨詢本專業(yè)負(fù)責(zé)人以及校內(nèi)現(xiàn)有公開的校園信息語料庫,形成基礎(chǔ)問答文本數(shù)據(jù)。收集到的網(wǎng)絡(luò)文本和自然語言會有諸如不規(guī)范、半結(jié)構(gòu)化的問題。因此,為了去除文本中無意義的數(shù)據(jù)以及重復(fù)多余的內(nèi)容,需要對問答文本進(jìn)行預(yù)處理,主要包括以下步驟:噪聲數(shù)據(jù)去除、分詞及詞性標(biāo)注、停用詞過濾。[1]
1)去噪。在網(wǎng)絡(luò)上搜集到的數(shù)據(jù)不一定完全是文字,可能還含有圖片、表情和符號等無意義的數(shù)據(jù)噪聲數(shù)據(jù),這些數(shù)據(jù)不僅會增加文本處理的工作量,更會對后續(xù)的分詞等一些操作造成影響,從而降低了文本處理的效率。因此可以先對數(shù)據(jù)進(jìn)行去噪處理,將數(shù)據(jù)轉(zhuǎn)換為純文字序列文本。
2)分詞。在中文文本中,一個短文本的語義表達(dá)是以詞來劃分的。中文分詞的作用是將去除噪聲數(shù)據(jù)后的純字序列文本按中文分詞規(guī)則分割開。另外,詞性標(biāo)注也是必要的,便于實現(xiàn)句法分析、信息抽取等工作。在前期對問答數(shù)據(jù)進(jìn)行中文分詞以及詞性標(biāo)注時可以利用分詞包來完成。
3)過濾。停用詞過濾則是為了刪除文本中重復(fù)率高但信息量低的詞,例如“啊”“和”等,從而提高重要詞的比例。
人機(jī)對話回答問題的準(zhǔn)確度受到問答數(shù)據(jù)的數(shù)量、質(zhì)量以及系統(tǒng)理解問句和處理問題的方式等因素影響,利用合適的自然語言處理技術(shù)可以提高答案的準(zhǔn)確性。詞的表示方式通常為以下兩種:One-hot Representation(獨熱表示)和Distribution Representation(分布式表示)。[1]因為高校對話系統(tǒng)所包含的問題領(lǐng)域較多、數(shù)據(jù)維度比較大,而獨熱表示無法展示詞與詞之間的關(guān)聯(lián)性,因此本文采用分布式表示方式。分布式表示是通過模型訓(xùn)練將每個詞都編碼成一個固定長度的向量來達(dá)到降維的目的,并將這些向量在向量空間中表示出來,每個向量在其中則可以表示為一個點。在這個空間中引入“距離”的概念,距離越近相似度也就越高。利用分布式表示可以將問答對文本數(shù)據(jù)和學(xué)生提出的問題轉(zhuǎn)換成向量、進(jìn)行相似度比較找到答案。
詞嵌入(Word Embedding)即是對詞采用分布式表示。本文利用Word2vec來得到二進(jìn)制向量文件,其采用了CBOW和Skip-gram兩種訓(xùn)練模型[1]。其中CBOW是通過上下文預(yù)測當(dāng)前詞,Skip-gram則是利用當(dāng)前詞來預(yù)測上下文。例如,“信科”“信科專業(yè)”“信息與計算科學(xué)”等詞向量,經(jīng)過訓(xùn)練后都會預(yù)測成為“信息與計算科學(xué)專業(yè)”標(biāo)準(zhǔn)詞向量。
問句相似度計算會存在相似度低于閾值的情況即無法回答的情況,這就需要增加一個基于Seq2Seq的生成式對話模型來避免這種情況產(chǎn)生,可以針對學(xué)生提出的各種不同的問題給出生成式答案[1]。Seq2Seq模型是一個使用神經(jīng)網(wǎng)絡(luò)將一個序列映射到另一個序列的通用框架,其改善了輸入序列長度固定的問題。Seq2Seq模型的思想是使用一個LSTM(長短期記憶網(wǎng)絡(luò))讀取輸入序列,每次一個時間步長,從而將輸入序列編碼成固定維度的向量(編碼Encoder過程),然后使用另一個LSTM從該向量提取輸出序列(解碼Decoder過程)。在訓(xùn)練模型時,就可以將問題向量作為輸入序列,將答案向量作為輸出序列,將每個問題向量和對應(yīng)的答案向量各自經(jīng)過編碼和解碼過程進(jìn)行訓(xùn)練。
Seq2Seq模型如圖2所示,首先讀取一個輸入句子“理學(xué)院專業(yè)”,然后生成“金融工程,信息與計算科學(xué)……”作為輸出句子。模型在輸出語句結(jié)束標(biāo)記EOS后停止進(jìn)行預(yù)測。其中,LSTM會反向讀取輸入句子,因為這樣可以在數(shù)據(jù)中引入許多短期依賴性,從而使優(yōu)化問題更容易解決。
圖2 Seq2Seq模型
由于輸入序列編碼向量的長度是固定的,因此能夠存儲的信息也是有限的。若輸入問題文本序列比較長,傳遞的信息比較多,那么必然會產(chǎn)生較大的信息損耗。因此本文引入Attention機(jī)制,模擬人的注意力,使其聚焦到重要信息上,比如在“理學(xué)院有哪些專業(yè)”中,重點就在于“理學(xué)院”和“專業(yè)”,那么它就會把注意力集中在這兩個詞上。Attention機(jī)制的本質(zhì)如下圖3所示。
圖3 Attention機(jī)制
通過Query和key間的關(guān)聯(lián)性可以得到每個value的權(quán)重系數(shù),再對value加權(quán)求和得到Attention value。不引入Attention機(jī)制的Seq2Seq模型只會將Encoder最后的輸出作為Decoder的輸入,而引入Attention機(jī)制則會在每個時間步都選擇與之相關(guān)的編碼器信息。在時間步為t時,Attention保存著Encoder的每一步輸出,并且Attention的輸出將會作為上下文信息與解碼器在t時刻的輸入拼接起來一起輸入到解碼器,從而實現(xiàn)上下文語義關(guān)聯(lián),問題回答更加精準(zhǔn)。
高校智能對話系統(tǒng)主要服務(wù)對象是在校大學(xué)生,需要便捷易操作。本文選用微信小程序作為前端,為學(xué)生提供一個可對話交互的界面。微信程序使用面廣泛,用戶不需要再去安裝、學(xué)習(xí)和適應(yīng)新系統(tǒng),使用方便;且微信小程序不需要下載,不占手機(jī)空間。
基于生成式對話模型,智能對話系統(tǒng)主要包括問題理解、問題檢索兩個功能模塊。問題理解是為了讓系統(tǒng)理解接收到的問題,含文本預(yù)處理和問題判斷;文本預(yù)處理包括去除噪聲、分詞、去停用詞等操作;問題判斷則是依靠詞向量轉(zhuǎn)換。問題檢索是為了獲取到問題相應(yīng)的答案,可以通過詞向量轉(zhuǎn)換和問句相似度計算實現(xiàn)。
系統(tǒng)處理問題的流程如圖4所示。在收到問題后,經(jīng)過預(yù)處理將問題轉(zhuǎn)化為機(jī)器所能理解識別的結(jié)構(gòu)化序列,再根據(jù)已訓(xùn)練的詞向量模型把問題轉(zhuǎn)換為詞向量,進(jìn)而與已有問題向量進(jìn)行余弦相似度計算,最終以相似度最高的問題去查詢數(shù)據(jù)庫中的答案返回給學(xué)生。若是相似度未達(dá)到設(shè)定的閾值,則問題將會輸入到預(yù)先訓(xùn)練好的Seq2Seq生成式對話模型,做生成式應(yīng)答反饋給用戶。
如圖5所示,進(jìn)入對話界面后,學(xué)生可發(fā)出提問,系統(tǒng)接收到問題后進(jìn)行處理并返回答案或做生成式應(yīng)答,實現(xiàn)高校場景下的人機(jī)對話。
圖4 問題處理流程
圖5 人機(jī)對話演示
本文利用自然語言處理技術(shù),針對高校大學(xué)生專業(yè)綜合信息獲取困難等問題,設(shè)計生成式對話模型,并基于該模型開發(fā)實現(xiàn)智能對話微信小程序。系統(tǒng)測試結(jié)果顯示:回答的準(zhǔn)確率約為81.24%。隨著使用量擴(kuò)大,用戶的提問數(shù)據(jù)可以加入到訓(xùn)練模型中,系統(tǒng)迭代升級后準(zhǔn)確率將會進(jìn)一步提高。此外,Attention機(jī)制也還存在一些缺點,如對序列的所有元素采用并行處理無法考慮輸入序列的元素順序,而要想捕捉位置信息還需要改進(jìn)。如有足夠的訓(xùn)練數(shù)據(jù),本模型和系統(tǒng)后期可擴(kuò)展至其他應(yīng)用場景。