張鶴凝,馬佳琳
(沈陽師范大學(xué)科信軟件學(xué)院 遼寧 沈陽 110034)
長期以來,智能問答系統(tǒng)的問世使得我們用鼠標(biāo)、鍵盤和電腦互動(dòng),并且語音識別、手勢識別等最新進(jìn)展,使得人機(jī)交互不斷發(fā)展。聊天機(jī)器人是人工智能代理,也是這種趨勢之一。聊天機(jī)器人有兩種構(gòu)建方式:生成型和檢索型的聊天機(jī)器人。檢索型聊天機(jī)器人很簡單,在知識庫中有預(yù)定義的輸入。生成型聊天機(jī)器人從學(xué)習(xí)的例子中生成自己的句子。檢索型聊天機(jī)器人比生成型聊天機(jī)器人相對更容易構(gòu)建,因?yàn)樗鼈冎恍枰獙Ξ?dāng)前對話做出響應(yīng)[1]。對話系統(tǒng)支持人機(jī)交互,主要輸入模式是語音和文本。建造一臺能夠使用自然語言與人類交流的機(jī)器一直是計(jì)算機(jī)科學(xué)的長期目標(biāo)。聊天機(jī)器人結(jié)合心理咨詢服務(wù)的研究對于促進(jìn)人們的心理健康具有深刻意義[2]。
本文選用開源的心理咨詢問答語料庫,該語料庫由斯坦福大學(xué)等心理學(xué)專業(yè)人士參與建設(shè)。這是心理咨詢領(lǐng)域首個(gè)開放的QA語料庫。一般來說,中文語料數(shù)據(jù)為長文本組成,比如文章摘要、句子、段落或者整篇文章組成的一個(gè)集合。其中文本中句子、段落之間的字、詞語是連續(xù)的,有一定含義。而進(jìn)行文本挖掘分析時(shí),我們希望文本處理的最小單位是詞或者詞語,所以這個(gè)時(shí)候就需要結(jié)巴分詞技術(shù)來將文本全部進(jìn)行分詞[3]。
目前為止計(jì)算機(jī)還無法理解自然語言,所以文本向量化是首先要考慮的。如何把分詞之后的字和詞語表示成計(jì)算機(jī)能夠識別的類型,需要把中文分詞的字符串轉(zhuǎn)換成數(shù)字類型,確切的說應(yīng)該是數(shù)學(xué)中的向量[4]。所以我們需要將每個(gè)詞進(jìn)行數(shù)字化,這里選擇建立索引的方式。以詞表為基礎(chǔ)建立索引庫,根據(jù)用戶提問中的關(guān)鍵詞迅速找到包含特定關(guān)鍵詞的段落。這里數(shù)據(jù)處理包括索引生成與索引過程。其中,索引生成是把分詞之后的字和語句進(jìn)行索引,在進(jìn)行查詢的時(shí)候可以根據(jù)索引快速定位。通過Word2index技術(shù)生成索引文件。而索引過程是用戶在提問時(shí),將依據(jù)系統(tǒng)抽取的關(guān)鍵詞從索引表中找出滿足條件的所有段落取交集返回。
本系統(tǒng)使用python作為開發(fā)語言,在設(shè)計(jì)上遵循配置靈活、代碼模塊化的思路,分為五大模塊;分別是數(shù)據(jù)預(yù)處理器、數(shù)據(jù)處理、執(zhí)行器、深度學(xué)習(xí)模型以及可視化。數(shù)據(jù)預(yù)處理是將原始語料庫通過python的結(jié)巴分詞器對語料庫進(jìn)行分詞處理,語料分詞后通過word2vec向量表示以便于滿足數(shù)據(jù)處理模塊的要求;執(zhí)行器是整個(gè)系統(tǒng)引擎分別在運(yùn)轉(zhuǎn)的時(shí)候調(diào)用數(shù)據(jù)處理器、深度學(xué)習(xí)模型進(jìn)行數(shù)據(jù)處理、模型訓(xùn)練、運(yùn)作等工作;深度學(xué)習(xí)模型是一個(gè)基TF的seq2seq模型。可視化展示是面向用戶的人機(jī)交互系統(tǒng)。圖1為整體的框架圖。
圖1 系統(tǒng)框架
(1)首先對選用的開源語料庫進(jìn)行語料數(shù)據(jù)預(yù)處理;
(2)使用seq2seq模型訓(xùn)練預(yù)處理的數(shù)據(jù)集最終得到對話模型;
(3)用戶輸入問題,根據(jù)對話語句上下文信息提取相關(guān)主題詞;
(4)最后將預(yù)處理之后的問題通過Api調(diào)用訓(xùn)練的模型獲取對應(yīng)的回答。
序列到序列的方法或稱為seq2seq的方法是將給定序列從一個(gè)域轉(zhuǎn)換到另一個(gè)域的深度學(xué)習(xí)方法。編碼器作為輸入端用于輸入序列做學(xué)習(xí)訓(xùn)練,并將序列傳遞給中間向量,解碼器用于輸出中間向量訓(xùn)練后的序列。每一次的輸出即是下一次的輸入[5]。本系統(tǒng)利用seq2seq模型的特點(diǎn),結(jié)合word2vec的思路,將訓(xùn)練語料分為Ask語料集和Replay語料集,并根據(jù)一定的比例分為訓(xùn)練語料集和驗(yàn)證語料集。在數(shù)據(jù)處理完成后,執(zhí)行器根據(jù)訓(xùn)練模型調(diào)用seq2seq模型創(chuàng)建神經(jīng)網(wǎng)絡(luò)。在訓(xùn)練過程中,使用perprelixy來計(jì)算模型的loss,通過自動(dòng)調(diào)整learning rate來逐步取得最優(yōu)值,當(dāng)learning rate減少為0達(dá)到最優(yōu)值。最終可視化展示模塊啟動(dòng)進(jìn)程調(diào)用執(zhí)行器來實(shí)時(shí)在線提供聊天服務(wù),在語句輸入和輸出利用seq2seq的特點(diǎn),直接將輸入seq轉(zhuǎn)換成vec作為已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),然后神經(jīng)網(wǎng)絡(luò)會生成一個(gè)seq向量,通過查詢詞典的方式將生成的向量替換成中文句子。訓(xùn)練模型部分代碼如下:
return tf.reduce_mean(loss_)
checkpoint =tf.train.Checkpoint(optimizer=optimi zer,encoder=encoder,decoder=decoder)
@#tf.function
def train_step(inp,targ,targ_lang,enc_hidden);
loss=0
互聯(lián)網(wǎng)時(shí)代人們對電子產(chǎn)品的依賴性越來越強(qiáng),人與人交流的機(jī)會越來越少,很難達(dá)到理解與共情,負(fù)面情緒隨之而來。人們無法專門騰出時(shí)間去心理咨詢室進(jìn)行咨詢,甚至有的人并沒有覺察到自己的心理狀態(tài)變化,所以無法及時(shí)得到心理疏導(dǎo)[6]。因此,心理咨詢對話系統(tǒng)的研究對于促進(jìn)人們的心理健康具有深刻意義。隨著科技的不斷發(fā)展,心理咨詢師的輔助心理服務(wù)方式也越來越多,例如網(wǎng)上咨詢互動(dòng)。人工智能的加入讓心理咨詢更加智能化,普及心理咨詢對話系統(tǒng)指日可待。
本文主要基于seq2seq模型對心理咨詢對話系統(tǒng)進(jìn)行研究,結(jié)合心理咨詢語料庫,利用深度學(xué)習(xí)框架解決序列到序列的問題,提出對話系統(tǒng)為用戶提供心理咨詢服務(wù),使用戶感覺更像是在和人(咨詢師)進(jìn)行對話。近年來,國家特別重視國民的心理健康,因此,在實(shí)現(xiàn)心理咨詢對話功能的基礎(chǔ)之上做出一些判斷,判斷用戶也就是來訪者是否患有抑郁之類的癥狀,并且得出相應(yīng)結(jié)論是日后研究的重點(diǎn)。心理咨詢對話系統(tǒng)暗示了未來交互代理實(shí)際上可能會被引入精神病學(xué)領(lǐng)域。