国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于深度學習的文本情感聊天機器人系統(tǒng)的設計與實現(xiàn)

2023-04-07 05:47:53上官鑫呂俊玉張桓宇劉力軍
軟件工程 2023年4期
關鍵詞:注意力機制深度學習

上官鑫 呂俊玉 張桓宇 劉力軍

關鍵詞:情感監(jiān)督;Seq2Seq;注意力機制;深度學習

中圖分類號:TP311.1 文獻標識碼:A

1引言(Introduction)

近年來,隨著人工智能技術的不斷發(fā)展,通過自然語言與人類進行對話的聊天機器人成為研究熱點,并因深度學習在自然語言處理、詞向量表示、情感分析等領域的廣泛應用,使其逐漸成為研究聊天機器人的關鍵技術[1]。目前,許多商業(yè)公司推出了應用深度學習技術的相關產品,如“蘋果”的Siri、“微軟”的小冰、“百度”的度秘等。雖然現(xiàn)有聊天機器人都可以與人類進行無差錯交流,普遍表現(xiàn)出“智商”很高,但是人們在日常交換信息的過程中,傳達的信息不僅包含信息語義本身,還包含著情感與情感狀態(tài)。為了使人機對話更加貼近現(xiàn)實,人們寄希望于聊天機器人具有“智商”的同時也具有“情商”。本文提出基于深度學習的文本情感聊天機器人系統(tǒng),滿足人們進行日常文本聊天中對情感的需求,具有支持中英雙語對話、情感分類多元、適用多領域對話的功能,提升了用戶在日常閑聊時的使用體驗。

2研究現(xiàn)狀(Research status)

現(xiàn)有的文本聊天機器人按功能可劃分為任務型和非任務型。針對日常聊天應用場景,采用非任務型可以更好地提升用戶使用體驗,提高用戶滿意度。非任務型聊天機器人按對話的實現(xiàn)方式可以分為檢索式對話系統(tǒng)和生成式對話系統(tǒng)[2]?;跈z索式的聊天機器人的回復語句存有單一匹配關鍵字的問題,其利用信息檢索技術為用戶會話請求匹配已經(jīng)事先存儲的對話語料作為回復[3]。基于生成式的聊天機器人,在現(xiàn)有的研究基礎上其回復語句多使用情感通用性回復語句,情感單一[4]。此類聊天機器人多采用Encoder-Decoder(編碼器-解碼器)框架中的Seq2Seq模型,其主要應用端到端框架[5],利用大量自然語言訓練集學習從問題到答案的關系,從而根據(jù)用戶輸入語句自動生成相應的回復,具備一定的自我學習能力。一些研究表明,基于Seq2Seq模型對于短句子有著較好的表現(xiàn),但對于長句子則表現(xiàn)力有所下降。注意力機制可以選擇性地學習句子中的部分單詞或片段[6],從而更好地處理長句子。目前在情感對話領域,許多研究者將各種端到端的神經(jīng)網(wǎng)絡模型作為情感對話生成模型的基礎,并通過情感分析、情感嵌入等技術對模型進行改進,實現(xiàn)了在對話生成中的情感表達[7]。周震卿等[8]提出了基于TextCNN(文本卷積神經(jīng)網(wǎng)絡)情感預測器的情感監(jiān)督聊天機器人,在Seq2Seq模型中引入更準確的情感特征,由問題直接獲取回復的情感表示,有效地提高了回復語句的質量,但存在不能區(qū)分情感類別和對長文本不敏感的問題。

3系統(tǒng)設計(System design)

本系統(tǒng)采用Seq2Seq+Attention(序列到序列+注意力機制)模型,解決現(xiàn)有文本聊天機器人存在的單一匹配問題。構建TextCNN-BiLSTM-SlefAttention(文本卷積神經(jīng)網(wǎng)絡-雙向長短期記憶網(wǎng)絡-自注意力機制)情感分類器,獲得具備表示文本情感的情感向量和情感分類向量。為了讓聊天機器人具有更好的情感回復表達,將情感向量嵌入基于GRU的Seq2Seq+Attention對話模型中,同時將情感分類向量加入訓練模型的損失函數(shù)中,實現(xiàn)對話過程中的情感監(jiān)督,避免產生通用性情感回復語句。運用豐富的數(shù)據(jù)集進行模型訓練,實現(xiàn)中英文對話,滿足了文本聊天中的多領域對話需求。使用微信小程序作為系統(tǒng)的前端,實現(xiàn)前后端分離,便于前端優(yōu)化和功能更新。

3.1系統(tǒng)框架結構

本系統(tǒng)采用分離式前后端部署的方式,前端部署在微信小程序中,與用戶進行交互;后端部署在Flask(Web應用程序框架)中,對用戶信息進行處理與反饋。系統(tǒng)的整體框架如圖1所示。

