本發(fā)明屬于客服輔助技術(shù)領(lǐng)域,具體涉及一種基于深度學(xué)習(xí)的客服回復(fù)推薦方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)經(jīng)濟(jì)的不斷發(fā)展,提供在線商品和服務(wù)選購(gòu)的電商平臺(tái)的規(guī)模和成交量也在日益增大,這種改變的潮流對(duì)在線客服的服務(wù)效率提出更高要求。同時(shí)一些新的客服場(chǎng)景,如在線健康咨詢、在線法律咨詢,涉及知識(shí)較多,對(duì)從業(yè)人員專業(yè)要求較高。
現(xiàn)有的解決思路有兩種:一種是利用智能客服機(jī)器人直接替代人工承接一部分咨詢?nèi)蝿?wù);另一種是利用計(jì)算機(jī)來(lái)輔助人工客服以提升其工作效率。常見(jiàn)的智能客服機(jī)器人通常以手工構(gòu)建的知識(shí)庫(kù)作為核心引擎,替代人工完成一些常見(jiàn)的簡(jiǎn)單咨詢服務(wù)。這種方法的不足之處主要有:機(jī)器人通常只能處理常見(jiàn)的標(biāo)準(zhǔn)問(wèn)題,對(duì)于一些個(gè)性化較強(qiáng)或出現(xiàn)頻次較低的問(wèn)題則較難處理;復(fù)雜知識(shí)庫(kù)的建立需要極大成本;用戶對(duì)機(jī)器人的接受程度不如人工客服。計(jì)算機(jī)輔助人工客服,通??梢酝瓿梢恍┎恢苯雍陀脩艚换サ娜蝿?wù)如:標(biāo)準(zhǔn)回復(fù)推薦、常用問(wèn)答對(duì)推薦。現(xiàn)有的客服輔助系統(tǒng)主要針對(duì)所需專業(yè)知識(shí)相對(duì)較少的場(chǎng)景設(shè)計(jì),如交易糾紛、商品信息咨詢等。
現(xiàn)有解決方案需要人工進(jìn)行前期知識(shí)庫(kù)或語(yǔ)料的建立和整理,成本較高。同時(shí)知識(shí)庫(kù)和標(biāo)準(zhǔn)回復(fù)存在覆蓋率問(wèn)題,通常針對(duì)一些出現(xiàn)次數(shù)較多的問(wèn)題設(shè)計(jì),對(duì)于個(gè)性化較強(qiáng)的問(wèn)題則覆蓋較少。傳統(tǒng)在線客服場(chǎng)景問(wèn)題分布比較集中、涉及專業(yè)知識(shí)相對(duì)較少,因此知識(shí)庫(kù)和語(yǔ)料的構(gòu)建成本和覆蓋率問(wèn)題比較容易解決。但是在對(duì)專業(yè)要求較高的場(chǎng)景下,由于涉及知識(shí)的深度和廣度增加,知識(shí)庫(kù)和對(duì)應(yīng)語(yǔ)料的構(gòu)建難度也隨之增加,實(shí)現(xiàn)較高問(wèn)題覆蓋率較難。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)所存在的問(wèn)題,本發(fā)明提出了一種基于深度學(xué)習(xí)的客服回復(fù)推薦方法,其能夠根據(jù)客服咨詢過(guò)程中的對(duì)話記錄,為客服推薦其當(dāng)前可能需要的回復(fù)文本,從而減少客服在工作過(guò)程中的輸入量,提升客服工作效率。
本發(fā)明的技術(shù)方案如下:
這種基于深度學(xué)習(xí)的客服回復(fù)推薦方法,其特征在于,包含如下步驟:
(1)對(duì)聊天語(yǔ)料庫(kù)中所有的客服回復(fù)進(jìn)行聚類并構(gòu)建候選客服回復(fù)集合;
(2)在客服聊天語(yǔ)料庫(kù)上訓(xùn)練詞向量;
(3)對(duì)客服聊天語(yǔ)料庫(kù)的對(duì)話記錄進(jìn)行標(biāo)準(zhǔn)化處理;
(4)在處理后的語(yǔ)料集上訓(xùn)練對(duì)話模型;
(5)將客服當(dāng)前的對(duì)話記錄輸入模型,獲取取該時(shí)刻的推薦回復(fù)。
所述的步驟(1)中對(duì)所有回復(fù)進(jìn)行聚類的步驟如下:
1.1使用中文分詞器對(duì)語(yǔ)料進(jìn)行處理,獲取其分詞結(jié)果;
1.2在分詞結(jié)果上的運(yùn)行l(wèi)da主題生成模型,并計(jì)算每個(gè)回復(fù)向量表示;
1.3在所有回復(fù)的向量表示上運(yùn)行k-means聚類算法,距離度量函數(shù)使用歐幾里得距離,完成對(duì)回復(fù)文本的聚類,得到n個(gè)簇:{c1,…,cn}
其中:d()為計(jì)算距離的函數(shù),x,y為兩個(gè)回復(fù)的向量表示,xi,yi分別為x,y的分量;
1.4設(shè)定一個(gè)閾值m,從{c1,…,cn}對(duì)應(yīng)的每個(gè)類簇中分別隨機(jī)抽樣m個(gè)句子組成候選回復(fù)集合c;
所述的步驟(2)中訓(xùn)練詞向量的步驟如下:
2.1使用中文分詞器對(duì)所有語(yǔ)料進(jìn)行分詞處理;
2.2使用詞向量訓(xùn)練工具在分好詞的語(yǔ)料上訓(xùn)練詞向量,獲得詞向量矩陣。
所述的步驟(3)中對(duì)語(yǔ)料的標(biāo)準(zhǔn)化處理步驟如下:
3.1刪除對(duì)全部聊天記錄中無(wú)意義的格式控制符號(hào),以及非人工產(chǎn)生的對(duì)話;
3.2將聊天記錄中的對(duì)話按照產(chǎn)生對(duì)話的角色分為:用戶的對(duì)話和客服的對(duì)話兩種,在此基礎(chǔ)上將每次服務(wù)的多條對(duì)話記錄處理為:{用戶,客服,用戶,客服,…}的次序,即每組對(duì)話均以用戶的對(duì)話開(kāi)始,用戶和客服的對(duì)話嚴(yán)格交替出現(xiàn);
3.3對(duì)過(guò)長(zhǎng)的對(duì)話單句對(duì)話,和過(guò)場(chǎng)的對(duì)話序列做截?cái)嗵幚怼?/p>
所述的步驟(4)中訓(xùn)練深度對(duì)話模型的步驟如下:
4.1從數(shù)據(jù)集中隨機(jī)選取一批樣本,每個(gè)樣本均為的一組對(duì)話序列可以表示為:{(u0,h0,u1,h1,…),…}其中ui表示對(duì)話序列中用戶的第i句話,hi表示對(duì)話序列中客服的第i句對(duì)話;
4.2為樣本中的每個(gè)客服對(duì)話均選從語(yǔ)料庫(kù)中隨機(jī)選取一條客服對(duì)話作為負(fù)樣本
4.3對(duì)樣本中的所有對(duì)話:
4.4將一個(gè)樣本表示為向量序列:
4.5在客服對(duì)話的每個(gè)時(shí)間刻,均使用對(duì)應(yīng)時(shí)間刻的
其中margin為手工設(shè)定的閾值,其中sim(x,y)為相似度函數(shù),其計(jì)算方法如下面公式所示:
4.6將當(dāng)前批次樣本中所有的局部損耗進(jìn)行相加,得到本次更新所需的損失函數(shù)值,計(jì)算公式如下:
其中:n為當(dāng)前批次所含樣本的數(shù)量,mi為第i個(gè)樣本中所含的客服對(duì)話數(shù)量,lossi,j為第i個(gè)樣本中第j句客服對(duì)應(yīng)時(shí)刻的局部損失值;
4.7使用梯度下降對(duì)對(duì)話模型中的所有參數(shù)進(jìn)行更新;
4.8如果迭代次數(shù)達(dá)到閾值(該閾值可根據(jù)需要自行設(shè)定),則保存模型,結(jié)束迭代,否則返回步驟4.1。
在所述步驟4.3中單句編碼器對(duì)單個(gè)句子進(jìn)行編碼的流程如下:
4.3.1根據(jù)產(chǎn)生句子的角色不同,為每個(gè)句子分配一個(gè)角色標(biāo)志,對(duì)于用戶產(chǎn)生的句子,設(shè)定其角色標(biāo)記為0,對(duì)于客服產(chǎn)生的句子或候選回復(fù),設(shè)定其角色標(biāo)記為1,使用符號(hào)r來(lái)表示角色標(biāo)記;
4.3.2通過(guò)查找在步驟(2)中訓(xùn)練的詞向量矩陣,將句子中的每個(gè)詞均替換為與其對(duì)應(yīng)的詞向量表示形式,表示為
4.3.3并將角色標(biāo)同句子中的每個(gè)詞向量分別進(jìn)行級(jí)聯(lián),其過(guò)程可表示為:vw′=[vw;];
4.3.4使用一個(gè)兩層gru網(wǎng)絡(luò)讀入處理后的詞向量序列,并獲取最后時(shí)刻的輸出作為utteranceencoder的編碼結(jié)果,其中每個(gè)gru單元的更新方式如下面公式所示:
zt=σ(wz·[ht-1,xt])
rt=δ(wr·[ht-1,xt])
ht=(1-zt)*ht-1+zt*ht
其中xt表示某一時(shí)間刻的輸入,ht表示對(duì)應(yīng)時(shí)間刻的輸出。
在所述步驟4.4中上下文編碼器對(duì)對(duì)話記錄序列進(jìn)行編碼的流程如下:
4.4.1讀入對(duì)話記錄里各個(gè)句子的向量表示:
4.4.2在向量序列的頭部插入一個(gè)同樣長(zhǎng)度的全零向量:
4.4.3使用長(zhǎng)度為2的滑動(dòng)窗口對(duì)序列中的向量進(jìn)行拼接,得到輸出為:
4.4.4將拼接后的向量序列作為輸入,使用一個(gè)雙層gru網(wǎng)絡(luò)對(duì)其進(jìn)行編碼,取其每個(gè)時(shí)刻的輸出并表示為:
4.4.5將每個(gè)時(shí)刻的上下文表示向量同該時(shí)刻對(duì)應(yīng)的句子向量進(jìn)行級(jí)聯(lián)組合,在第i時(shí)刻獲得輸出為:
4.4.6利用線性層對(duì)拼接后的向量進(jìn)行重新映射,其計(jì)算過(guò)程如下面公式
vi′=wt·vi
其中wt為線性層權(quán)值矩陣,通過(guò)訓(xùn)練得到,vi為拼接后的向量,vi′為context在對(duì)該時(shí)刻上下文的向量表示結(jié)果。
在所述步驟(5)中根據(jù)進(jìn)行當(dāng)前客服對(duì)話歷史選取回復(fù)的流程如下:
5.1將步驟(1)中構(gòu)造的候選回復(fù)集合表示為:a={a0,a1,…,an}其中ai表示一條候選回復(fù)文本;
5.2使用單句編碼器將每個(gè)候選回復(fù)句子表示成為向量形式,其處理過(guò)程同步驟4.3相同,將其輸出表示為:
5.3使用utteranceencoder對(duì)將當(dāng)前對(duì)話記錄中的各條對(duì)話進(jìn)行編碼,其處理步驟與4.3相同,將其處理結(jié)果表示為:
5.4使用
5.5遍歷所有候選回復(fù)的向量編碼,計(jì)算各個(gè)候選回復(fù)同當(dāng)前上下文的匹配程度,計(jì)算方法如下面公式所示:
5.6對(duì)比所有候選回復(fù)的匹配程度得分,取其中得分最高的作為推薦回復(fù)。
本發(fā)明利用了客服在服務(wù)過(guò)程中產(chǎn)生的聊天對(duì)話記錄,提出了一種基于深度模型的客服回復(fù)推薦方法,并提出了將其應(yīng)用于實(shí)際場(chǎng)景中的方法。由此,本發(fā)明方法與傳統(tǒng)方法相比具有以下有益效果:
(1)本發(fā)明方法通過(guò)端到端的訓(xùn)練方式進(jìn)行模型構(gòu)建,構(gòu)建速度更快;
(2)本發(fā)明方法提升了客服回復(fù)推薦系統(tǒng)中回復(fù)內(nèi)容的覆蓋范圍;
(3)本發(fā)明方法使得客服回復(fù)推薦系統(tǒng)的構(gòu)建不需要精通專業(yè)知識(shí)的人員參與;
(4)本發(fā)明方法可應(yīng)用于各種垂直領(lǐng)域的客服服務(wù)中,包括但不限于:電商、醫(yī)藥、法律等。
附圖說(shuō)明
圖1為本發(fā)明的主要流程示意圖。
圖2為本發(fā)明中提出的單句編碼器的結(jié)構(gòu)示意圖。
圖3為本發(fā)明中提出的上下文編碼器的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了更為具體地描述本發(fā)明,下面結(jié)合附圖及具體實(shí)施方式對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
本發(fā)明的方法流程具體包括以下步驟:
(1)從客服聊天語(yǔ)料中提取篩選候選回復(fù)集;
(2)利用客服聊天語(yǔ)料訓(xùn)練詞向量;
(3)對(duì)客服聊天語(yǔ)料進(jìn)行標(biāo)準(zhǔn)化處理;
(4)訓(xùn)練客服對(duì)話模型;
(5)根據(jù)當(dāng)前對(duì)話記錄使用對(duì)話模型選取推薦的回復(fù)內(nèi)容
步驟(1)分為以下步驟:
1-1:從語(yǔ)料中篩選出所有由客服說(shuō)出的對(duì)話;
1-2:使用結(jié)巴分詞工具對(duì)篩選出的對(duì)話進(jìn)行分詞;
1-3:使用lda主題模型對(duì)分詞后的對(duì)話進(jìn)行主題建模,并獲取其向量表示;
1-4:使用k-means聚類算法對(duì)篩選出的回復(fù)在向量空間上進(jìn)行聚類;
1-5:在每個(gè)類簇中均隨機(jī)選取等量的回復(fù),對(duì)其進(jìn)行去重操作后構(gòu)成候選回復(fù)集。
步驟(2)分為以下步驟:
2-1使用結(jié)巴分詞工具對(duì)所有對(duì)話記錄進(jìn)行分詞;
2-2在分好詞的對(duì)話記錄上訓(xùn)練詞向量,具體使用的工具是:word2vec。
步驟(3)分為以下步驟:
3-1刪除對(duì)聊天記錄中所有格式控制符號(hào)以及非人工產(chǎn)生的對(duì)話;
3-2將聊天記錄中的對(duì)話按照產(chǎn)生對(duì)話的角色分為:用戶的對(duì)話和客服的對(duì)話兩種,在此基礎(chǔ)上將每次服務(wù)的多條對(duì)話記錄處理為:{user,host,user,host,…}的次序,即每組對(duì)話均以用戶的對(duì)話開(kāi)始,用戶和客服的對(duì)話嚴(yán)格交替出現(xiàn),其中user代表用戶,host代表客服。
步驟(4)分為以下步驟:
4-1初始化模型參數(shù),其中詞向量權(quán)值矩陣使用預(yù)訓(xùn)練的詞向量初始化,其余參數(shù)使用符合高斯分布的隨機(jī)數(shù)初始化;
4-2使用隨機(jī)抽樣的方法從數(shù)據(jù)中抽取n個(gè)樣本,作為當(dāng)前訓(xùn)練的batch;
4-3為樣本中所有客服的回復(fù)均從語(yǔ)料集中隨機(jī)選取一條客服對(duì)話作為負(fù)樣本回復(fù);
4-4如圖1所示,使用單句編碼器對(duì)樣本中的所有句子進(jìn)行編碼,獲取他們所對(duì)應(yīng)的向量表示,具體過(guò)程為:設(shè)定各個(gè)句子的角色編碼、將所有單詞轉(zhuǎn)換為詞向量表示、對(duì)角色編碼和詞向量進(jìn)行拼接、使用雙層gru對(duì)向量序列進(jìn)行編碼、獲取最后時(shí)刻的輸出作為編碼結(jié)果;
4-5如圖2所示,針對(duì)每個(gè)樣本,將其中全部句子的向量表示作為輸入,使用上下文編碼器分別對(duì)這些向量序列進(jìn)行編碼,獲取不同時(shí)刻的對(duì)話上下文表示結(jié)果,具體過(guò)程為:在向量序列的首部填充一個(gè)同樣長(zhǎng)度的全零向量、使用長(zhǎng)度為2的滑動(dòng)窗口對(duì)向量序列中的相鄰向量進(jìn)行拼接、使用雙層gru網(wǎng)絡(luò)讀入拼接后的向量序列并計(jì)算各個(gè)時(shí)刻的輸出、在各個(gè)時(shí)刻將gru網(wǎng)絡(luò)的輸出同該時(shí)刻原始句子的向量編碼進(jìn)行級(jí)聯(lián)、使用線性層進(jìn)行線性變換降維、取出輸出作為該時(shí)刻的上下文編碼結(jié)果;
4-6針對(duì)每個(gè)樣本,在客服進(jìn)行回復(fù)的所有時(shí)間刻,分別計(jì)算原始回復(fù)和負(fù)樣本回復(fù)同該時(shí)刻上下文編碼的相似程度,使用hinge損耗函數(shù)計(jì)算局部損失值;
4-7將當(dāng)前batch中所有樣本的所有局部損失值進(jìn)行相加,獲取全局損失值;
4-8使用梯度下降方法對(duì)模型中所有參數(shù)進(jìn)行更新,學(xué)習(xí)率設(shè)為0.01;
4-9判斷迭代次數(shù)和全局損失值的變化程度是否達(dá)到閾值,若達(dá)到則停止訓(xùn)練保存模型,若未達(dá)到,則返回步驟4-2。
步驟(5)分為以下步驟:
5-1使用單句編碼器將候選集中的所有句子編碼成為向量形式;
5-2使用單句編碼器將當(dāng)前對(duì)話記錄中的各條對(duì)話進(jìn)行編碼;
5-3使用上下文編碼器讀入當(dāng)前對(duì)話中各個(gè)句子的向量表示,并取其最后時(shí)刻的輸出作為當(dāng)前上下文表示結(jié)果;
5-4遍歷所有候選回復(fù),使用cosine相似性計(jì)算其與當(dāng)前上下文的相似程度,并從中選出得分最高的回復(fù)推薦給客服。
上述實(shí)例并非是對(duì)于本發(fā)明的限制,本發(fā)明并非僅限于上述實(shí)施例,只要符合本發(fā)明要求,均屬于本發(fā)明的保護(hù)范圍。