本發(fā)明涉及基于深度學(xué)習(xí)的自然語言處理,尤其是涉及一種基于內(nèi)部語義層次結(jié)構(gòu)的詞嵌入表示方法。
背景技術(shù):
自然語言處理作為計(jì)算機(jī)科學(xué)和語言學(xué)的交叉分支,是眼下十分熱門的學(xué)科。它主要探討處理和運(yùn)用自然語言使其能與計(jì)算機(jī)系統(tǒng)進(jìn)行有效通信的各種理論和方法。近年來,基于深度學(xué)習(xí)的自然語言處理研究已經(jīng)成為該學(xué)科發(fā)展的主要趨勢。
詞嵌入表示是指利用分布式向量來表示詞的語義信息。通過將自然語言中的詞匯映射成低維、稠密的向量,使詞處于同一個向量空間中,由此引入“距離”的概念對詞匯間的語義相似性進(jìn)行衡量,有助于獲得語義信息更為充分表達(dá)的向量表示。目前各種基于深度學(xué)習(xí)的自然語言處理多以詞嵌入表示為基礎(chǔ)。
傳統(tǒng)的詞嵌入表示學(xué)習(xí)方法主要分為兩大類:一類方法以詞為基本單位,將詞嵌入表示向量作為面向其它任務(wù)的神經(jīng)網(wǎng)絡(luò)的副產(chǎn)物,例如:word2vec[1][2][3],語言模型[4]等等。這類方法的不足在于有限的詞表使得神經(jīng)網(wǎng)絡(luò)模型無法很好地處理未登陸詞;一類方法將字符為基本單位,將詞包含的字符序列化,然后使用神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)詞的雙向嵌入表示向量。這類方法通過字符來構(gòu)建詞,解決了未登陸詞的處理問題。其在英語等形態(tài)學(xué)信息較為豐富的語言上取得了很好的效果,然而并不完全適用于中文等語言。近年來,針對中文詞匯嵌入表示的學(xué)習(xí),許多研究者根據(jù)中文的特點(diǎn)提出了一系列方法。例如:利用中文偏旁部首[5][6][7],利用中文拼音[8]等等。然而,這些方法都忽視了由字符構(gòu)成中文詞匯內(nèi)部蘊(yùn)涵的以字符為基本單元的豐富語義信息。因此,當(dāng)前對詞嵌入表示學(xué)習(xí)的方法仍存在不足,如何獲得更好的詞嵌入表示仍十分具有研究價值。
參考文獻(xiàn):
[1]tomasmikolov,kaichen,gregcorrado,jeffreydean.2013.efficientestimationofwordrepresentationsinvectorspace.inproceedingsofthe2013conferenceoninternationalconferenceonlearningrepresentations.
[2]tomasmikolov,ilyasutskever,kaichen,gregcorrado,jeffreydean.2013.distributedrepresentationsofwordsandphrasesandtheircompositionality.inproceedingsofthe2013conferenceonneuralinformationprocessingsystems.
[3]mikolov,tomasandyih,wen-tauandzweig,geoffrey.2013.linguisticregularitiesincontinuousspacewordrepresentations.inproceedingsofthe2013conferenceonthenorthamericanchapteroftheassociationforcomputationallinguistics:humanlanguagetechnologies.
[4]yoshuabengio,réjeanducharme,pascalvincent,christianjauvin.2003.aneuralprobabilisticlanguagemodel.journalofmachinelearningresearch,2003,3(6):1137-1155.
[5]shi,xinleiandzhai,junjieandyang,xudongandxie,zehuaandliu,chao.2015.radicalembedding:delvingdeepertochineseradicals.inproceedingsofthe53rdannualmeetingoftheassociationforcomputationallinguisticsandthe7thinternationaljointconferenceonnaturallanguageprocessing(volume2:shortpapers).
[6]sun,yamingandlin,leiandtang,duyuandyang,nanandji,zhenzhouandwang,xiaolong.2014.radical-enhancedchinesecharacterembedding.journalofcomputerscience,2014,8835:279-286.
[7]li,yanranandli,wenjieandsun,feiandli,sujian.2015.component-enhancedchinesecharacterembeddings.inproceedingsofthe2015conferenceonempiricalmethodsinnaturallanguageprocessing
[8]zhang,xiangandzhao,junboandlecun,yann.2015.character-levelconvolutionalnetworksfortextclassification.inproceedingsofthe2015conferenceonneuralinformationprocessingsystems.
[9]zhang,meishanandzhang,yueandche,wanxiangandliu,ting.2013.chineseparsingexploitingcharacters.inproceedingsofthe51stannualmeetingoftheassociationforcomputationallinguistics(volume1:longpapers).
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于內(nèi)部語義層次結(jié)構(gòu)的詞嵌入表示方法。
本發(fā)明包括以下步驟:
1)使用開源工具獲得輸入文本中每個詞語的內(nèi)部層次結(jié)構(gòu):該結(jié)構(gòu)類似于傳統(tǒng)短語樹(constituencytree)結(jié)構(gòu),不同的是以字符為基本單位,并且標(biāo)注每個字符在該結(jié)構(gòu)中的層次位置和類別信息;
2)根據(jù)層次結(jié)構(gòu)不變性原則對上述結(jié)構(gòu)進(jìn)行序列化操作,得到保持詞內(nèi)部的層次位置、類別信息的文本序列;
3)將雙向gru網(wǎng)絡(luò)作用于上述序列進(jìn)行嵌入表示編碼,然后將前向和后向gru網(wǎng)絡(luò)得到的兩個嵌入表示向量進(jìn)行拼接,最后通過非線性變換,relu操作,得到詞語的最終嵌入表示向量。
本發(fā)明利用中文詞匯內(nèi)部的語義層次結(jié)構(gòu)來建模學(xué)習(xí)由細(xì)粒度的字符信息組合成更高層次詞表示的過程,使得模型既能克服無法學(xué)習(xí)未登錄詞的嵌入表示的缺陷,也能夠充分利用詞匯內(nèi)部語義信息學(xué)習(xí)到更為準(zhǔn)確的詞嵌入表示向量,以進(jìn)一步提升其他以詞嵌入表示為基礎(chǔ)的自然語言處理任務(wù)的效果,例如情感分類、機(jī)器翻譯及問答系統(tǒng)等。
本發(fā)明的具體思想如下:
中文作為基于字符的語言,其詞匯具有內(nèi)部結(jié)構(gòu)。在這種內(nèi)部結(jié)構(gòu)中,字符作為更細(xì)粒度的信息,其與詞相互作用的方式同詞與短語間相互作用的方式相類似。本發(fā)明將中文詞匯的內(nèi)部結(jié)構(gòu)用于提供更為豐富的字符級別信息,進(jìn)而改善詞嵌入表示的學(xué)習(xí)。通過開源工具獲得詞的字符級別樹結(jié)構(gòu)后,通過序列化操作將詞內(nèi)部字符的順序信息保留在序列中。在循環(huán)地將序列輸送到gru網(wǎng)絡(luò)中進(jìn)行建模時,采用雙向gru網(wǎng)絡(luò)來同時編碼歷史信息和未來信息,進(jìn)行詞嵌入表示的學(xué)習(xí)。
本發(fā)明以學(xué)習(xí)更好的詞嵌入表示為目標(biāo),針對傳統(tǒng)方法中缺乏考慮詞匯內(nèi)部語義信息的缺陷,提出了一種基于內(nèi)部語義層次結(jié)構(gòu)的詞嵌入表示學(xué)習(xí)方法。本發(fā)明框架結(jié)構(gòu)清晰簡潔、方法直觀,有助于學(xué)習(xí)內(nèi)涵更為豐富的詞嵌入表示,更好地為后續(xù)的自然語言處理任務(wù)服務(wù)。
附圖說明
圖1為本發(fā)明中字符級別樹結(jié)構(gòu)及其序列化結(jié)果舉例。在圖1中,ip為字符級別短語樹的根節(jié)點(diǎn),np為名詞短語標(biāo)記,vp為動詞短語標(biāo)記,nr為專有名詞標(biāo)記,nn為常用名詞標(biāo)記,vv為動詞標(biāo)記,adjp為形容詞短語標(biāo)記,jj為名詞修飾標(biāo)記?!?t”表示與其連接的標(biāo)記為當(dāng)前詞的詞性標(biāo)簽,“-r”表示當(dāng)前詞中中心字符的方向?yàn)橛遥?c”表示當(dāng)前詞中字符屬于并列關(guān)系,無中心偏向?!?b”表示當(dāng)前字符在詞中為起始字符,“-i”表示當(dāng)前字符在詞中為非起始字符。
圖2為本發(fā)明中模型框架示例圖。在圖2中,其中hf為前向gru所得到的詞的隱層表示,hb為后向gru所得到的詞的隱層表示,最終二者拼接得到最終的嵌入表示。
圖3為本發(fā)明中使用的神經(jīng)網(wǎng)絡(luò)語言模型框架示意圖。在圖3中,其中vec(wt|1),i,vec(wt|n+1)為句子中當(dāng)前詞wt的n-1個上下文詞的嵌入表示,由本發(fā)明公開的詞嵌入表示方法得到;tanh函數(shù)為非線性函數(shù)變換,用于模型中隱藏層信息的計(jì)算;softmax函數(shù)用于計(jì)算由輸入層提供的上下文詞集合預(yù)測當(dāng)前詞的概率。
具體實(shí)施方式
本發(fā)明具體實(shí)施方式如下:
第一步,根據(jù)詞內(nèi)部字符的層次結(jié)構(gòu)不變性對樹形結(jié)構(gòu)進(jìn)行序列化操作;
第二步,將上述序列作為雙向gru網(wǎng)絡(luò)的輸入進(jìn)行嵌入表示編碼;
第三步,以最大化語言模型概率為目標(biāo)進(jìn)行參數(shù)訓(xùn)練。
下面介紹關(guān)鍵步驟的實(shí)現(xiàn)細(xì)節(jié):
1.對樹形結(jié)構(gòu)進(jìn)行序列化操作
本發(fā)明中,利用開源工具[9]來獲得字符級別樹形式的詞內(nèi)部層次結(jié)構(gòu)。基于此樹形結(jié)構(gòu),可以抽取序列化的詞結(jié)構(gòu)信息。
圖1給出了通過開源工具獲得的字符級別樹結(jié)構(gòu)。其中句子“中國建筑業(yè)呈現(xiàn)新格局”的字符級別樹結(jié)構(gòu),包含詞語“中國”、“建筑業(yè)”、“呈現(xiàn)”、“新”和“格局”;對上述樹結(jié)構(gòu)采用“深度優(yōu)先遍歷”得到的序列化結(jié)果如下:
其中,ip為字符級別短語樹的根節(jié)點(diǎn),np為名詞短語標(biāo)記,vp為動詞短語標(biāo)記,nr為專有名詞標(biāo)記,nn為常用名詞標(biāo)記,vv為動詞標(biāo)記,adjp為形容詞短語標(biāo)記,jj為名詞修飾標(biāo)記?!?t”表示與其連接的標(biāo)記為當(dāng)前詞的詞性標(biāo)簽,“-r”表示當(dāng)前詞中中心字符的方向?yàn)橛?,?c”表示當(dāng)前詞中字符屬于并列關(guān)系,無中心偏向?!?b”表示當(dāng)前字符在詞中為起始字符,“-i”表示當(dāng)前字符在詞中為非起始字符。
從上述序列化結(jié)果中抽取出的各個詞的序列信息如下:
(nr(nr-b中)(nr-i國))
(nn(nn-c(nn-b建)(nn-i筑))(nn-i業(yè)))
(vv(vv-b呈)(vv-i現(xiàn)))
(jj(jj-b新))
(nn(nn-b格)(nn-i局))
其中,ip為字符級別短語樹的根節(jié)點(diǎn),np為名詞短語標(biāo)記,vp為動詞短語標(biāo)記,nr為專有名詞標(biāo)記,nn為常用名詞標(biāo)記,vv為動詞標(biāo)記,adjp為形容詞短語標(biāo)記,jj為名詞修飾標(biāo)記?!?t”表示與其連接的標(biāo)記為當(dāng)前詞的詞性標(biāo)簽,“-r”表示當(dāng)前詞中中心字符的方向?yàn)橛遥?c”表示當(dāng)前詞中字符屬于并列關(guān)系,無中心偏向?!?b”表示當(dāng)前字符在詞中為起始字符,“-i”表示當(dāng)前字符在詞中為非起始字符。
深度優(yōu)先遍歷的過程如下所述:
假設(shè)由開源工具所得到的樹形結(jié)構(gòu)中,各類別信息(如圖1中的“nn-t”標(biāo)記)所在的節(jié)點(diǎn)構(gòu)成當(dāng)前樹的節(jié)點(diǎn)集合v={v1,v2,...,vk},k為節(jié)點(diǎn)個數(shù)。選定樹的根節(jié)點(diǎn)(即圖1中的節(jié)點(diǎn)ip)作為起始節(jié)點(diǎn),先對其左子樹進(jìn)行遍歷,再對其右子樹進(jìn)行遍歷。對于子樹遍歷過程中遇到的節(jié)點(diǎn),若其不是葉子節(jié)點(diǎn)(以圖1為例,葉子節(jié)點(diǎn)即為句子中的各字符所在的節(jié)點(diǎn),例如“中”所在的節(jié)點(diǎn)),則繼續(xù)對其左右子樹進(jìn)行遍歷。如此遞歸進(jìn)行,直至遍歷至樹中的最后一個葉子節(jié)點(diǎn)為止。至此,得到了該樹形結(jié)構(gòu)的序列化結(jié)果。
上述序列化操作遵循詞內(nèi)部字符的層次結(jié)構(gòu)不變形,即序列化后的結(jié)果中仍保持字符在樹中例如左右分支順序、類別標(biāo)記等信息的不變。
如所示序列化結(jié)果,通過對序列中“-t”標(biāo)記的識別(即當(dāng)前詞的詞性標(biāo)簽,亦是當(dāng)前詞的層次結(jié)構(gòu)子樹的根節(jié)點(diǎn)),得到各詞對應(yīng)的序列信息。值得注意的是,在最終結(jié)果中省略了分支中直連結(jié)構(gòu)涉及的標(biāo)記信息,因?yàn)檎J(rèn)為這些信息已經(jīng)蘊(yùn)含在其上層標(biāo)記中。
融入詞內(nèi)部層次結(jié)構(gòu)信息的詞嵌入表示
假設(shè)經(jīng)過序列化操作后,詞匯的內(nèi)部層次結(jié)構(gòu)(包含字符和層次結(jié)構(gòu)各種標(biāo)簽)構(gòu)成的序列為x={x1,x2,x3,...,xm},其中m為序列長度。將其作為雙向gru網(wǎng)絡(luò)的輸入,在時刻t時,對應(yīng)的隱層狀態(tài)ht的計(jì)算公式如下:
zt=σ(wzxt+uzht-1+bz)
rt=σ(wrxt+urht-1+br)
其中,zt是t時刻更新門向量,rt是t時刻重置門向量,ht為t時刻的隱層狀態(tài)向量,各w,u分別為參數(shù)矩陣,各b為偏置項(xiàng)?!褳橄蛄康闹鹪爻瞬僮?。
用
其中“[]”為向量拼接操作,函數(shù)f為非線性變換函數(shù),例如relu操作。
2.模型的目標(biāo)函數(shù)和訓(xùn)練方法
本發(fā)明使用神經(jīng)網(wǎng)絡(luò)語言模型進(jìn)行參數(shù)訓(xùn)練,其目標(biāo)函數(shù)如下所示:
詳細(xì)解釋如下:
對于語料庫c,對于其中的句子
即以句子中當(dāng)前詞wt的前個詞wt-1,wt-2,...,wt-n+1作為其上下文,對當(dāng)前詞出現(xiàn)的概率進(jìn)行預(yù)測,n為指定的用作上下文詞的個數(shù),θ為模型的參數(shù)集合。
圖2給出本發(fā)明中模型框架示例圖。
最終句中每個詞預(yù)測概率的乘積即為該句子作為自然語言句子的概率。
圖3給出了神經(jīng)網(wǎng)絡(luò)語言模型的框架,模型的輸出即為上式p的結(jié)果。
經(jīng)過上述模型的訓(xùn)練,本發(fā)明公開的這種嵌入表示涵蓋了字符構(gòu)成詞的層次結(jié)構(gòu)中所蘊(yùn)涵的豐富內(nèi)部層次語義信息,包括字符構(gòu)成詞的順序信息,從而得到更好的詞嵌入表示,可更好地服務(wù)于后續(xù)自然語言處理任務(wù)。