本系統(tǒng)邏輯結構分為輸入模塊、預處理模塊、對話處理模塊、輸出模塊,系統(tǒng)的邏輯結構如圖2所示。

系統(tǒng)邏輯結構流程如下:

①用戶在交互界面輸入文本;

②輸入文本經(jīng)格式轉換后傳輸?shù)胶蠖朔掌鳎?/p>

③后端服務器將接收到的文本進行格式化預處理;

④將預處理后的文本輸入對話處理模塊中自動生成回復文本;

⑤回復文本經(jīng)格式轉換后返回給用戶。

3.2情感分類模型

關于文本情感分類的研究,一般是對情感類別(褒義、中性、貶義)進行情感分類;原福永等[9]提出將BiLSTM(雙向長短期記憶網(wǎng)絡)與CNN(卷積神經(jīng)網(wǎng)絡)模型結合,與此同時引入Attention(注意力)機制實現(xiàn)對人們的情感進行分類;李輝等[10]提出將CNNGRU-Attention混合,實現(xiàn)二元(消極、積極)分類,并引入Attention機制構建混合神經(jīng)網(wǎng)絡模型學習重要文本信息。

本系統(tǒng)通過構建TextCNN-BiLSTM-SelfAttention情感分類模型,應用于問題情感分類器和答案情感監(jiān)督器。以憤怒、反感、害怕、內疚、快樂、難過、羞愧7類情感作為情感分類標簽,對輸入文本進行情感類別預測,其情感分類模型如圖3所示。

3.3 對話處理訓練模型

通過Seq2Seq+Attention模型與情感分類模型結合,構建對話處理訓練模型,如圖4所示。

對話處理的訓練流程如下:①將問題數(shù)據(jù)集序列分別輸入編碼器和問題情感分類器中,產生編碼向量和情感向量;②將上述產生的向量及decoder(解碼器)的hidden state(隱藏狀態(tài))經(jīng)過注意力機制產生context vector(上下文張量);③將答案數(shù)據(jù)集序列及context vector加入解碼器中,輸出回復向量及hidden state向量;④將hidden state向量輸入到答案情感監(jiān)督器中,輸出情感分類向量;⑤將解碼器輸出的回復向量和答案情感監(jiān)督器輸出的情感分類向量加入對話訓練模型的損失函數(shù)中,使對話訓練模型在訓練過程中實現(xiàn)情感監(jiān)督。

3.4對話處理預測模型

本系統(tǒng)采用對話處理訓練模型去除答案情感監(jiān)督器構成對話處理預測模型,從而進行對話處理預測,如圖5所示。

對話處理的預測流程如下:①將問題數(shù)據(jù)集序列分別輸入編碼器和問題情感分類器中,產生編碼向量和情感向量;②將上述產生的向量以及decoder的hidden state經(jīng)過attention機制產生context vector;③將解碼時間步序列以及contextvector輸入解碼器中,輸出對話預測序列。

4系統(tǒng)實現(xiàn)(System implementation)

系統(tǒng)實現(xiàn)分為前端設計實現(xiàn)、數(shù)據(jù)預處理、對話處理和系統(tǒng)部署四個部分。

4.1實現(xiàn)環(huán)境

本系統(tǒng)實現(xiàn)環(huán)境詳見表1。

4.2前端設計實現(xiàn)

本系統(tǒng)的前端設計實現(xiàn)分為界面設計模塊,實現(xiàn)用戶交互界面;輸入模塊,實現(xiàn)對話文本更新。

4.2.1界面設計模塊

微信小程序框架系統(tǒng)分為邏輯層和視圖層。邏輯層使用JavaScript引擎,將數(shù)據(jù)進行處理后發(fā)送給視圖層,同時接收視圖層的事件反饋。視圖層由WXML(頁面文件)、WXSS(樣式文件)編寫,將邏輯層的數(shù)據(jù)反映到視圖層,同時將視圖層的事件發(fā)送給邏輯層。WXML用于描述頁面的結構,WXSS用于描述頁面的格式。

本系統(tǒng)實現(xiàn)的前端界面由對話框和輸入框構成,對話框實現(xiàn)用戶對話內容展示,輸入框接收用戶輸入文本,如圖6所示。

在對話框中實現(xiàn)聊天文本更新的流程,如圖7所示。

圖7中,msg為獲得的問題文本/答案文本;msglist為對話過程中產生的問題、答案文本集;wx:for(msglist)為頁面循環(huán)渲染msglist;scroll-into-view:bottom為將scroll-view窗口滾動到最低端(bottom為msglist的長度)。

該模塊流程如下:

