楊志明,王來(lái)奇,王 泳
(1. 中國(guó)科學(xué)院 軟件研究所,北京 100190;2. 中國(guó)科學(xué)院大學(xué),北京 100049;3. 深思考人工智能機(jī)器人科技(北京)有限公司,北京 100085)
自然語(yǔ)言處理(Natural Language Processing,NLP)技術(shù)與自然語(yǔ)言理解(Natural Language Understanding,NLU)技術(shù)研究如何讓計(jì)算機(jī)理解自然語(yǔ)言的語(yǔ)義,并運(yùn)用自然語(yǔ)言與人進(jìn)行交流,實(shí)現(xiàn)人機(jī)對(duì)話(huà)。因此,自然語(yǔ)言理解系統(tǒng)又叫自然語(yǔ)言問(wèn)答系統(tǒng)(Question Answering System),簡(jiǎn)稱(chēng)問(wèn)答系統(tǒng)(QA system)[1]。問(wèn)答系統(tǒng)是信息檢索系統(tǒng)中的一種高級(jí)方式,主要包含文本理解、信息檢索和答案抽取三部分[2]。用戶(hù)使用自然語(yǔ)言的表達(dá)方式向QA系統(tǒng)提出問(wèn)題,QA系統(tǒng)向用戶(hù)返回簡(jiǎn)潔準(zhǔn)確的答案[3-4]。其中,問(wèn)題語(yǔ)義理解是整個(gè)問(wèn)答系統(tǒng)中的核心功能,對(duì)提高問(wèn)答系統(tǒng)的整體性能具有重要作用[2,5-7]。問(wèn)句理解的功能是經(jīng)過(guò)對(duì)問(wèn)題答案的類(lèi)別進(jìn)行確定,從而可以為信息檢索的過(guò)程提供約束條件,縮小答案的搜索范圍,提高問(wèn)答系統(tǒng)的準(zhǔn)確性[2]。Surdeanu[8]等學(xué)者曾經(jīng)對(duì)問(wèn)答系統(tǒng)中各部分對(duì)系統(tǒng)性能的影響做過(guò)相關(guān)研究,發(fā)現(xiàn)問(wèn)句意圖分類(lèi)對(duì)問(wèn)答系統(tǒng)的影響最大。因此,為了得到一個(gè)好的QA系統(tǒng),需要設(shè)計(jì)一個(gè)高精度的問(wèn)句意圖分類(lèi)器。
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,隨之而來(lái)的是各行業(yè)的數(shù)據(jù)量也快速增長(zhǎng)。因此,對(duì)于大量數(shù)據(jù)集的處理分析要求也愈來(lái)愈高,促進(jìn)了深度學(xué)習(xí)技術(shù)的快速發(fā)展。相較于傳統(tǒng)機(jī)器學(xué)習(xí)算法而言,深度學(xué)習(xí)技術(shù)在處理大量數(shù)據(jù)集方面具有明顯優(yōu)勢(shì)[9]。目前,深度學(xué)習(xí)模型在計(jì)算機(jī)視覺(jué)[10]和語(yǔ)音識(shí)別[11]等方面取得了顯著成果。其中,最初發(fā)明應(yīng)用于計(jì)算機(jī)視覺(jué)的CNN模型隨后被證明對(duì)NLP任務(wù)有效,且在語(yǔ)義分析[12],搜索、查詢(xún)、檢索[13],句子建模[14]以及其他傳統(tǒng)的NLP任務(wù)中取得了優(yōu)異結(jié)果[15]。當(dāng)前CNN神經(jīng)網(wǎng)絡(luò)模型在問(wèn)句意圖理解中的應(yīng)用還是主要以單通道的形式為主,這種網(wǎng)絡(luò)架構(gòu)具有視角單一,不能很好的學(xué)習(xí)到數(shù)據(jù)更廣泛的語(yǔ)義特征等問(wèn)題。而雙通道神經(jīng)網(wǎng)絡(luò)架構(gòu)的思想主要源于計(jì)算機(jī)視覺(jué)方面的相關(guān)知識(shí)。一幅彩色圖像是由RGB三個(gè)顏色通道構(gòu)成的,這樣就能夠表示圖像在不同狀態(tài)下的特點(diǎn)[9]。Kim[16]研究卷積神經(jīng)網(wǎng)絡(luò)在處理英文數(shù)據(jù)集時(shí),曾把靜態(tài)的詞向量與動(dòng)態(tài)的詞向量用于模型通道的輸入,但考慮到中文自然語(yǔ)言問(wèn)句的復(fù)雜性,本文提出了一種雙通道CNN網(wǎng)絡(luò)架構(gòu),把字向量和詞向量分別作為構(gòu)建的雙通道CNN模型的輸入,利用字的語(yǔ)義空間輔助詞向量建模。利用多尺寸卷積核進(jìn)行卷積計(jì)算,獲取更充分的問(wèn)句語(yǔ)義特征。經(jīng)實(shí)驗(yàn)證明ICDCNN模型泛化能力強(qiáng),在問(wèn)句意圖分類(lèi)方面的準(zhǔn)確率遠(yuǎn)高于其他算法。此外,本文還嘗試使用傳統(tǒng)的機(jī)器學(xué)習(xí)方法如KNN,LR以及集成模型如XGBoost、Adaboost等模型進(jìn)行了對(duì)比實(shí)驗(yàn)。目前,針對(duì)基于深度學(xué)習(xí)的自然語(yǔ)言問(wèn)句意圖分類(lèi)的研究方法還比較少,該領(lǐng)域還有很大的研究空間。因此該研究方向具有較好的研究前景,對(duì)于促進(jìn)人機(jī)交互方式的發(fā)展具有重要意義,是一個(gè)值得深入探索的研究課題。
自然語(yǔ)言問(wèn)句理解是屬于自然語(yǔ)言處理領(lǐng)域的問(wèn)題,且一直都是其中一個(gè)熱門(mén)研究方向,其主要內(nèi)容是通過(guò)NLP的相關(guān)技術(shù)對(duì)自然語(yǔ)言問(wèn)句進(jìn)行意圖分類(lèi)。理解問(wèn)句的意圖,即為問(wèn)句賦予一個(gè)類(lèi)別標(biāo)簽,這個(gè)類(lèi)別標(biāo)簽代表問(wèn)句所屬于的領(lǐng)域。自然語(yǔ)言問(wèn)句意圖理解是聊天機(jī)器人系統(tǒng)中的核心技術(shù),自1999年起在一年一次的問(wèn)句信息檢索會(huì)議上(Text Retrieval Conference,TREC),自動(dòng)問(wèn)答系統(tǒng)主題一直是備受關(guān)注的主題之一,越來(lái)越多的研究者開(kāi)始從事自然語(yǔ)言問(wèn)句分類(lèi)的相關(guān)研究。如今,國(guó)內(nèi)外學(xué)者對(duì)于自然語(yǔ)言問(wèn)句意圖理解已經(jīng)做了大量的研究。本文通過(guò)調(diào)研發(fā)現(xiàn)目前對(duì)于該問(wèn)題的研究方法主要分為三大類(lèi): ①基于規(guī)則的問(wèn)句意圖分類(lèi)解決方法; ②基于機(jī)器學(xué)習(xí)的問(wèn)句意圖分類(lèi)解決方法; ③基于混合模式的問(wèn)句意圖分類(lèi)方法。這三大類(lèi)研究方法的特點(diǎn)如表1所示。
基于規(guī)則的問(wèn)句意圖分類(lèi)解決方法通過(guò)分析已有的語(yǔ)料,提取可用的規(guī)則,進(jìn)而構(gòu)建一個(gè)基于規(guī)則的分類(lèi)器[17]。在對(duì)自然語(yǔ)言問(wèn)句進(jìn)行分類(lèi)時(shí),使用預(yù)定義的規(guī)則獲取問(wèn)句的關(guān)鍵詞,并依據(jù)關(guān)鍵詞來(lái)理解自然語(yǔ)言問(wèn)句的意圖,從而達(dá)到分類(lèi)的目的[2]。在解決相同領(lǐng)域的問(wèn)句時(shí),基于規(guī)則的問(wèn)句意圖分類(lèi)方法具有較好的分類(lèi)效果,但該方法具有較大的局限性。首先,為了獲得較好的實(shí)驗(yàn)結(jié)果,往往需要人工定義大量的規(guī)則,當(dāng)語(yǔ)料規(guī)模很大時(shí),將需要耗費(fèi)大量人力[2,18]。其次,對(duì)同一種類(lèi)型的自然語(yǔ)言問(wèn)句,可能會(huì)有多種表達(dá)方式,針對(duì)這種現(xiàn)象,Li[19]
表1 自然語(yǔ)言問(wèn)句意圖識(shí)別三類(lèi)研究方法
等進(jìn)行了相關(guān)論證,結(jié)論是這種現(xiàn)象會(huì)導(dǎo)致隨著句子數(shù)量的增加,規(guī)則的數(shù)量也會(huì)急劇增加。此外,構(gòu)建的大部分規(guī)則并沒(méi)有泛化的能力,通過(guò)分析一個(gè)領(lǐng)域的語(yǔ)料構(gòu)建的規(guī)則通常只能夠用在與該領(lǐng)域相似的語(yǔ)料上。因此,很難構(gòu)建出一個(gè)通用的、泛化能力強(qiáng)的規(guī)則架構(gòu)[20]。
近年來(lái),國(guó)內(nèi)外科研工作者對(duì)機(jī)器學(xué)習(xí)方法在生活中的應(yīng)用進(jìn)行了大量的研究。例如,在人臉識(shí)別、無(wú)人駕駛、閱讀理解、機(jī)器翻譯等領(lǐng)域都得到了廣泛應(yīng)用[2]。其中,基于機(jī)器學(xué)習(xí)的自然語(yǔ)言問(wèn)句意圖分類(lèi)方法使用帶標(biāo)簽的語(yǔ)料訓(xùn)練分類(lèi)模型得到分類(lèi)器。不同的分類(lèi)器主要在模型架構(gòu)和問(wèn)句特征提取方面存在不同。目前,有監(jiān)督學(xué)習(xí)的分類(lèi)模型主要有邏輯回歸(LR)、支持向量機(jī)(SVM)、隨機(jī)深林(RF)及深度神經(jīng)網(wǎng)絡(luò)(DNN)等。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的子領(lǐng)域,被稱(chēng)為人工神經(jīng)網(wǎng)絡(luò)的大腦結(jié)構(gòu)和功能所啟發(fā)的算法。Hinton在2006年提出了一種深度置信網(wǎng)絡(luò)架構(gòu),該算法模型在深度學(xué)習(xí)領(lǐng)域具有里程碑式的作用[9,21]。2010年Mikolov[25]等提出了一種基于RNN的神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型,該神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型相較于統(tǒng)計(jì)語(yǔ)言模型在多個(gè)任務(wù)上取得了較大的突破。2014年Kim[16]在訓(xùn)練的詞向量的基礎(chǔ)上研究了卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型在自然語(yǔ)言問(wèn)句分類(lèi)上的應(yīng)用。2016年Komninos[22]等研究發(fā)現(xiàn)在自然語(yǔ)言問(wèn)句意圖分類(lèi)的實(shí)驗(yàn)中使用基于上下文的詞嵌入可以獲得較好的實(shí)驗(yàn)效果[2]。很多基于深度學(xué)習(xí)技術(shù)的模型都獲得比較好的實(shí)驗(yàn)結(jié)果。其中最典型的深度學(xué)習(xí)網(wǎng)絡(luò)架構(gòu)包括卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。
近幾年來(lái),有些學(xué)者采用把多個(gè)分類(lèi)模型進(jìn)行集成的方法來(lái)處理自然語(yǔ)言問(wèn)句分類(lèi)任務(wù)。2008年,Li X[23]等使用四種不相同的特征分別訓(xùn)練四個(gè)支持向量機(jī)分類(lèi)器,然后運(yùn)用模型融合技術(shù)將四個(gè)分類(lèi)器集成一起,并分別使用XGBoost算法、神經(jīng)網(wǎng)絡(luò)算法及TBL算法進(jìn)行了測(cè)試。Li等在2008年提出了一種SVM和CRE相結(jié)合的策略,把句子看成一個(gè)序列,首先使用CRF模型對(duì)自然語(yǔ)言問(wèn)句中的每個(gè)詞語(yǔ)添加標(biāo)記,然后使用SVM分類(lèi)器對(duì)自然語(yǔ)言問(wèn)句進(jìn)行分類(lèi)[2,24]。
本文通過(guò)分析聊天機(jī)器人中的對(duì)話(huà)語(yǔ)句和單通道卷積神經(jīng)網(wǎng)絡(luò)的特點(diǎn),提出了意圖分類(lèi)雙通道卷積神經(jīng)網(wǎng)絡(luò)(ICDCNN)模型,用于解決多意圖分類(lèi)的問(wèn)題。該算法模型基于如下思想提出: 該模型架構(gòu)包含兩個(gè)通道,每個(gè)通道分別接收不同粒度的詞向量;然后用卷積網(wǎng)絡(luò)學(xué)習(xí)不同粒度的語(yǔ)義信息獲取句子內(nèi)部更深層次的抽象特征;最后把兩個(gè)通道學(xué)習(xí)到的更深層次的抽象特征進(jìn)行合并,達(dá)到利用細(xì)粒度的字級(jí)別的詞向量輔助詞級(jí)別詞向量捕捉自然語(yǔ)言問(wèn)句更深層次的語(yǔ)義信息的目的;最終用于決策自然語(yǔ)言問(wèn)句想表達(dá)的意圖。
整個(gè)自然語(yǔ)言問(wèn)句意圖理解分類(lèi)項(xiàng)目的算法流程主要包含數(shù)據(jù)預(yù)處理、特征工程、模型訓(xùn)練、模型評(píng)估、意圖輸出等過(guò)程。詳細(xì)的ICDCNN算法流程如下所示。
Input:X={X1,X2,…,Xn},Language={Chinese}
Output: label Y
Algorithm
(1) Preprocessing: Filling missing value; correcting mistaken word; merging data within the same category; filtering stop word; punctuation processing.
(2) Constructing dictionary
(3) If Language=Chinese
a) Data Segmentation by using Jieba
b) End if
(4) Encoding on labels: OneHotEncoder(Y)
(6) Word2vec feature extraction (output dimension=40; training iteration=5; model=CBOW; window size=5; learning rate=0.025; sample=1e-3):
(7) CNN (Convolution layer; Dropout layer; Max pooling layer; Optimization : Mini batch gradient descent: param):
c)Fword: features obtained using CNN onXword
d)Fcharacter: features obtained using CNN onXcharacter
(8) Classification: Y=Softmax([Fword;Fcharacter])
在每個(gè)過(guò)程中需要用到的技術(shù)以及要做的工作等內(nèi)容在本文剩余部分詳述。
圖像、問(wèn)句、音頻、視頻等數(shù)據(jù),大體上都是一些不完整、不一致的臟數(shù)據(jù),無(wú)法直接用于數(shù)據(jù)挖掘或基于此的挖掘結(jié)果差強(qiáng)人意。為了提高數(shù)據(jù)挖掘質(zhì)量,在實(shí)驗(yàn)之前需要對(duì)其進(jìn)行相應(yīng)的預(yù)處理操作。
(1) 數(shù)據(jù)預(yù)處理: 在實(shí)驗(yàn)過(guò)程中,對(duì)數(shù)據(jù)集進(jìn)行了缺失值處理、非法字符過(guò)濾、停用詞過(guò)濾、標(biāo)點(diǎn)符號(hào)處理,以及數(shù)據(jù)詞典的構(gòu)建操作。對(duì)于中文數(shù)據(jù)集還進(jìn)行了分詞操作。通過(guò)預(yù)處理操作后,可以大大的提高數(shù)據(jù)挖掘的質(zhì)量,降低數(shù)據(jù)挖掘的時(shí)間。
(2) 數(shù)據(jù)編碼: 由于構(gòu)建的模型是針對(duì)數(shù)值進(jìn)行計(jì)算的,因此語(yǔ)料中的字符串類(lèi)型需要轉(zhuǎn)化成數(shù)值類(lèi)型,本文使用One-Hot-Encoder編碼技術(shù),對(duì)沒(méi)有順序的特征值使用一組二進(jìn)制數(shù)字進(jìn)行表示。
(3) 數(shù)據(jù)規(guī)范化: 針對(duì)數(shù)據(jù)的規(guī)模變化較大的特征,在訓(xùn)練模型之前需要預(yù)先對(duì)數(shù)據(jù)集進(jìn)行標(biāo)準(zhǔn)化操作,這樣有利于提高實(shí)驗(yàn)效果,減少模型訓(xùn)練時(shí)間。實(shí)驗(yàn)中使用Standardization方法把數(shù)據(jù)特征轉(zhuǎn)化成高斯分布,使得特征的均值為0,方差為1,如式(1)所示。
(1)
聊天機(jī)器人獲取的日志數(shù)據(jù)中問(wèn)句類(lèi)型種類(lèi)繁多,需要提取自然語(yǔ)言問(wèn)句的特征才可以理解問(wèn)句所表達(dá)的意圖。傳統(tǒng)的方法使用詞袋模型或向量空間模型對(duì)問(wèn)句特征進(jìn)行表示。這種表示方法只考慮了問(wèn)句的詞頻信息,忽略了問(wèn)句的上下文信息,故不能學(xué)習(xí)到問(wèn)句的語(yǔ)義信息。詞向量的提出,可以解決使用傳統(tǒng)特征對(duì)問(wèn)句表示產(chǎn)生的一些問(wèn)題。本文中分別使用字級(jí)別的詞向量和詞級(jí)別的詞向量對(duì)自然語(yǔ)言問(wèn)句進(jìn)行表示,并通過(guò)兩者的結(jié)合進(jìn)而獲得問(wèn)句更深層次的語(yǔ)義信息。
2.2.1 字級(jí)別詞向量
字級(jí)別的特征,即把單個(gè)字看作自然語(yǔ)言問(wèn)句的基本組成構(gòu)成單元,對(duì)單個(gè)字進(jìn)行詞向量[26]訓(xùn)練。字向量作為自然語(yǔ)言問(wèn)句處理的基本構(gòu)成單位,在對(duì)自然語(yǔ)言問(wèn)句進(jìn)行深度語(yǔ)義處理分析過(guò)程中起著非常重要的作用。采用字向量可以減弱因分詞錯(cuò)誤造成問(wèn)句語(yǔ)義理解不準(zhǔn)的問(wèn)題。
2.2.2 詞級(jí)別詞向量
詞級(jí)別的特征,即使用分詞器對(duì)句子進(jìn)行分詞處理,把單個(gè)詞語(yǔ)看作自然語(yǔ)言問(wèn)句的基本構(gòu)成單元[26]。利用構(gòu)建的神經(jīng)網(wǎng)絡(luò)訓(xùn)練詞級(jí)別的語(yǔ)言模型,訓(xùn)練結(jié)束后問(wèn)句中的每個(gè)詞都會(huì)由一組n維向量進(jìn)行表示。在訓(xùn)練的過(guò)程中,就可以捕獲自然語(yǔ)言問(wèn)句中的語(yǔ)義信息,這對(duì)于句子意圖識(shí)別非常重要。為了進(jìn)一步發(fā)揮詞向量的作用,提高模型的準(zhǔn)確率。在本文實(shí)驗(yàn)的過(guò)程中使用Word2Vec工具在大量的數(shù)據(jù)集上進(jìn)行了無(wú)監(jiān)督的學(xué)習(xí)來(lái)獲得詞向量用于后續(xù)自然語(yǔ)言問(wèn)句的意圖分類(lèi)。
2.2.3 詞向量訓(xùn)練
對(duì)于字級(jí)別的詞向量訓(xùn)練是以字作為句子的基本單位,為每個(gè)字訓(xùn)練一個(gè)詞向量。對(duì)于詞級(jí)別的詞向量訓(xùn)練時(shí),相對(duì)于英文數(shù)據(jù)來(lái)說(shuō),需要先利用Jieba、hanlp等分詞工具對(duì)中文數(shù)據(jù)集進(jìn)行分詞處理。把分詞操作后的單個(gè)詞語(yǔ)看作自然語(yǔ)言問(wèn)句的基本構(gòu)成單元,為每個(gè)詞語(yǔ)訓(xùn)練相應(yīng)的詞向量。使用word2vec工具對(duì)自然語(yǔ)言問(wèn)句訓(xùn)練詞向量時(shí)參數(shù)設(shè)置如表2所示。
表2 word2vec工具參數(shù)設(shè)置
實(shí)驗(yàn)的過(guò)程中,首先使用了幾種傳統(tǒng)的機(jī)器學(xué)習(xí)分類(lèi)模型進(jìn)行了實(shí)驗(yàn),例如,LR、KNN、CART、SVM等;其次選用了集成分類(lèi)方法進(jìn)行了相關(guān)實(shí)驗(yàn),例如,AdaBoost、XGBoost、GradientBoosting等;最后,運(yùn)用Keras、tensorflow深度學(xué)習(xí)框架構(gòu)建深度學(xué)習(xí)模型多層感知機(jī)(MLP)和意圖分類(lèi)雙通道卷積神經(jīng)網(wǎng)絡(luò)模型(ICDCNN),用于訓(xùn)練分類(lèi)模型。
2.3.1 卷積神經(jīng)網(wǎng)絡(luò)
CNN是一種比較經(jīng)典的前饋神經(jīng)網(wǎng)絡(luò),具有局部連接、權(quán)值共享、下采樣等三個(gè)主要特點(diǎn)[27]。最初主要應(yīng)用于計(jì)算機(jī)視覺(jué)領(lǐng)域中,并獲得了很大成功,之后許多研究者把它應(yīng)用于處理自然語(yǔ)言處理任務(wù)中[10,14,16]。CNN利用自身網(wǎng)絡(luò)結(jié)構(gòu)的特點(diǎn),可以學(xué)習(xí)到自然語(yǔ)言問(wèn)句中比較深層次的語(yǔ)義信息,且可以在能夠接受的時(shí)間范圍內(nèi)完成訓(xùn)練。
2.3.2 雙通道卷積神經(jīng)網(wǎng)絡(luò)(ICDCNN)
本文通過(guò)對(duì)CNN網(wǎng)絡(luò)和對(duì)話(huà)語(yǔ)料特點(diǎn)進(jìn)行分析,提出了雙通道卷積神經(jīng)網(wǎng)絡(luò)(ICDCNN)算法模型。該算法模型能夠同時(shí)接收字級(jí)別的詞向量和詞級(jí)別的詞向量。通過(guò)設(shè)置不同大小的卷積核進(jìn)行卷積計(jì)算,學(xué)習(xí)每個(gè)問(wèn)句中詞語(yǔ)和詞語(yǔ),字和字之間的信息。這樣就可以達(dá)到對(duì)問(wèn)句中的每個(gè)局部信息進(jìn)行建模,可以學(xué)習(xí)到句子內(nèi)部更深層次的語(yǔ)義信息,以獲得更優(yōu)質(zhì)的問(wèn)句語(yǔ)義特征。本文使用的ICDCNN網(wǎng)絡(luò)模型架構(gòu)圖,如圖1所示。
圖1 雙通道卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
? CDCNN模型構(gòu)建
(1) Embedding層: 該層主要用于對(duì)句子進(jìn)行編碼,產(chǎn)生詞或者字的分布式表示,還可以接收提前使用Word2Vec工具訓(xùn)練好的詞向量。使用預(yù)訓(xùn)練好的詞向量能夠提高模型的準(zhǔn)確率以及降低因?yàn)閰?shù)過(guò)大發(fā)生過(guò)擬合的概率。通過(guò)該層后就可以獲得每個(gè)詞或字的詞向量,若每一個(gè)句子的長(zhǎng)度為n,詞向量的維度為k,Xi為第i個(gè)詞,那么對(duì)于一個(gè)長(zhǎng)度為n的句子可表示為式(2)。
X1:n=X1⊕X2⊕X3…⊕Xn
(2)
其中,符號(hào)?為連接運(yùn)算符,Xi:i+j表示詞向量Xi,Xi+1,…,Xi+j構(gòu)成的特征向量矩陣。
(2) 卷積層: 該層的主要功能是通過(guò)卷積運(yùn)算實(shí)現(xiàn)對(duì)自然語(yǔ)言問(wèn)句的局部特征進(jìn)行感知。本文選擇尺寸大小不同的卷積核對(duì)輸入神經(jīng)網(wǎng)絡(luò)模型中的詞級(jí)別的詞向量和字級(jí)別的詞向量分別進(jìn)行卷積操作,獲取問(wèn)句中更深層次的語(yǔ)義信息。本文采用了k=2,k=3和k=4三組尺寸大小不相同的卷積核進(jìn)行卷積運(yùn)算操作,使用b代表偏置項(xiàng),用Wk代表不同的卷積核所對(duì)應(yīng)的權(quán)值矩陣,用C1表示接收詞向量的通道,用C2表示接收字向量的通道,Yk表示經(jīng)過(guò)卷積后的輸出結(jié)果。則通過(guò)不同尺寸的卷積核卷積運(yùn)算得到的運(yùn)算結(jié)果,如式(3)所示。
Yk=f(Wk·Xi:i +k -1+b)k=2,3,4
(3)
為了加快模型的收斂速度,訓(xùn)練過(guò)程中選用了relu作為激活函數(shù)f。使用卷積核進(jìn)行卷積運(yùn)算時(shí)卷積操作的步幅大小為1。當(dāng)卷積核在長(zhǎng)度為n的問(wèn)句經(jīng)過(guò)一次卷積操作后獲得n-k+1個(gè)輸出,生成特征圖的計(jì)算,如式(4)所示。
Y(1)=Yk1,Yk2,…Yk,n -k +1k=2,3,4
(4)
(3) 池化層: 該層具有降低數(shù)據(jù)的維度、減少數(shù)據(jù)和參數(shù)的數(shù)量,減少過(guò)擬合等作用。本文訓(xùn)練模型時(shí)選用了最大池化(max-pooling)操作,且對(duì)每個(gè)通道都進(jìn)行最大池化操作運(yùn)算。數(shù)據(jù)通過(guò)該層運(yùn)算后,模型能夠捕獲到具有代表性的特征。最大池化計(jì)算,如式(5)所示。
Y(2)=max(Yk,i)
(5)
假設(shè)每組卷積核的數(shù)量為m,最終池化后輸出的特征集合,如式(6)所示。
Y(3)=flatten
(6)
(4)合并層: 本層的主要作用是把兩個(gè)通道C1和C2獲取到的問(wèn)句特征進(jìn)行組合,獲得全局特征信息,得到的最終問(wèn)句特征向量,如式(7)所示。
(7)
(5) 輸出層: 該層的作用是接收合并層輸出的特征向量,然后傳入softmax分類(lèi)器中,輸出的值就是分類(lèi)器對(duì)自然語(yǔ)言問(wèn)句意圖類(lèi)別的預(yù)測(cè)值hθ(x),hθ(x)的計(jì)算,如式(8)所示。
(8)
其中,hθ(x(i))代表第i個(gè)樣本的預(yù)測(cè)結(jié)果,wi代表著需要通過(guò)訓(xùn)練的獲得權(quán)重值,bi為需要經(jīng)過(guò)模型訓(xùn)練求得的偏置。
? ICDCNN模型訓(xùn)練
在模型訓(xùn)練的過(guò)程中本文使用多值交叉熵(categorical_crossentropy)代價(jià)函數(shù)用于衡量模型的損失,采用小批量梯度遞減方法(mini-batch Gradient Descent)對(duì)模型進(jìn)行優(yōu)化。多值交叉熵代價(jià)函數(shù),以及用梯度遞減的方法對(duì)多值交叉熵代價(jià)函數(shù)優(yōu)化的公式,如式(9)所示。
(9)
本節(jié)將通過(guò)實(shí)驗(yàn)來(lái)考察本文提出的意圖分類(lèi)雙通道卷積神經(jīng)網(wǎng)絡(luò)(ICDCNN)模型在問(wèn)句意圖識(shí)別任務(wù)上的性能,然后將其與其他模型的性能進(jìn)行對(duì)比分析。
為了測(cè)試提出模型的有效性,本文選用了IDeepWise數(shù)據(jù)集,該數(shù)據(jù)集是對(duì)SMP2017數(shù)據(jù)集的擴(kuò)充和補(bǔ)充。涉及到訂票類(lèi)、天氣類(lèi)、音樂(lè)類(lèi)、閑聊類(lèi)等13個(gè)領(lǐng)域。采用預(yù)處理技術(shù)對(duì)數(shù)據(jù)進(jìn)行了缺失值處理、錯(cuò)誤字符糾正、數(shù)據(jù)類(lèi)別合并、停用詞處理,去重等操作最終得到53 117條樣本,每種類(lèi)別樣本數(shù)量和對(duì)應(yīng)的類(lèi)別標(biāo)簽如表3所示。
表3 樣本類(lèi)別和數(shù)量統(tǒng)計(jì)信息
實(shí)驗(yàn)選用的研發(fā)環(huán)境軟硬件配置詳細(xì)信息如表4所示。
表4 實(shí)驗(yàn)環(huán)境軟硬件配置
實(shí)驗(yàn)過(guò)程中根據(jù)圖1的ICDCNN網(wǎng)絡(luò)架構(gòu)進(jìn)行構(gòu)建模型, 在實(shí)驗(yàn)的過(guò)程中為本文所提模型設(shè)置的參數(shù)如表5所示。
表5 ICDCNN模型參數(shù)設(shè)置
(1) 首先將原始問(wèn)句采用結(jié)巴工具進(jìn)行分詞。
(2) 建立語(yǔ)料詞典,對(duì)語(yǔ)料進(jìn)行清洗操作。
(3) 采用Word2Vec工具訓(xùn)練詞級(jí)別的詞向量和字級(jí)別的詞向量。
(4) 把詞語(yǔ)和字分別用唯一的字符進(jìn)行表示,轉(zhuǎn)換成模型可接收的詞序列和字序列。
(5) 根據(jù)與詞語(yǔ)和字一一相對(duì)應(yīng)的的唯一標(biāo)識(shí)符到詞向量表獲得對(duì)應(yīng)的詞向量,求得詞向量矩陣,然后輸入構(gòu)建的模型當(dāng)中用于訓(xùn)練。
(6) 使用式(9)中定義的損失函數(shù),開(kāi)始對(duì)模型進(jìn)行訓(xùn)練。
(7) 使用測(cè)試數(shù)據(jù)集對(duì)訓(xùn)練好的模型性能進(jìn)行評(píng)估。
本文對(duì)多個(gè)模型進(jìn)行了實(shí)驗(yàn),實(shí)驗(yàn)過(guò)程中把本文所提ICDCNN算法與以下算法進(jìn)行對(duì)比,以此來(lái)說(shuō)明本文所提算法的有效性。
LR: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用LR模型進(jìn)行分類(lèi)。
KNN: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用KNN模型進(jìn)行分類(lèi)。
CART: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用CART模型進(jìn)行分類(lèi)。
SVM: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用SVM模型進(jìn)行分類(lèi)。
XGBoost: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用XGBoost模型進(jìn)行分類(lèi)。
AdaBoost: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用AdaBoost模型進(jìn)行分類(lèi)。
RF: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用RF模型進(jìn)行分類(lèi)。
GB: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用GB模型進(jìn)行分類(lèi)。
MLP: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用MLP深度模型進(jìn)行分類(lèi)。
CNN: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用CNN深度模型進(jìn)行分類(lèi)。
LSTM: 利用Word2Vec訓(xùn)練出來(lái)的詞級(jí)別的詞向量進(jìn)行實(shí)驗(yàn),用LSTM深度模型進(jìn)行分類(lèi)。
ICDCNN-rand: 在該模式下實(shí)驗(yàn)過(guò)程中獲得到的詞向量是通過(guò)隨機(jī)初始化生成的,在訓(xùn)練的過(guò)程中也會(huì)對(duì)詞向量進(jìn)行微調(diào),同時(shí)學(xué)習(xí)模型的其他參數(shù)。
ICDCNN-static: 該模式下是把Word2Vec工具預(yù)先訓(xùn)練好的詞向量引入實(shí)驗(yàn)當(dāng)中。該模式的特點(diǎn)是,當(dāng)模型訓(xùn)練時(shí)只是學(xué)習(xí)模型的其他參數(shù),詞向量不會(huì)改變。
ICDCNN-non-static: 在該模式下的訓(xùn)練過(guò)程是使用Word2Vec工具預(yù)先訓(xùn)練好的詞向量。在實(shí)驗(yàn)過(guò)程當(dāng)中,學(xué)習(xí)模型其他參數(shù)的同時(shí),預(yù)先訓(xùn)練好的詞向量也會(huì)被微調(diào)。
ICDCNN-multichannel: ICDCNN-static和ICDCNN-non-static的混合輸入,即兩種類(lèi)型的輸入。
(10)
在實(shí)驗(yàn)中,采用回調(diào)函數(shù),選取測(cè)試集準(zhǔn)確率最高的作為模型的準(zhǔn)確率,各個(gè)模型iDeepWise數(shù)據(jù)集上的實(shí)驗(yàn)效果,如表6所示。
根據(jù)表6中的實(shí)驗(yàn)記錄,得出一些傳統(tǒng)機(jī)器學(xué)習(xí)方法和集成機(jī)器學(xué)習(xí)方法解決多意圖分類(lèi)任務(wù)的實(shí)驗(yàn)結(jié)果直方圖,如圖2所示。
表6 不同模型的意圖分類(lèi)準(zhǔn)確率
圖2 機(jī)器學(xué)習(xí)方法多意圖分類(lèi)實(shí)驗(yàn)結(jié)果直方圖
構(gòu)建的深度學(xué)習(xí)方法解決多意圖分類(lèi)任務(wù)的實(shí)驗(yàn)結(jié)果直方圖,如圖3所示。
圖3 深度學(xué)習(xí)方法多意圖分類(lèi)實(shí)驗(yàn)結(jié)果直方圖
3.5.1 傳統(tǒng)機(jī)器學(xué)習(xí)vs.深度學(xué)習(xí)
通過(guò)表6、圖2、圖3中的實(shí)驗(yàn)結(jié)果可知深度學(xué)習(xí)模型在數(shù)據(jù)集上表現(xiàn)的效果比傳統(tǒng)機(jī)器學(xué)習(xí)模型效果要好。原因在于深度學(xué)習(xí)模型能夠更好學(xué)習(xí)到數(shù)據(jù)中的語(yǔ)義信息,這對(duì)句子意圖識(shí)別非常重要,因此,本文最終選用深度學(xué)習(xí)模型來(lái)完成問(wèn)句意圖識(shí)別的任務(wù)。
3.5.2 Random vs. word2vec
通過(guò)對(duì)ICDCNN-rand和ICDCNN-static模型在各個(gè)數(shù)據(jù)集上的準(zhǔn)確率分析比價(jià)可知,在處理自然語(yǔ)言問(wèn)句分類(lèi)任務(wù)上,引入預(yù)先訓(xùn)練的詞向量在一定程度上可以提高模型的準(zhǔn)確率。因?yàn)橛?xùn)練模型的過(guò)程中引入使用Word2Vec工具預(yù)訓(xùn)練好的詞向量中含有大量語(yǔ)料的上下文的語(yǔ)義信息,起到了數(shù)據(jù)遷移的作用。因此,在解決問(wèn)句意圖類(lèi)別分析時(shí)能夠獲得比較好的實(shí)驗(yàn)效果。綜上,在實(shí)驗(yàn)過(guò)程中引入在外部大量語(yǔ)料上訓(xùn)練得到的詞向量是很有必要的。
3.5.3 Static vs. Non-static
通過(guò)對(duì)ICDCNN-static和ICDCNN-non-static模型在各個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)效果對(duì)比分析可知,使用CNN網(wǎng)絡(luò)訓(xùn)練過(guò)程當(dāng)中對(duì)引入的預(yù)訓(xùn)練好的詞向量進(jìn)行微調(diào),可以使得提前預(yù)訓(xùn)練好的詞向量更好的處理特定的任務(wù),提升模型的準(zhǔn)確率。
通過(guò)對(duì)比各個(gè)模型在相同數(shù)據(jù)集上的實(shí)驗(yàn)效果可以看出本文提出的ICDCNN雙通道卷積神經(jīng)網(wǎng)絡(luò)模型是有效的。通過(guò)對(duì)比分析實(shí)驗(yàn)結(jié)果,主要原因是因?yàn)樽旨?jí)別的特征粒度較小,涵蓋的自然語(yǔ)言問(wèn)句特征范圍比較廣,可以學(xué)習(xí)到自然語(yǔ)言問(wèn)句中更加細(xì)粒度的語(yǔ)義信息,進(jìn)而提高模型的性能。
本文通過(guò)分析聊天機(jī)器人系統(tǒng)中的自然語(yǔ)言問(wèn)句的特點(diǎn),以及單通道卷積神經(jīng)網(wǎng)絡(luò)模型在處理自然語(yǔ)言問(wèn)句分類(lèi)時(shí)存在的問(wèn)題,提出了一種新的用于自然語(yǔ)言問(wèn)句意圖識(shí)別的方法ICDCNN模型。該模型具有兩個(gè)通道,可以同時(shí)接收字級(jí)別的詞向量和詞級(jí)別的詞向量進(jìn)行卷積運(yùn)算。使用細(xì)粒度的字向量協(xié)助粗粒度的詞向量提取自然語(yǔ)言問(wèn)句更深層次的語(yǔ)義特征信息,進(jìn)而提升自然語(yǔ)言問(wèn)句意圖識(shí)別的準(zhǔn)確率。從實(shí)驗(yàn)結(jié)果可以看出,本文提出的雙通道卷積神經(jīng)網(wǎng)絡(luò)在自然語(yǔ)言問(wèn)句意圖識(shí)別上具有更高的準(zhǔn)確率,在SMP 2017國(guó)內(nèi)首屆中文人機(jī)對(duì)話(huà)技術(shù)評(píng)測(cè)過(guò)程中獲得第一名。證明了所提方法的有效與可行,并為其他研究者進(jìn)行相關(guān)研究提供了重要的參考價(jià)值,也極大地推動(dòng)了該技術(shù)在NLP領(lǐng)域的應(yīng)用。