賈 暢,葉 飛,劉帥君,麻之潤(rùn)
(云南農(nóng)業(yè)大學(xué) 大數(shù)據(jù)學(xué)院,云南 昆明 650201)
智能客服因其商業(yè)價(jià)值和研究?jī)r(jià)值,受到了廣泛關(guān)注。智能客服的本質(zhì)是通過理解用戶提出的服務(wù)請(qǐng)求,利用算法在知識(shí)庫(kù)中找到與之相似的問題句子,然后返回給用戶合適的答案。近年來,深度學(xué)習(xí)在自然語(yǔ)言處理領(lǐng)域不斷的發(fā)展,越來越多的研究人員傾向于使用端到端的神經(jīng)網(wǎng)絡(luò)來計(jì)算句子相似度[1-3],上述方法都是英文數(shù)據(jù),在使用詞向量計(jì)算句子相似度時(shí),中文和英文有著天然的區(qū)別,中文數(shù)據(jù)需要先進(jìn)行分詞,才能進(jìn)行下一步的工作。目前的分詞工具(如:jieba和ICTALAS)在大多數(shù)實(shí)際場(chǎng)景下都能有不錯(cuò)的應(yīng)用,但是在金融領(lǐng)域智能客服問答系統(tǒng)中,由于用戶請(qǐng)求口語(yǔ)化嚴(yán)重、錯(cuò)別字和金融領(lǐng)域的大量特有詞匯,現(xiàn)有的分詞工具很難進(jìn)行切分,而分詞錯(cuò)誤勢(shì)必會(huì)影響到模型的預(yù)測(cè)。雖然可以制定領(lǐng)域詞典來更好地分詞,但是往往需要耗費(fèi)大量的時(shí)間,而且很難覆蓋所有的詞匯。另一方面由于詞向量模型的數(shù)據(jù)稀疏性會(huì)導(dǎo)致過擬合,并且OOV(詞匯表外單詞)的存在也會(huì)影響模型的訓(xùn)練。
在利用神經(jīng)網(wǎng)絡(luò)對(duì)句子進(jìn)行相似度計(jì)算方面,多數(shù)工作通過CNN[1]或LSTM[2-3]來捕捉句子信息,但是缺少句子對(duì)的交互過程。對(duì)于計(jì)算句子相似度任務(wù)來說,這可能會(huì)丟失一小部分有用的句子信息。
為了解決上述問題,該文的主要貢獻(xiàn)如下:
(1)利用預(yù)訓(xùn)練的字向量作為原始的句子表示,在模型的訓(xùn)練過程中不斷進(jìn)行學(xué)習(xí),避免了采用詞嵌入技術(shù)時(shí),分詞錯(cuò)誤、數(shù)據(jù)稀疏和OOV導(dǎo)致的模型訓(xùn)練不佳。
(2)通過雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)BiLSTM提取字嵌入組成的句子的上下文特征表示。
(3)計(jì)算句子對(duì)中一個(gè)句子與另一個(gè)句子的對(duì)齊表示,然后通過交互來生成語(yǔ)義差異向量,以增強(qiáng)句子表示。
傳統(tǒng)的句子相似度計(jì)算方法有基于詞袋特征[4]、N-gram重疊[5]、WordNet等外部資源[6]、句法分析特征[7]等,這些方法側(cè)重于詞匯語(yǔ)義,句子的表面形式匹配。
隨著深度神經(jīng)網(wǎng)絡(luò)在NLP任務(wù)上的優(yōu)異表現(xiàn),使用卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)對(duì)句子進(jìn)行建模受到了越來越多的關(guān)注。He等人[1]利用CNN不同粒度和大小的卷積窗口提取句子的不同特征,然后使用多種類型的池化方式,以提取豐富的句子信息;Mueller等人[2]通過共享參數(shù)的LSTM對(duì)句子進(jìn)行建模;Tai等人[3]提出了一種Tree-LSTM網(wǎng)絡(luò)結(jié)構(gòu),用來提取句子更多的句法信息。與此同時(shí),為了增強(qiáng)句子表示,研究者們嘗試對(duì)通過BiLSTM產(chǎn)生的句子表示進(jìn)行多種交互;馮興杰等人[8]在句子相似度任務(wù)上提出一種多注意力CNN模型,通過兩個(gè)不同的注意力層來分別捕捉詞語(yǔ)間和句子整體的語(yǔ)義信息;Chen等人[9]在自然語(yǔ)言推理任務(wù)上進(jìn)行了探索,首先通過詞級(jí)相似度矩陣計(jì)算兩個(gè)句子的細(xì)粒度對(duì)齊,然后進(jìn)行交互,以增加句子的上下文表示中各元素的局部推理信息;Tay等人[10]除了計(jì)算句子間的軟對(duì)齊外,還使句子自己進(jìn)行內(nèi)部的對(duì)齊。
為了避免分詞不當(dāng)對(duì)模型訓(xùn)練造成的影響,一些研究集中在字嵌入技術(shù)上,如短文本分類[11]、機(jī)器翻譯[12]。陳志豪等人[13]通過多視角卷積網(wǎng)絡(luò)對(duì)字嵌入表示的句子進(jìn)行特征提取,在問答匹配模型上取得了優(yōu)異表現(xiàn)。Meng等人[14]在Bank Question corpus[15]上進(jìn)行實(shí)驗(yàn),通過神經(jīng)網(wǎng)絡(luò)模型對(duì)隨機(jī)初始化的詞向量和字向量參數(shù)進(jìn)行學(xué)習(xí)更新,最終效果字向量要優(yōu)于詞向量。
受到Chen等人[9]在自然語(yǔ)言推理任務(wù)上,通過對(duì)BiLSTM生成的句子上下文與其對(duì)齊表示進(jìn)行交互以增強(qiáng)推理信息的啟發(fā),該文提出了一種基于字向量和增強(qiáng)表示BiLSTM的句子相似度計(jì)算模型。在真實(shí)的金融智能客服數(shù)據(jù)集上,與基于詞向量的模型進(jìn)行對(duì)比,該字向量模型表現(xiàn)更優(yōu)。
基于字向量和增強(qiáng)表示BiLSTM的問句相似度模型(EBiLSTM)框架如圖1所示。編碼層通過共享參數(shù)的BiLSTM提取句子S和T的上下文特征信息;增強(qiáng)表示層通過相似度矩陣分別計(jì)算句子S和T的軟對(duì)齊表示,并且將它們的原表示與對(duì)齊表示進(jìn)行交互以增強(qiáng)句子表示;最大池化層提取所有表示的句子級(jí)特征;全連接層通過一個(gè)兩層的全連接網(wǎng)絡(luò)對(duì)句子級(jí)特征進(jìn)行壓縮投影;Softmax分類層對(duì)句子級(jí)特征進(jìn)行歸一化,用以預(yù)測(cè)句子的相似度。
圖1 EBiLSTM模型
利用預(yù)先訓(xùn)練好的d維向量,可以得到句子矩陣S=[s1,s2,…,sm]和T=[t1,t2,…,tn],m和n為句子S和T的長(zhǎng)度。該文通過BiLSTM來捕捉句子中每個(gè)單詞的上下文表示,LSTM隱藏層維度大小設(shè)置為u。給定單詞嵌入xt,在t時(shí)刻隱藏向量ht的計(jì)算過程如下:
it=σ(Wixt+Uiht-1+bi)
(1)
ft=σ(Wfxt+Ufht-1+bf)
(2)
ot=σ(Woxt+Uoht-1+bo)
(3)
gt=tanh(Wcxt+Ucht-1+bc)
(4)
ct=it*gt+ft*ct-1
(5)
ht=ot*tanh(ct)
(6)
在LSTM結(jié)構(gòu)中,σ是sigmoid激活函數(shù),*是元素相乘,輸入門i、遺忘門f和輸出門o自適應(yīng)的控制信息的流動(dòng),記憶單元c可以記住長(zhǎng)距離信息。其中網(wǎng)絡(luò)參數(shù)W∈Ru×d、U∈Ru×u、b∈Ru。
將句子矩陣S和T輸入到BiLSTM中,可以得到矩陣Sh=[sh1,sh2,…,shm]和Th=[th1,th2,…,thn],矩陣Sh∈Rm×2u,矩陣Th∈Rn×2u。
對(duì)于經(jīng)過BiLSTM生成的句子表示Sh和Th,通過軟對(duì)齊的方法來關(guān)聯(lián)句子S和T之間的相關(guān)信息,shi為Sh的第i個(gè)向量,包含有句子S中第i個(gè)字向量及其上下文的特征信息,而thj為Th的第j個(gè)向量,包含有句子T中第t個(gè)字向量及其上下文特征信息,該文通過兩個(gè)向量的內(nèi)積進(jìn)行兩個(gè)向量的相似度判斷。對(duì)于相似度矩陣M,其中的元素Mij表示shi與thj之間的相似度,計(jì)算公式如下:
(7)
如果句子S和T越相似,就越可能為句子S中的每個(gè)部分找到句子T中語(yǔ)義對(duì)應(yīng)部分,反之亦然。這對(duì)于評(píng)估句子的語(yǔ)義相似性很有幫助。基于這種直觀的想法,應(yīng)用注意機(jī)制對(duì)Sh和Th進(jìn)行軟對(duì)齊,計(jì)算公式如下:
(8)
(9)
受到Chen等人[15]在自然語(yǔ)言推理中增強(qiáng)推理信息方法的啟發(fā),該文通過計(jì)算原始句子表示與對(duì)齊表示之間的絕對(duì)差和元素乘法,以度量?jī)蓚€(gè)句子間更細(xì)微的語(yǔ)義差異,計(jì)算公式如下:
(10)
(11)
通過式(10)和式(11)計(jì)算得到句子表示Sh的增強(qiáng)表示:Sr=[sr1,sr2,…,srm]和Sq=[sq1,sq2,…,sqm],其中Sr∈Rm×2u、Sq∈Rm×2u。句子表示Th的增強(qiáng)表示Tr和Tq的計(jì)算方法與之相同,不進(jìn)行贅述。
案例2中這位教師也存在相似的問題,教材上要求燒瓶?jī)?nèi)應(yīng)裝滿紅水,但教師卻留有一部分空氣,從而導(dǎo)致現(xiàn)象出現(xiàn)了異常,結(jié)果失真,因?yàn)橛锌諝庠跓績(jī)?nèi),從而放大了水的熱脹冷縮現(xiàn)象,以至于實(shí)驗(yàn)失敗,后面學(xué)生再次將燒瓶放入冷水的實(shí)驗(yàn)就沒有意義了。
(12)
將拼接后得到的特征表示M送入兩層的全連接網(wǎng)絡(luò),第一層全連接網(wǎng)絡(luò)的維度大小為300維,激活函數(shù)為Relu,將第二層全連接網(wǎng)絡(luò)的輸出經(jīng)Softmax函數(shù)歸一化后,用于預(yù)測(cè)最后句子的相似度。
實(shí)驗(yàn)所用數(shù)據(jù)為螞蟻金服的智能客服數(shù)據(jù)集,一共100 000多個(gè)句子對(duì),正負(fù)樣本比為1∶4。實(shí)驗(yàn)隨機(jī)選用80%作為訓(xùn)練集,其余20%作為測(cè)試集。
實(shí)驗(yàn)選用精確率(Precision)、召回率(Recall)和F1值(F1-Score)對(duì)模型測(cè)試結(jié)果進(jìn)行評(píng)價(jià),定義如下:
(13)
(14)
(15)
把相似的句子對(duì)定義為正類,不相似的句子對(duì)定義為負(fù)類,tp指正類判定為正類的個(gè)數(shù),fp指負(fù)類判定為正類的個(gè)數(shù),fn指正類判定為負(fù)類的個(gè)數(shù)。
為了比較詞向量與字向量在該數(shù)據(jù)集下的實(shí)驗(yàn)效果,分別使用CNN和BiLSTM神經(jīng)網(wǎng)絡(luò)進(jìn)行實(shí)驗(yàn)。分別使用jieba和中科院開發(fā)的ICTALAS分詞系統(tǒng)進(jìn)行分詞,通過gensim工具對(duì)詞向量和字向量進(jìn)行訓(xùn)練,詞向量和字向量維度都設(shè)置為300維,對(duì)于字向量訓(xùn)練過程中進(jìn)行學(xué)習(xí)更新。使用詞向量和字向量時(shí)句子最大長(zhǎng)度分別設(shè)置為30和50。
實(shí)驗(yàn)中CNN濾波器的窗口寬度設(shè)置為1、2和3,濾波器個(gè)數(shù)設(shè)置為200,BiLSTM神經(jīng)元個(gè)數(shù)設(shè)置為300。該文訓(xùn)練批次設(shè)置為128,學(xué)習(xí)率設(shè)為0.005,實(shí)驗(yàn)中所有超參數(shù)都通過五折交叉驗(yàn)證不斷調(diào)整確定。
3.4.1 EBiLSTM模型有效性驗(yàn)證
使用ICTALAS進(jìn)行分詞,然后進(jìn)行模型各部分的有效性驗(yàn)證。為了驗(yàn)證增強(qiáng)表示層每一部分的有效性,將模型分為下面四種情況:
(2)增強(qiáng)表示一,即拼接原特征與增強(qiáng)表示層的絕對(duì)差特征;
(3)增強(qiáng)表示二,即拼接原特征與增強(qiáng)表示層的元素乘法特征;
(4)最終模型(EBiLSTM),即原特征和增強(qiáng)表示層所有特征的拼接。
四種情況的對(duì)比結(jié)果如表1所示。
由表1可以看出,增強(qiáng)表示一與只使用原特征相比,精確率,召回率和F1值分別提高了0.98%,1.13%和1.06%。增強(qiáng)表示二與只使用原特征相比,精確率,召回率和F1值分別提高了0.88%,0.37%和0.74%。EBiLSTM與增強(qiáng)表示一和增強(qiáng)表示二相比各項(xiàng)指標(biāo)有了更高的提升,說明增強(qiáng)表示層的絕對(duì)差特征和元素乘法特征對(duì)于提升模型性能都有一定的幫助,使EBiLSTM模型增強(qiáng)了對(duì)句子的語(yǔ)義捕捉能力。
表1 模型有效性實(shí)驗(yàn)
3.4.2 詞向量與字向量模型對(duì)比實(shí)驗(yàn)
為了比較詞向量與字向量的性能,本組實(shí)驗(yàn)選取了余弦相似度(Cosine),經(jīng)典的多視角CNN模型和BiLSTM[16]模型進(jìn)行了詳細(xì)比對(duì),結(jié)果如表2所示。
表2 模型對(duì)比實(shí)驗(yàn)
由表2可以看出,無(wú)論是字向量還是詞向量的嵌入方式,雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)都要比多視角CNN效果好,原因可能是BiLSTM相比于CNN更能抽取句子的整體語(yǔ)義信息。直接用Cosine計(jì)算效果最差,說明神經(jīng)網(wǎng)絡(luò)模型確實(shí)捕捉到了句子更深層次的語(yǔ)義信息。
對(duì)于詞向量嵌入方式,使用ICTALAS進(jìn)行分詞要比使用jieba分詞效果好,原因可能是jieba分詞粒度更細(xì)和產(chǎn)生更多分詞錯(cuò)誤影響了模型的性能。對(duì)于字向量嵌入方式,EBiLSTM模型相比于多視角CNN精確率,召回率和F1值分別提高了2.24%,1.65%和2.14%,相比于BiLSTM精確率,召回率和F1值分別提高了1.02%,2.02%和1.38%。
提出了一種基于字向量和增強(qiáng)表示BiLSTM的模型(EBiLSTM),用于計(jì)算智能客服系統(tǒng)中的問句相似度,并且沒有使用任何手工特征或基于規(guī)則的方法。根據(jù)實(shí)驗(yàn)可知,EBiLSTM模型相比其他模型效果更好。
在未來的工作中,將研究詞向量與字向量的結(jié)合,以更好地捕捉句子對(duì)的語(yǔ)義。其次將探索提出的模型在其他語(yǔ)義匹配場(chǎng)景下的適用性,如答案選擇和意圖識(shí)別。