①邏輯層在獲得輸入文本后,將輸入文本加入用戶對話列表中;

②視圖層進行頁面的重新渲染,將輸入文本信息展現(xiàn)在對話框中。

4.2.2輸入模塊

本模塊通過對用戶的輸入文本類別進行判斷,然后經(jīng)過json格式轉換傳輸?shù)胶蠖朔掌?,從而進行相對應語言的對話預測處理,如圖8所示。

4.3數(shù)據(jù)預處理

為了完成本系統(tǒng)語言模型的構建、訓練以及生成對話,需要大量的數(shù)據(jù)集?;谀壳耙延袛?shù)據(jù)集的基礎上,對其進行整理、預處理后加入對話生成模型中。整理數(shù)據(jù)集時發(fā)現(xiàn),電影字幕文件的對話素材較為豐富,因此采用康奈爾大學電影對話語料作為對話處理訓練模型的訓練數(shù)據(jù)集。采用帶有情感標注的情感數(shù)據(jù)集作為問題情感分類器的訓練數(shù)據(jù)集;此外,收集了ai(人工智能)、food(食品)、history(歷史)、movies(電影)、literature(文學)等17 種話題領域的數(shù)據(jù)集實現(xiàn)中文多領域對話。

數(shù)據(jù)預處理流程如圖9所示。

(1)對數(shù)據(jù)集中的文本進行清洗分割(以電影對話語料庫為例)。使用Python的正則庫re,其中re.sub()函數(shù)對數(shù)據(jù)集中的問題和答案對進行清洗分割;給問題、答案字符串的前后加上‘\t(開始)、‘\n(結束)標志;得到Question_list,Answer_list;其中,問題格式如‘\t how are you ?\n,答案格式如‘\t i am fine ! \n。

(2)將切割分詞后的文本轉換為向量化數(shù)字序列。將得到的Question_list、Answer_list,經(jīng)keras_preprocessing.Text.Tokenizer()處理得到Question_list_ids(問題向量化數(shù)字序列)、Question_vocab(問題字典)、Answer_list_ids(答案向量化數(shù)字序列)、Answer_vocab(答案字典)。keras_preprocessing.Text.Tokenizer:keras中的一個文本標記實用類,將每個文本轉化為一個整數(shù)序列,其每個整數(shù)都是詞典中標記的序列。

( 3 ) 將得到的向量化數(shù)字序列, 進行p a d d i ng填充。將得到的Question_list_ids、Answer_list_ids,經(jīng)keras_preprocessing.sequence.pad_sequences()處理,獲得定長的問題、答案向量化數(shù)字序列。keras_preprocessing.sequence.pad_sequences:將序列轉化為經(jīng)過填充后得到的一個長度相同的新序列。

4.4對話處理

將數(shù)據(jù)集樣本對放入系統(tǒng)構建的模型進行訓練,實現(xiàn)對話處理,完成對輸入文本的預測回復。系統(tǒng)模型訓練可分為問題情感分類器訓練和對話處理模型訓練。

4.4.1問題情感分類器訓練

問題情感分類器的嵌入層采用keras的自定義嵌入層(embedding layer),其embedding layer所有的words(單詞序列)被隨機初始化,將正整數(shù)(單詞序號)轉換為具有固定大小的向量。通過單層的卷積和池化進行特征提取,同時卷積層使用ReLU激活函數(shù),對特征向量進行非線性處理,避免了梯度消失和爆炸的問題,并提高BiLSTM的訓練計算效率。BiLSTM獲取抽取后輸入特征向量間的相關性,同時關注“頭部”和“尾部”的信息,可以更好地學習長序列信息。SelfAttention針對BiLSTM輸出的特征向量,捕獲遠距離的特征,將SelfAttention輸出的特征序列作為輸入文本的情感向量。使用全連接層、Dropout機制防止過擬合,提升模型訓練效率。同時,使用Softmax激活函數(shù)對特征向量歸一化處理,輸出情感類別向量序列。

現(xiàn)有的情感分類一般是簡單的二元(消極、積極)或三元分類(消極、積極、中立),然而人的情感更加多元,因此本系統(tǒng)構建的情感分類模型為多分類模型。在實現(xiàn)上,采用分類交叉熵損失函數(shù)作為該模型的損失函數(shù),將帶有情感標注的情感數(shù)據(jù)集輸入問題情感分類器中,實現(xiàn)模型的訓練。

4.4.2對話處理訓練模型

對話處理訓練模型分為情感分類器模塊、編碼器模塊、解碼器模塊。模型訓練回合數(shù)epochs設為50,batch size設為64。

(1)情感分類器模塊。加載已經(jīng)訓練好的問題情感分類模型輸入問題向量化數(shù)字序列,得到情感向量和問題情感分類向量。

