【中文情感詞典擴(kuò)充 中文情感詞】

導(dǎo)語: BERT模型自誕生以來統(tǒng)治了各項(xiàng)NLP任務(wù)的榜單,谷歌也針對中文給出了基于字的模型 。然而我們知道詞是語言最重要的組成部分,因此,一個自然的想法就是做基于詞的BERT模型 。但是受限于顯存,谷歌原生的BERT模型可以使用的詞典比較小 , 只能覆蓋一小部分的漢語的詞 。在本文中,我們提出了對BERT的一些改進(jìn),將中文BERT詞模型的詞典大小進(jìn)行了大幅擴(kuò)充,并在多個下游任務(wù)上測試了大詞典BERT的表現(xiàn) 。此外,我們嘗試了一種針對上下文相關(guān)詞向量的最近鄰檢索方法,基于BERT的詞向量做以詞搜詞任務(wù) , 相對于上下文無關(guān)詞向量在效果上有著明顯的提升 。
1. 做大詞典BERT詞模型的意義
詞是語言最重要的組成部分 。谷歌發(fā)布基于字的BERT[1]模型之后,一個很自然的想法就是將詞的信息引入到模型之中 。詞在漢語中扮演了非常重要的詞是語言最重要的組成部分 。谷歌發(fā)布基于字的BERT[1]模型之后,一個很自然的想法就是將詞的信息引入到模型之中 。詞在漢語中扮演了非常重要的角色 。很多詞所表達(dá)的含義與其包括的字的含義沒有直接聯(lián)系,比如音譯詞巧克力、圣代 。
最近有一些工作嘗試將詞的信息引入到BERT中去 。百度的ERNIE通過遮罩策略將詞的信息引入到模型之中 , 但是其本質(zhì)仍然是基于字的模型[2] 。另外一種方式是對語料進(jìn)行分詞 , 直接訓(xùn)練基于詞的中文BERT模型 。不過由于中文詞典很大 , 在谷歌BERT上使用大詞典會導(dǎo)致顯存溢出 。使用小詞典的話會導(dǎo)致大量的OOV 。為了減緩OOV的影響,我們需要擴(kuò)大詞典 。
因此本文引入了一些語言模型訓(xùn)練的技術(shù),提出了訓(xùn)練大詞典BERT模型的方法 。大詞典能提升詞語的覆蓋度,減緩未登錄詞(OOV)問題[3] 。不過雖然大詞典能夠減緩OOV,但是相比于字模型,仍然存在一定比例的OOV,會受到OOV的影響 。此外,訓(xùn)練基于詞的BERT模型能夠得到高質(zhì)量的上下文相關(guān)詞向量 。這些向量可以用于各種應(yīng)用和下游任務(wù)之中 。
2. 大詞典BERT簡介
在谷歌原來的BERT模型中,embedding 層和softmax 層的參數(shù)數(shù)量隨著詞典大小呈線性變化 。如果在BERT-base模型上使用50萬大小的詞典,那么embedding層和softmax層會包含500000*768 768*500000=7.68億個參數(shù) 。要知道BERT-base的編碼器層(12層transformer)也僅僅包含8500萬個參數(shù) 。因此,直接在BERT上使用大詞典會造成顯存溢出 。實(shí)際上,對于BERT-base模型(在P40型號的GPU上 , batch size為32),當(dāng)句子長度為128的時候,最多支持16萬的詞典大小 , 當(dāng)句子長度為192的時候,只能支持8萬的詞典大小 。
在下面的章節(jié)中,我們針對embedding 層和softmax 層進(jìn)行優(yōu)化 。對softmax層優(yōu)化后詞典可以達(dá)到五十萬大小,對softmax層和embedding層同時優(yōu)化可以把詞典擴(kuò)大到100萬大小 。
3. Adaptive Softmax
對softmax層的優(yōu)化一直是自然語言處理領(lǐng)域研究的重點(diǎn) 。這個方向的研究很多,常用的技術(shù)包括基于采樣的方法[4],基于樹的方法[5]等等 。這里我們使用facebook提出的adaptive softmax[6]進(jìn)行優(yōu)化 。之所以選擇adaptive softmax,一方面是因?yàn)槠涫轻槍PU進(jìn)行的優(yōu)化 。我們在多機(jī)多GPU上進(jìn)行預(yù)訓(xùn)練,使用adaptive softmax能幫助我們在效率上得到顯著的提升 。另一方面 , adaptive softmax可以節(jié)約顯存,這是我們引入大詞典的關(guān)鍵 。下面簡要介紹adaptive softmax的原理 。
如上圖所示 , 如果我們將詞典分成三個部分,那么adaptivesoftmax則由三個前向神經(jīng)網(wǎng)絡(luò)構(gòu)成,我們分別稱之為head、tail1、tail2 。第一個詞典會鏈到第二和第三個詞典 。我們根據(jù)詞頻對詞語進(jìn)行排序,令head前向神經(jīng)網(wǎng)絡(luò)去預(yù)測高頻詞語;tail1去預(yù)測中間頻率的詞語;tail2去預(yù)測低頻詞語 。
因?yàn)楦哳l詞占據(jù)了語料中絕大部分的頻數(shù)(Zipf’s Law),所以在大多數(shù)情況下 , 我們只需要用head這個規(guī)模較小的前向神經(jīng)網(wǎng)絡(luò)去做預(yù)測,這很大程度上減少了計(jì)算量 。當(dāng)遇到低頻詞的時候(比如上圖中的二氧化碳),模型先使用head去預(yù)測,發(fā)現(xiàn)tail2的概率值最大,這表明需要繼續(xù)使用tail2前向神經(jīng)網(wǎng)絡(luò)去預(yù)測 。然后我們得到tail2前向神經(jīng)網(wǎng)絡(luò)對于二氧化碳的預(yù)測值之后,讓其與head的tail2位置的概率值相乘 , 就能得到二氧化碳這個詞的預(yù)測概率 。在具體實(shí)現(xiàn)中 , tail1和tail2一般是兩層的前向神經(jīng)網(wǎng)絡(luò),中間隱層維度設(shè)為一個較小的值,從而實(shí)減少模型的參數(shù) 。下圖是PyTorch實(shí)現(xiàn)的一個adaptive softmax的示例 。詞典大小為50萬 。
可以看到,中間頻率的詞語的向量維度是192;低頻詞語的向量維度是48 。相對于原來的參數(shù)量 , adaptive softmax參數(shù)減少了500000*768-37502*768-62500*192-400000*48-768*768-192*768-48*768 = 323224320個,相當(dāng)于原來參數(shù)量的84.2% 。在使用adaptive softmax之后,詞典的規(guī)模可以從8萬擴(kuò)展到50萬 。50萬詞典已經(jīng)可以覆蓋絕大部分常見詞,能有效的減少OOV的情況 。
4. Adaptive Input
Softmax層一定程度上可以看作embedding層的鏡像 。因此可以把softmax上的優(yōu)化操作搬到embedding層 。在今年的ICLR上facebook提出了adaptive input方法[7] 。下面簡要介紹adaptive input的原理 。
如上圖所示 , adaptive input對高頻詞使用較大的維度,對低頻詞使用較小的維度 。更具體的,上圖把50萬詞語按照詞頻排好序,并分成三個部分:第一部分包括37500個高頻詞語,詞向量維度為768;第二部分包括62500個中間頻率的詞語,詞向量維度為192;第三部分包括40萬個低頻詞語,詞向量維度為48 。為了使維度可以統(tǒng)一到隱層維度,這里引入了三個不同的前向神經(jīng)網(wǎng)絡(luò),把不同維度的詞向量映射到相同的維度 。經(jīng)過計(jì)算,我們可以得到adaptive input 減少的參數(shù)量是500000*768-37500*768-62500*192-400000*48-768*768-192*768-48*768= 323225856,相當(dāng)于原來的參數(shù)量的84.2% 。當(dāng)模型同時引入adaptive softmax和adaptive input的時候,詞典可以進(jìn)一步擴(kuò)展到100萬 。
5. 動態(tài)詞典
谷歌BERT模型使用固定的詞典,即對不同的語料和下游任務(wù),均只使用一個詞典 。這對基于字的模型是合理的 。因?yàn)橹形淖值臄?shù)量有限,使用谷歌提供的大小為21128的詞典不會有OOV的問題 。但是對于基于詞的BERT模型,使用固定詞典則會有嚴(yán)重的問題 。下表展示了使用中文維基百科作為預(yù)訓(xùn)練語料,在多個下游任務(wù)上的OOV詞語數(shù)量以及OOV詞語數(shù)量占總詞典大小的百分比 。其中第一列展示了不同下游任務(wù)數(shù)據(jù)集的名稱以及對應(yīng)的詞典大小,第二、三、四列展示了不同大小的維基百科詞典與下游任務(wù)數(shù)據(jù)詞典相比較時的OOV在下游任務(wù)數(shù)據(jù)集的占比 。可以看到,大詞典有效的緩解了OOV的問題 。但是即使詞典擴(kuò)大到100萬,仍然有很多未登錄詞
因此,對于基于詞的BERT模型 , 無論是用新的語料進(jìn)行疊加預(yù)訓(xùn)練 , 還是針對下游任務(wù)進(jìn)行微調(diào),我們都需要生成新的詞典(動態(tài)詞典) , 并根據(jù)新的詞典去對預(yù)訓(xùn)練模型的embedding層和softmax層進(jìn)行調(diào)整 。調(diào)整的方式如下圖所示(藍(lán)色表示根據(jù)預(yù)訓(xùn)練模型的參數(shù)初始化,紅色表示隨機(jī)初始化) 。如果使用固定詞表,那么詞語人工智能會被映射到UNK , 這個詞語無法在下游任務(wù)上進(jìn)行訓(xùn)練 。對于加入adaptive機(jī)制的模型,調(diào)整的過程會增加一些步驟 。后面實(shí)驗(yàn)中基于詞的BERT模型均默認(rèn)使用動態(tài)詞典 。動態(tài)詞典相對于固定詞典在效果上有著顯著的提升 。
6. 基于BERT的以詞搜詞
本文的另一項(xiàng)工作是嘗試了一種上下文相關(guān)詞向量的最近鄰檢索方法 。在傳統(tǒng)的詞向量工作中 , 每個詞對應(yīng)一個固定的向量,我們稱其為上下文無關(guān)詞向量 。對這類詞向量進(jìn)行最近鄰檢索只需要計(jì)算詞向量之間的cos值 , 并根據(jù)cos值進(jìn)行排序 。對于上下文相關(guān)詞向量,詞向量不僅和詞語本身有關(guān),還和詞語周圍的上下文有關(guān) 。也就是語料中的每一個token(詞語的一次出現(xiàn)) , 都有一個獨(dú)有的向量 。ELMO[8]為每個token計(jì)算一個向量 , 并利用token向量去尋找其它的token向量 。ELMO是基于整個語料尋找token向量的最近鄰 。這里我們嘗試一種基于詞典的上下文相關(guān)詞向量檢索方法,具體步驟如下:假如我們需要查找在句子吉利汽車是中國汽車品牌中詞語吉利的最近鄰(如下圖),我們首先把這句話輸入到BERT編碼器中,取最上層的詞語對應(yīng)的隱層向量作為詞向量 。然后我們把詞典中的所有詞語依次替換到吉利的位置,這樣就得到每個詞語在特定上下文中的向量 。我們計(jì)算這些向量之間的cos值 , 即可得到詞語的最近鄰 。
我們還嘗試使用基于字的BERT模型進(jìn)行以詞搜詞作為基于詞的模型的對比 。具體步驟和基于詞的模型相似,只是在基于字的模型中,每一個字對應(yīng)一個向量 , 因此一個詞會對應(yīng)多個向量 。我們對BERT編碼器最上層的字的隱層向量取平均,從而得到每個詞語在特定上下文中的向量 。
使用上面介紹的方式進(jìn)行以詞搜詞,相對于傳統(tǒng)的上下文無關(guān)詞向量,在多義詞的檢索效果上有著明顯的提升 。下面給出幾個以詞搜詞的示例 。給定一句話以及這句話中要檢索的詞語,返回這個詞語的最近鄰詞語以及相似度 。
候選詞語:吉利
候選句子:2010年 6 月 2 日 福特汽車公司 宣布 出售 旗下 高端 汽車 沃爾沃 予 中國 浙江省 的吉利汽車,同時將 于 2010 年 第四季 停止 旗下 中階 房車 品牌 所有 業(yè)務(wù) ,并 將 其 資源 全數(shù) 轉(zhuǎn)移 至 高級車 品牌 林肯 , 2011 年 1 月 4 日 , 福特 汽車 正式 裁徹 品牌。
在這個例子中,吉利指一種汽車品牌 。可以看到基于詞的模型的檢索效果不錯 。其中沃爾沃、金牛座是汽車的品牌 。永利、天安、仁和、新光均是公司名稱,并且這些公司均以一個比較吉利的詞語作為公司的名字 。基于字的模型效果也不錯,會傾向于返回包含吉、利這兩個字的詞語 。
候選詞語:吉利
候選句子:主要演員 有 扎克· 布拉 夫 、 薩拉 · 朝克 、 唐納德 · 費(fèi)森 、 尼爾 · 弗林 、 肯 · 詹金斯 、 約翰 · 麥吉利、 朱迪 · 雷耶斯 、 邁克爾 · 莫斯利 等。
在這個例子中,吉利指一個人名 。可以看到基于字和基于詞的模型均通過上下文捕捉到了這里的吉利是人名的信息 。基于字的模型返回的人名均包含利和吉 。基于詞的模型返回的單詞則更加的多樣 。
候選詞語:吉利
候選句子:他 出生 時 身上附有 胎膜,其母 認(rèn)為 這是 一個吉利的 征兆。
在這個例子中,吉利指這個單詞的本義 。可以看到基于字和基于詞的模型均表現(xiàn)不錯 。基于字的模型返回的單詞大多包含吉、利兩字 。基于詞的模型除了會返回和吉利意思相近的詞,比如仁德、光彩、愉快 , 還會返回食用油、玉這樣的名詞 。這些名字放在原句中比較合適 。
候選詞語:蘋果
候選句子:另外,劉德華亦 堅(jiān)持 每天 喝 一點(diǎn) 混合 果汁 , 比如蘋果加 紅蘿卜 一起 榨 的 汁 , 以 保持 自身 的 健康。
汽車ECO是什么功能?磨合期要不要開eco車上的eco是車輛的經(jīng)濟(jì)模式,此模式可以降低動力輸出的反應(yīng)速率,減少了很多不必要的燃油噴射 , 讓轉(zhuǎn)速更平順,eco模式下油門的反應(yīng)沒 。
在這個例子中,蘋果指水果 。兩種模型效果均不錯 。基于字的模型傾向返回包含果的詞 。
候選詞語:蘋果
候選句子:蘋果削減 了 臺式 Mac 產(chǎn)品線 上 的 眾多 產(chǎn)品
在這個例子中,蘋果指科技公司 。基于詞的模型效果不錯 。但是基于字的模型效果一般 , 雖然也在topn列表中返回了谷歌、微軟 , 但是前面幾個單詞均是包含果的詞語 。
抑制法 。報(bào)警 一旦發(fā)生火災(zāi) , 要迅速打電話“119”向消防隊(duì)報(bào)警,并立即組織人員撲救 。
候選詞語:騰訊
候選句子:馬化騰于 1984 年 隨 家人 從 海南 移居 深圳 ,14 年后 的 1998 年 11 月,他 和 其他 四位 聯(lián)合創(chuàng)始人一起 創(chuàng)立騰訊 。
在這個例子中,我們可以看到基于詞的模型返回的均是互聯(lián)網(wǎng)公司或者相關(guān)的內(nèi)容 。基于字的模型也會返回和互聯(lián)網(wǎng)公司相關(guān)的單詞 , 比如微信、百度,但是也會返回一些包含騰的詞語 。這些詞語和互聯(lián)網(wǎng)公司關(guān)系較弱 。
通過上面的定性分析,我們可以看到使用基于字的BERT模型做詞的檢索有一定的局限性 。基于字的模型的詞向量會受到字向量的影響,傾向于返回包含相同字的詞語 。基于詞的模型效果較好 , 能對多義詞進(jìn)行高質(zhì)量的檢索 。
上面使用的檢索方法效率較低 。假如詞典大小為2萬,那么進(jìn)行一次檢索,需要通過BERT編碼器2萬次 。如果不加以優(yōu)化,檢索一次的時間需要十幾秒以上 。目前我們正在進(jìn)行優(yōu)化 。我們發(fā)現(xiàn)合理的減少編碼器的層數(shù)和attention head的個數(shù) , 可以在大幅度提升效率的同時,對檢索結(jié)果質(zhì)量產(chǎn)生較小的影響 。目前,我們對2萬詞語進(jìn)行檢索,時間可以控制在3秒以內(nèi),并能得到較高質(zhì)量的檢索結(jié)果 。在這個方向上還有很多的優(yōu)化點(diǎn),后續(xù)我們會進(jìn)一步探索如何提升檢索效率 。
7. 實(shí)驗(yàn)
和Google BERT一樣,我們使用中文維基百科作為語料進(jìn)行預(yù)訓(xùn)練 。對于語料中的中文,我們使用jieba默認(rèn)模式進(jìn)行分詞;對于語料中的英文等其它語言,我們使用和Google相同的分詞策略 。所有的模型均訓(xùn)練50萬步;學(xué)習(xí)率是1e-4(warmuplinear策略,warmup設(shè)為0.01);優(yōu)化器為BERT默認(rèn)的AdamW;batchsize為256;序列長度為192 。我們使用一個百科詞條作為一個文檔 。文檔中根據(jù) 。、!、?進(jìn)行分句 。目前我們有8萬詞典和50萬詞典的模型 , 100萬詞典的模型正在訓(xùn)練當(dāng)中 。我們和Google BERT預(yù)訓(xùn)練使用的策略基本一樣 。只是受限于資源,我們的seq_length和訓(xùn)練步數(shù)小于Google的預(yù)訓(xùn)練模型 。
7.1 詞模型在下游任務(wù)的表現(xiàn)
我們用5個公開的中文下游任務(wù)數(shù)據(jù)集來對基于詞的BERT模型進(jìn)行評估 。LCQMC是哈工大發(fā)布的問題匹配數(shù)據(jù)集[10];Book review是北師大發(fā)布的書評情感分類數(shù)據(jù)集[11] 。Chnsenticorp是百度給出的評論情感分析數(shù)據(jù)集[2];Shopping是評論數(shù)據(jù)集;XNLI 是句子關(guān)系推理數(shù)據(jù)集[12] 。
下表展示了基于詞的BERT模型在5個公開數(shù)據(jù)集上的表現(xiàn) 。評價(jià)指標(biāo)是不同任務(wù)上的分類的準(zhǔn)確率(驗(yàn)證集/測試集) 。可以看到 , 詞模型在Chnsenticorp以及Shopping數(shù)據(jù)集上與字模型表現(xiàn)相當(dāng),在其他數(shù)據(jù)集上與字模型相比還有差距 。
另外 , 我們還對基于8萬詞典和50萬詞典的BERT模型進(jìn)行了對比 。大詞典較大幅度的降低了OOV的情況 , 50萬詞典的詞模型在四個數(shù)據(jù)集上的表現(xiàn)都顯著優(yōu)于8萬詞典的詞模型 。
7.2 詞模型在內(nèi)部情感分類數(shù)據(jù)集上的表現(xiàn)
下表展示的是在內(nèi)部情感分類數(shù)據(jù)集的結(jié)果,與上面測試集不同之處在于 , 這個測試集以及預(yù)訓(xùn)練的詞模型的數(shù)據(jù)集都是同源的 , 另外由于大詞表的情感分類詞模型還沒有訓(xùn)練出來 , 這個詞模型是一個小詞典的詞模型,可以看出,詞模型的表現(xiàn)比字模型的表現(xiàn)略好一些 。
7.3 動態(tài)詞表的有效性
下表展示了使用固定詞典和動態(tài)詞典的模型在書評分類數(shù)據(jù)集上的效果 。不管是使用隨機(jī)初始化還是預(yù)訓(xùn)練模型初始化,動態(tài)詞典的效果都要顯著的好于固定詞典 。說明動態(tài)詞表對于詞模型去初始化下游任務(wù)模型確實(shí)非常有用 。
7.4 對于實(shí)驗(yàn)結(jié)果的分析
詞模型在公開數(shù)據(jù)集的表現(xiàn)遜于字模型 , 我們是不是可以得到詞模型一定差于字模型的結(jié)論?我們認(rèn)為答案是否定的 。根據(jù)內(nèi)部情感分類詞模型的分類結(jié)果就可以看出來,詞模型還是表現(xiàn)不錯 。
在公開數(shù)據(jù)集表現(xiàn)不好,我們認(rèn)為如下幾方面原因 , 第一是由于OOV的問題,根據(jù)上面對于OOV的統(tǒng)計(jì)結(jié)果 , 即使詞典擴(kuò)展至100萬,也在下游的數(shù)據(jù)上存在較多OOV的情況,后面雖然加了動態(tài)詞典,但是這部分新加入的詞語向量沒有經(jīng)過預(yù)訓(xùn)練 。如果預(yù)訓(xùn)練語料和下游任務(wù)數(shù)據(jù)集有相似的來源,會一定程度上減緩這個問題 。第二是因?yàn)樵~相對于字更加的稀疏(有些詞的頻率很低),我們使用的預(yù)訓(xùn)練語料(中文維基百科)規(guī)模較小,這導(dǎo)致對一些詞的訓(xùn)練并不充分 。在更大規(guī)模,更多樣的語料上進(jìn)行預(yù)訓(xùn)練有機(jī)會帶來更好的效果[9] 。
此外 , 詞模型在一些數(shù)據(jù)集表現(xiàn)比較差還有一些其他原因,比如在書評數(shù)據(jù)集上,測試集包含25988個詞語,其中9525個詞語不在訓(xùn)練集中 。我們認(rèn)為這是導(dǎo)致在書評數(shù)據(jù)集上基于詞的模型不如基于字的模型的重要的因素 , 更合適的分詞策略(例如細(xì)粒度分詞)會一定程度上減緩這個問題 。
總結(jié)
在本文中我們介紹了如何通過改進(jìn)BERT的softmax層和embedding層來擴(kuò)充中文詞模型的詞典規(guī)模,從而減緩未登錄詞的問題 。此外,在訓(xùn)練好的基于詞的BERT模型的基礎(chǔ)上,我們給出了一種針對上下文相關(guān)詞向量進(jìn)行檢索的方法,展示了使用BERT詞向量進(jìn)行以詞搜詞的效果 。
參考資料:
- Devlin J, Chang M W, LeeK, et al. Bert: Pre-training of deep bidirectional transformers forlanguage understanding[J]. NAACL 2019.
- https://github.com/PaddlePaddle/LARK/tree/develop/ERNIE
- Yan Song, Shuming Shi,Jing Li, and Haisong Zhang. Directional Skip-Gram: ExplicitlyDistinguishing Left and Right Context for Word Embeddings. NAACL 2018.
- Bengio Y, Ducharme R,Vincent P, et al. A neural probabilistic language model[J]. JMLR, 2003.
- Tomas Mikolov, IlyaSutskever, Kai Chen, Gregory S. Corrado, and Jeffrey Dean:DistributedRepresentations of Words and Phrases and their Compositionality. NIPS2013.
- Edouard Grave , ArmandJoulin, Moustapha Cisse, David Grangierd, Herve Jegou et al. Efficientsoftmax approximation for GPUs, ICML 2016.
- Alexei Baevski , MichaelAuli. Adaptive Input Representations for Neural Language Modeling. ICLR2019.
- Peters, Matthew E., etal. Deep contextualized word representations. NAACL 2018.
- https://github.com/dbiir/UER-py
- Liu, X., Chen, Q., Deng,C. , et al. LCQMC: A Large-scale Chinese Question Matching Corpus. COLING2018.
- Qiu Y, Li H, Li S, etal. Revisiting Correlations between Intrinsic and Extrinsic Evaluations ofWord Embeddings. CCL & NLP-NABD.
- https://github.com/facebookresearch/XNLI
猜你喜歡
- 表達(dá)父女情感的語句 情感語句大全
- 2022情感語錄文案容易熱門 2022情感語錄
- 人物情感的詞語有哪些 有關(guān)情感的詞語
- 中文情感詞匯識別及分類研究 中文情感詞
- 關(guān)于情感的詞語二個字 有關(guān)情感的詞語
- 2022最火的情感文案 2022情感語錄
- 表示情感的詞語有哪些2個字 正面情感詞語
- 情感短語句 情感語句大全
- 有關(guān)情感的詞語2個字 有關(guān)情感的詞語
- 正面情感有哪些詞語 正面情感詞語