(2)編碼器模塊。將問題向量化數(shù)字序列輸入編碼器中,得到編碼輸出序列和最后的隱藏狀態(tài)序列。編碼器由嵌入層、GRU(門控循環(huán)單元)層構成,其中GRU設置為可返回隱藏狀態(tài)序列,如圖10所示。在選取編碼器輸入數(shù)據(jù)集時,首先對問題文本數(shù)據(jù)集進行抽取后,得到15,838 個規(guī)格化的問題文本集,抽取得到問題文本集的90%作為模型訓練集,10%作為模型驗證集。

(3)解碼器模塊。將編碼器輸出的向量序列和注意力機制對輸入文本選擇性學習得到的向量序列輸入到解碼器中。解碼器由嵌入層、GRU、全連接層組成,如圖11所示。在選取解碼器輸入數(shù)據(jù)集時,對答案文本數(shù)據(jù)集進行抽取后,得到15,838 個規(guī)格化的答案文本集,單個文本格式如‘\t i amfine ?。躰;抽取得到答案文本集的90%作為模型訓練集,10%作為模型驗證集。

4.5系統(tǒng)部署

微信小程序作為前端,實現(xiàn)微信小程序與用戶交互;Flask框架作為后端服務器,依載對話模型,并實現(xiàn)與微信小程序的通信。

4.5.1微信小程序

微信小程序的前端代碼存儲于微信服務器之中,在騰訊云端存放,無須加載,可以直接打開,響應速度較快。使用wx.request API(請求函數(shù)接口)與Flask后端服務器進行通信。

wx.request模板:

wx.request({

Url:,

Data:,

Method:'POST',

Header:{

'content-type':'application/x-www-form-urlencoded'

},

})

4.5.2 Flask后端

利用Python的Flask框架搭建后端服務器,可擴展性強,在開發(fā)過程中不需要HTTP請求的發(fā)送和接收。

app.run(host='127.0.0.1',port=5000,debug=True):設置服務端的IP地址和端口號;

@app.route():設置對話處理函數(shù)所綁定的URL;

Request.values:獲得Post表單的數(shù)據(jù)部分;

Return:將對話處理結果以json格式返回給前端。

5 系統(tǒng)展示(System display)

本系統(tǒng)的功能展示如圖12所示。

6結論(Conclusion)

本研究提出了一種基于深度學習的文本情感聊天機器人系統(tǒng),該系統(tǒng)屬于生成式聊天機器人系統(tǒng),解決了單一匹配知識庫問題且適用于多領域對話。同時,在對話過程中引入情感監(jiān)督,實現(xiàn)了對話過程中的情感回復與響應,提高了生成回復語句的情感質量,有效拓展了文本聊天機器人的情感交互功能。此外,在系統(tǒng)部署上使用更加靈活的分離式框架搭建,便于前端優(yōu)化和功能更新。從整體上看,本系統(tǒng)具有一定的創(chuàng)新性和較好的應用前景。

作者簡介:

上官鑫(2000-),男,本科生.研究領域:自然語言處理.

呂俊玉(2001-),女,本科生.研究領域:自然語言處理.

張桓宇(1999-),男,本科生.研究領域:自然語言處理.

劉力軍(1979-),男,碩士,講師.研究領域:網(wǎng)絡技術.

猜你喜歡
注意力機制深度學習
面向短文本的網(wǎng)絡輿情話題
基于自注意力與動態(tài)路由的文本建模方法
軟件導刊(2019年1期)2019-06-07 15:08:13
基于深度學習的問題回答技術研究
基于LSTM?Attention神經(jīng)網(wǎng)絡的文本特征提取方法
基于注意力機制的雙向LSTM模型在中文商品評論情感分類中的研究
軟件工程(2017年11期)2018-01-05 08:06:09
InsunKBQA:一個基于知識庫的問答系統(tǒng)
有體驗的學習才是有意義的學習
電子商務中基于深度學習的虛假交易識別研究
MOOC與翻轉課堂融合的深度學習場域建構
大數(shù)據(jù)技術在反恐怖主義中的應用展望
邳州市| 霍林郭勒市| 达日县| 嵩明县| 江永县| 阜宁县| 襄垣县| 天等县| 文化| 井研县| 东乌珠穆沁旗| 上林县| 宣威市| 读书| 龙南县| 许昌市| 理塘县| 丰都县| 蕲春县| 方城县| 罗山县| 栖霞市| 南通市| 榆社县| 和静县| 邛崃市| 仪征市| 育儿| 新野县| 财经| 景德镇市| 托克托县| 祁门县| 水城县| 荃湾区| 三门县| 文登市| 台江县| 绥德县| 大渡口区| 沾益县|