張聲龍,劉 穎,馬艷軍
(1. 清華大學(xué) 人文學(xué)院,北京 100084; 2. 北京百度網(wǎng)訊科技有限公司 深度學(xué)習(xí)技術(shù)平臺(tái)部,北京 100085)
隱喻(Metaphor)是一種比喻性的語(yǔ)言。Lakoff和Johnson[1]的概念隱喻理論從認(rèn)知語(yǔ)言學(xué)的角度對(duì)隱喻現(xiàn)象進(jìn)行了深入的剖析。隱喻是通過(guò)概念映射(Conceptual Mapping)這一機(jī)制實(shí)現(xiàn)的,在隱喻機(jī)制中,一事物(源域)可以用來(lái)表示另一事物(目標(biāo)域),映射的依據(jù)則是二者之間的相似性。以句子“書(shū)是人類(lèi)進(jìn)步的階梯?!睘槔?“階梯”在句子中是源域,“書(shū)”則是目標(biāo)域,二者之間的共同特質(zhì)是“使人進(jìn)步”,從而形成了隱喻。隱喻在日常生活中普遍存在,它不僅僅存在于自然語(yǔ)言之中,更與人的思維和行為密切相關(guān)。
識(shí)別句子中的隱喻對(duì)于自然語(yǔ)言處理來(lái)說(shuō)十分重要,情感分析、機(jī)器翻譯、問(wèn)答系統(tǒng)和機(jī)器閱讀理解等任務(wù)都需要模型能處理句子中的字面義和隱喻義,否則可能會(huì)影響系統(tǒng)的性能。以英文句子“It seems that he will kick the bucket soon.”為例,若機(jī)器不能識(shí)別出“kick the bucket”是“去世”的隱喻用法,翻譯的結(jié)果則會(huì)與原句的語(yǔ)境義大相徑庭。同時(shí),能夠讀懂句子中的言外之意,也是機(jī)器智能的一種重要體現(xiàn)。
針對(duì)中文領(lǐng)域的隱喻識(shí)別任務(wù),本文提出了一種基于句法感知圖卷積神經(jīng)網(wǎng)絡(luò)和ELECTRA的隱喻識(shí)別模型(Syntax-aware GCN with ELECTRA,SaGE)。具體而言,模型分為語(yǔ)義處理模塊和句法處理模塊兩個(gè)子模塊。語(yǔ)義處理模塊對(duì)ELECTRA語(yǔ)言模型的輸出進(jìn)行處理,抽取出句子的語(yǔ)義信息;句法處理模塊則將句子按照依存句法分析的結(jié)果組織成一張圖,使用圖卷積神經(jīng)網(wǎng)絡(luò)(Graph Convolutional Network, GCN)抽取句子的句法信息。最終,模型將兩個(gè)子模塊的輸出進(jìn)一步進(jìn)行融合處理以完成分類(lèi)。本文的貢獻(xiàn)如下:
(1) 針對(duì)中文的特點(diǎn),本文考慮了字和詞兩種粒度的信息,使用ELECTRA語(yǔ)言模型和GCN分別對(duì)句子的語(yǔ)義和句法進(jìn)行表示,有效增強(qiáng)了模型的性能。本文模型在CCL 2018中文隱喻識(shí)別數(shù)據(jù)集上超越了此前的最佳成績(jī),同時(shí)較BERT(Bidirectional Encoder Representations from Transformers)、Ernie(Enhanced Representation through Knowledge Integration)和XLNet等基線(xiàn)模型有顯著提升。特征消融實(shí)驗(yàn)表明,在基線(xiàn)模型的基礎(chǔ)上結(jié)合SaGE的句法處理模塊,能進(jìn)一步增強(qiáng)語(yǔ)言模型處理隱喻的能力。
(2) 這項(xiàng)研究是將圖卷積神經(jīng)網(wǎng)絡(luò)融入中文隱喻識(shí)別任務(wù)中的首項(xiàng)研究。此前的研究提取出來(lái)的各項(xiàng)特征是相對(duì)獨(dú)立的,而SaGE將句子表示為依存圖,因此可以將不同的特征聯(lián)系起來(lái)。同時(shí),我們?cè)贕CN的基礎(chǔ)上進(jìn)行了拓展,為節(jié)點(diǎn)之間的連邊賦予了特征。
(3) 從語(yǔ)言學(xué)角度為模型進(jìn)行了解釋分析,結(jié)合實(shí)驗(yàn)結(jié)果驗(yàn)證了句法結(jié)構(gòu)對(duì)于句子深層語(yǔ)義理解的重要作用。
如何識(shí)別句子中的隱喻一直以來(lái)都吸引著諸多學(xué)者的研究興趣。賈玉祥和俞士汶[2]利用同義詞詞林和HowNet作為詞典資源計(jì)算詞語(yǔ)之間的語(yǔ)義關(guān)聯(lián)性,識(shí)別中文的名詞隱喻句。曾華琳等人[3]基于最大熵模型提出了一種特征自動(dòng)選擇方法,綜合考慮了字符、句法結(jié)構(gòu)和語(yǔ)義信息等不同層次的特征,該方法能在隱喻識(shí)別任務(wù)中為輸入的文本匹配最優(yōu)的特征模板。張冬瑜等人[4]使用BERT模型替代詞向量進(jìn)行語(yǔ)義表示,利用Transformer進(jìn)行特征提取并通過(guò)分類(lèi)器進(jìn)行名詞隱喻識(shí)別。
Mao等人[5]從語(yǔ)言學(xué)理論出發(fā),使用靜態(tài)的GloVe詞向量表示詞的本義,使用動(dòng)態(tài)調(diào)整的 ELMo詞向量表示詞的語(yǔ)境義,通過(guò)神經(jīng)網(wǎng)絡(luò)比較二者之間的語(yǔ)義差別進(jìn)一步進(jìn)行隱喻識(shí)別。Mu等人[6]認(rèn)為理解隱喻要立足于更加具體的語(yǔ)境,他們跳出了短語(yǔ)或句子層級(jí),從更大的范圍來(lái)處理隱喻,僅使用簡(jiǎn)單的梯度提升模型便取得了不錯(cuò)的效果。Su等人[7]將隱喻識(shí)別轉(zhuǎn)化為閱讀理解問(wèn)題,他們?cè)贐ERT原輸入的基礎(chǔ)上,額外增加了全局語(yǔ)境特征、局部語(yǔ)境特征、問(wèn)句特征和詞性特征等,增強(qiáng)了模型的表示能力,在2020 ACL隱喻識(shí)別任務(wù)上取得了最佳表現(xiàn)。Gong等人[8]使用RoBERTa對(duì)語(yǔ)言進(jìn)行向量化表示,捕捉句子的語(yǔ)境信息,同時(shí)結(jié)合詞匯抽象程度、詞性標(biāo)注、主題模型、 WordNet 和 VerbNet 等外部特征進(jìn)行判別,進(jìn)一步提升了模型的性能。
以上諸多研究都考慮了外部特征對(duì)于隱喻識(shí)別的作用。但是,它們抽取的特征是彼此獨(dú)立的,沒(méi)有按照句法規(guī)則將各類(lèi)特征統(tǒng)一起來(lái),忽略了句法結(jié)構(gòu)對(duì)于句子的支撐作用。此前已有許多研究者使用非線(xiàn)性結(jié)構(gòu)來(lái)處理文本。Tai等人[9]將LSTM拓展到了樹(shù)結(jié)構(gòu),提出了Tree-LSTM模型。作者利用句法分析的結(jié)果將句子組織成句法樹(shù),使用Tree-LSTM進(jìn)行文本情感分析,取得了不錯(cuò)的結(jié)果。Marcheggiani和Titov[10]針對(duì)LSTM結(jié)構(gòu)沒(méi)有利用句法信息的問(wèn)題,在雙向LSTM層上堆疊了一個(gè)GCN層以編碼句法信息,他們的模型在語(yǔ)義角色標(biāo)注任務(wù)上表現(xiàn)出色。Ji等人[11]使用圖神經(jīng)網(wǎng)絡(luò)進(jìn)行依存句法分析,使得依存樹(shù)節(jié)點(diǎn)能夠有效表示高階信息,其方法在多個(gè)公開(kāi)數(shù)據(jù)集上表現(xiàn)優(yōu)異。受到此前研究的啟發(fā),本文在提取特征時(shí)將一個(gè)句子中的詞按照依存關(guān)系連接起來(lái),組成一張圖,在此基礎(chǔ)上使用圖卷積神經(jīng)網(wǎng)絡(luò)對(duì)句子進(jìn)行處理。
當(dāng)前主流的中文預(yù)訓(xùn)練語(yǔ)言模型(如BERT等)大多是基于字粒度的,它們?cè)谥T多自然語(yǔ)言處理任務(wù)中表現(xiàn)優(yōu)異,展現(xiàn)了強(qiáng)大的語(yǔ)義編碼能力,這對(duì)于隱喻識(shí)別任務(wù)而言是不可或缺的。另一方面,隱喻識(shí)別需要考慮某些外部句法特征,而這些句法特征往往是基于詞粒度的。為了將字粒度的語(yǔ)義信息和詞粒度的外部句法特征結(jié)合起來(lái),增強(qiáng)模型的表示能力,我們?cè)O(shè)計(jì)了一種基于句法感知圖卷積神經(jīng)網(wǎng)絡(luò)和ELECTRA的隱喻識(shí)別模型(SaGE),其結(jié)構(gòu)如圖1所示。
圖1 SaGE模型結(jié)構(gòu)
從圖1可以看出,該模型分為兩大模塊,左側(cè)為語(yǔ)義處理模塊,右側(cè)為句法處理模塊。語(yǔ)義處理模塊中,句子s被切分為t1,t2,…,tn共n個(gè)字符,經(jīng)過(guò)ELECTRA語(yǔ)言模型處理后,輸出為字向量,e1,e2,…,en。 字向量再經(jīng)由Transformer編碼器進(jìn)行進(jìn)一步處理以抽取全局語(yǔ)境信息,輸出句子的語(yǔ)義特征。在句法處理模塊中,句子s被分詞器切分為w1,w2,…,wm共m個(gè)詞,并將每個(gè)詞的詞性嵌入為低維向量,記為pwi。 同時(shí),句子可以被依存句法分析器解析成一張依存圖,若兩個(gè)詞之間存在依存關(guān)系,則為它們建立一條邊,并將每一條邊上的依存關(guān)系嵌入為低維向量,記為dej。 圖卷積神經(jīng)網(wǎng)絡(luò)會(huì)對(duì)句子的依存圖進(jìn)行處理,輸出圖的嵌入向量作為句法特征。進(jìn)一步,模型將語(yǔ)義特征向量和句法特征向量拼接起來(lái)并輸入到分類(lèi)器中,完成分類(lèi)。
ELECTRA是Google和斯坦福大學(xué)[12]于2020年提出的一種全新的預(yù)訓(xùn)練語(yǔ)言模型,它采用Transformer編碼器作為基礎(chǔ)組件。不同于BERT等掩碼語(yǔ)言模型(Masked Language Model),ELECTRA提出了一個(gè)新穎的訓(xùn)練任務(wù)。
在掩碼語(yǔ)言模型中,以BERT為例,模型會(huì)隨機(jī)遮蓋掉一部分詞,并通過(guò)后續(xù)的訓(xùn)練試圖還原被遮蓋的詞,這種訓(xùn)練方式存在著一定的缺陷:首先,掩碼標(biāo)記“[mask]”是人工標(biāo)注的,這在后續(xù)的下游任務(wù)中實(shí)際上并不會(huì)出現(xiàn),因此可能會(huì)造成一定的性能損失;其次,BERT只對(duì)句子中15%的詞進(jìn)行隨機(jī)處理,模型訓(xùn)練過(guò)程中只對(duì)其中15%的詞進(jìn)行了預(yù)測(cè),沒(méi)有充分利用大規(guī)模語(yǔ)料的優(yōu)勢(shì)。ELECTRA訓(xùn)練思路如圖2所示。
圖2 ELECTRA訓(xùn)練思路
ELECTRA借鑒了對(duì)抗生成網(wǎng)絡(luò)(Generative Adversarial Networks, GAN)的思想,引入了判別式任務(wù)(Discriminative Task)。第一步,模型通過(guò)生成器(Generator, 通常是一個(gè)小型的掩碼語(yǔ)言模型)與BERT一樣對(duì)被破壞的句子進(jìn)行還原,即預(yù)測(cè)被隨機(jī)遮蓋的詞。第二步,模型通過(guò)判別器(Discriminator)對(duì)生成器輸出的句子進(jìn)行處理,判定其中的詞是原來(lái)的還是被生成器替換的。顯然,ELECTRA在訓(xùn)練過(guò)程中預(yù)測(cè)了句子中的全部詞,克服了掩碼語(yǔ)言模型只預(yù)測(cè)部分詞的缺點(diǎn)。在訓(xùn)練完成后,使用判別器處理下游任務(wù),因此,解決了實(shí)際任務(wù)中“[mask]”不出現(xiàn)的問(wèn)題。實(shí)驗(yàn)證明,ELECTRA在同等模型體積、數(shù)據(jù)量和算力的情況下比BERT表現(xiàn)要更為優(yōu)秀。
在我們的隱喻識(shí)別模型中,ELECTRA會(huì)對(duì)每一個(gè)輸入的句子S進(jìn)行處理,為句中每一個(gè)字生成d維的字向量。設(shè)S共包含n個(gè)字,則句子可用向量S=[t1,t2,…,tn]表示。其中,ti為句中第i個(gè)字符。ELECTRA的運(yùn)算可以簡(jiǎn)單表示為式(1)。
其中,Es為整個(gè)句子的嵌入矩陣,矩陣的每一行為句中每一個(gè)字符的字向量。利用ELECTRA強(qiáng)大的語(yǔ)義建模能力,我們能很好地表示句中的詞在當(dāng)前語(yǔ)境下的語(yǔ)義,從而在語(yǔ)義層面上克服隱喻識(shí)別的障礙。
Transformer編碼器來(lái)自于Google[13]發(fā)布于2017年的一項(xiàng)工作,它創(chuàng)造性地拋棄了此前在自然語(yǔ)言處理任務(wù)中廣泛使用的循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network, RNN)或卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)結(jié)構(gòu),代之以自注意力(Self-Attetion)機(jī)制,事實(shí)證明,Transformer相較于RNN和CNN等結(jié)構(gòu)有著明顯的優(yōu)勢(shì)。一方面,由于注意力機(jī)制的使用,模型可以關(guān)注更大范圍內(nèi)的語(yǔ)境信息,避免句子過(guò)長(zhǎng)導(dǎo)致的網(wǎng)絡(luò)退化。另一方面,Transformer可以很方便地利用現(xiàn)有的主流設(shè)備高效并行地工作,大大提升了運(yùn)算效率。如今,Transformer已經(jīng)成為BERT、XLNet和Ernie等大型預(yù)訓(xùn)練語(yǔ)言模型采用的基礎(chǔ)組件。
如圖3所示,本文模型中,Transformer編碼器的輸入由兩部分組成,第一部分是來(lái)自于上游 ELECTRA 語(yǔ)言模型產(chǎn)生的字向量,它們攜帶著豐富的語(yǔ)義信息;第二部分是句子中每一個(gè)字對(duì)應(yīng)的位置編碼,因?yàn)樵谧匀徽Z(yǔ)言處理任務(wù)中,考慮字符的先后順序是十分重要的。字向量和位置編碼相加,共同組成編碼器的完整輸入。在多頭注意力(Multi-Head Attention)環(huán)節(jié),編碼器會(huì)考慮每個(gè)字在句子中的上下文,計(jì)算句子中當(dāng)前字對(duì)于包括其自身在內(nèi)的所有字符的注意力,從而實(shí)現(xiàn)對(duì)整個(gè)句子的語(yǔ)義信息抽取,更好地建模句子的語(yǔ)義信息。此外,編碼器中還有殘差連接和歸一化層(Add &Norm),二者的目的都是防止網(wǎng)絡(luò)退化。
圖3 Transformer編碼器
在實(shí)驗(yàn)中,我們利用Transformer編碼器對(duì)ELECTRA輸出的句嵌入矩陣Es進(jìn)行處理。其運(yùn)算過(guò)程如下:
式(2)的H為句嵌入矩陣Es經(jīng)過(guò)Transformer編碼器后輸出的隱藏狀態(tài)矩陣,矩陣的每一行表示句中每一個(gè)詞的隱藏狀態(tài)。式(3)中對(duì)H取平均,壓縮為k維向量xh,其中,Mean表示取平均操作。xh再經(jīng)式(4)中的線(xiàn)性變換輸出為α維向量,得到xsem,即為語(yǔ)義特征向量。Transformer編碼器使得模型能夠?qū)㈥P(guān)注范圍擴(kuò)大至整個(gè)句子,實(shí)現(xiàn)句層級(jí)的語(yǔ)義信息提取,有助于發(fā)掘源域和目標(biāo)域之間的語(yǔ)義差異。
傳統(tǒng)的機(jī)器學(xué)習(xí)方法在歐氏數(shù)據(jù)上取得了重要的突破。文本和圖片都是屬于歐氏空間的數(shù)據(jù),其特點(diǎn)就是結(jié)構(gòu)十分規(guī)則。而在現(xiàn)實(shí)生活中,有許多不規(guī)則的數(shù)據(jù)結(jié)構(gòu),其中以圖結(jié)構(gòu)(Graph)最為典型。圖中每個(gè)節(jié)點(diǎn)周?chē)慕Y(jié)構(gòu)可能都是獨(dú)一無(wú)二的。社交網(wǎng)絡(luò)、化學(xué)分子結(jié)構(gòu)和知識(shí)圖譜等,都可以表示為圖結(jié)構(gòu)。
以樹(shù)結(jié)構(gòu)或圖結(jié)構(gòu)表示句子具有一定的合理性。一方面,句子內(nèi)部是有層次的,人類(lèi)很容易察覺(jué)到句子的層次性,然而機(jī)器卻只能在單一維度上向前或向后看,不符合人對(duì)語(yǔ)言的理解方式。另一方面,圖神經(jīng)網(wǎng)絡(luò)可以靈活編碼不同的語(yǔ)言特征,若圖中的每一個(gè)節(jié)點(diǎn)表示一個(gè)詞,每一條邊表示詞與詞之間的關(guān)系,則節(jié)點(diǎn)可以嵌入如詞義、詞性和實(shí)體信息等不同方面的知識(shí);圖中的邊則可以嵌入依存關(guān)系(Dependency)、句法成分結(jié)構(gòu)(Constituent)等不同的關(guān)系,對(duì)語(yǔ)言進(jìn)行更加準(zhǔn)確和豐富的特征表示。自然語(yǔ)言中的句子可以根據(jù)句法規(guī)則組織成樹(shù)形結(jié)構(gòu),而樹(shù)形結(jié)構(gòu)本質(zhì)上是一種特殊的圖結(jié)構(gòu)。因此,將句子組織成一張圖,是一種自然的想法。
以句子“他像風(fēng)一樣奔跑?!睘槔?該句子可以被句法分析器解析為如圖4所示的依存關(guān)系圖,每個(gè)詞都是依存圖中的一個(gè)節(jié)點(diǎn),其中“Root”為虛擬的頭節(jié)點(diǎn),從“Root”開(kāi)始逐次給每個(gè)詞編號(hào)。我們按照依存邊的指向?yàn)楣?jié)點(diǎn)添加邊,最終構(gòu)成一張完整的圖。此外,我們將詞的詞性標(biāo)注嵌入為低維向量,作為節(jié)點(diǎn)特征;若節(jié)點(diǎn)與節(jié)點(diǎn)之間存在一條邊,則將邊上的依存關(guān)系也嵌入為低維向量,作為邊特征。
圖4 依存圖
GCN將卷積神經(jīng)網(wǎng)絡(luò)的思想遷移到了圖結(jié)構(gòu)上。Gilmer等人[14]提出了一種名為消息傳遞圖神經(jīng)網(wǎng)絡(luò)(Message Passing Neural Network, MPNN)的框架,在MPNN框架下,節(jié)點(diǎn)可以發(fā)出消息,也可以通過(guò)節(jié)點(diǎn)之間的連邊接收其鄰居發(fā)出的消息。我們基于MPNN構(gòu)建空域圖卷積神經(jīng)網(wǎng)絡(luò),以便對(duì)有向圖進(jìn)行處理。
簡(jiǎn)單來(lái)說(shuō),在每一次卷積操作時(shí),節(jié)點(diǎn)i都會(huì)對(duì)其所有的鄰居傳遞過(guò)來(lái)的消息進(jìn)行處理,并以此為依據(jù)更新自己的值。第一次卷積時(shí),節(jié)點(diǎn)可以接收到鄰居的消息,第二次卷積時(shí)則可以接收到鄰居的鄰居的消息,因?yàn)榇藭r(shí)的鄰居在上一次卷積時(shí)同樣也接收到了來(lái)自它的鄰居的消息。從而,經(jīng)過(guò)多次卷積之后,節(jié)點(diǎn)可以接收到與自己距離較遠(yuǎn)的信息。
回到句子層級(jí)。設(shè)輸入GCN的句子為S,句中共有m個(gè)詞,GCN第l+1層輸出的詞的隱藏狀態(tài)為β維。則S經(jīng)過(guò)第l+1層后可用式(6)表示。
本實(shí)驗(yàn)采用大連理工大學(xué)于CCL 2018中文隱喻識(shí)別與情感分析任務(wù)中發(fā)布的中文隱喻識(shí)別數(shù)據(jù)集(1)https://github.com/DUTIR-Emotion-Group/CCL2018-Chinese-Metaphor-Analysis。該數(shù)據(jù)集分為訓(xùn)練集與測(cè)試集兩部分,其概況如表1所示(2)注:其中句長(zhǎng)均以字符為單位進(jìn)行統(tǒng)計(jì)。。
表1 數(shù)據(jù)集概況
數(shù)據(jù)集一共包含三類(lèi)樣本,即動(dòng)詞隱喻句、名詞隱喻句和非隱喻句。我們可以從語(yǔ)義沖突的觀(guān)點(diǎn)來(lái)理解不同類(lèi)型的隱喻,它是隱喻產(chǎn)生的基本條件。語(yǔ)義沖突也稱(chēng)為語(yǔ)義偏離,指在語(yǔ)言意義組合中違反語(yǔ)義選擇限制或常理的現(xiàn)象[15]。
我們根據(jù)句子的句法特征,以表2為例對(duì)動(dòng)詞隱喻句、名詞隱喻句和非隱喻句三類(lèi)句子進(jìn)行詳細(xì)說(shuō)明[16]。
表2 隱喻句分類(lèi)
名詞隱喻指的是由名詞構(gòu)成的隱喻。句1中的源域是“暖爐”,目標(biāo)域是“被窩”;句2中的源域是“銀河”, 目標(biāo)域是“水面”。兩個(gè)句子中作為源域和目標(biāo)域的兩個(gè)名詞屬于不同范疇,描述的是不同的實(shí)體,因此產(chǎn)生了語(yǔ)義上的沖突,形成了名詞隱喻句。
動(dòng)詞隱喻指的是話(huà)語(yǔ)中使用的動(dòng)詞與邏輯上的主語(yǔ)或賓語(yǔ)構(gòu)成語(yǔ)義沖突所形成的隱喻。句3中動(dòng)詞“點(diǎn)燃”一般用于可燃物,而非抽象的概念“熱情”;句4中動(dòng)詞“重創(chuàng)”多用于人或動(dòng)物,此處用于無(wú)生命的“城市”。兩個(gè)句子中的動(dòng)詞促使聽(tīng)者從沖突的語(yǔ)義出發(fā)去感知其引申義,由此構(gòu)成了動(dòng)詞隱喻句。
所謂非隱喻句,指的是句中的詞語(yǔ)沒(méi)有產(chǎn)生語(yǔ)義沖突,未觸發(fā)隱喻機(jī)制。句5和句6皆為非隱喻句。
數(shù)據(jù)集中三類(lèi)樣本的分布情況如表3所示。
我們的實(shí)驗(yàn)本質(zhì)上是一個(gè)針對(duì)句子的三分類(lèi)任務(wù)。依照CCL 2018的評(píng)測(cè)標(biāo)準(zhǔn),我們同樣采用宏平均F1值(macro-F1)作為實(shí)驗(yàn)的評(píng)價(jià)標(biāo)準(zhǔn)。宏平均首先對(duì)每一個(gè)類(lèi)i的預(yù)測(cè)結(jié)果計(jì)算精確率(P)、召回率(R)以及F值,然后對(duì)所有類(lèi)的F值求算術(shù)平均值,如式(9)、式(10)所示。
在實(shí)驗(yàn)中,本文選取了經(jīng)典的語(yǔ)言模型BERT[17]、Ernie[18]和XLNet[19]作為基線(xiàn)模型(Baseline)以驗(yàn)證本文方法的有效性。其中,BERT采用Google發(fā)布的原版BERT-base-Chinese,Ernie使用百度公司發(fā)布的Ernie 1.0,XLNet和本文模型中使用的ELECTRA采用哈工大發(fā)布的開(kāi)源預(yù)訓(xùn)練語(yǔ)言模型XLNet-base和ELECTRA-discriminator-base[20]。
此外,我們也選擇了在CCL 2018中文隱喻識(shí)別評(píng)測(cè)任務(wù)中排名前三名的隊(duì)伍(分別記為CCL 2018 top 1, CCL 2018 top 2 和CCL 2018 top 3)作為參照[21]。 由于評(píng)測(cè)任務(wù)中各個(gè)隊(duì)伍使用的方法已不可考,我們無(wú)法進(jìn)行模型上的詳細(xì)說(shuō)明,故僅從實(shí)驗(yàn)結(jié)果上驗(yàn)證本文方法的有效性。
數(shù)據(jù)預(yù)處理: 使用哈工大發(fā)布的LTP 4.0工具[22]對(duì)數(shù)據(jù)集中的全部句子進(jìn)行詞性標(biāo)注和依存句法分析。進(jìn)一步,將每個(gè)詞的詞性嵌入為8維向量,詞與詞之間的依存關(guān)系也嵌入為8維向量。
ELECTRA:使用ELECTRA模型的判別器作為語(yǔ)言模型對(duì)句子進(jìn)行向量化表示,句中每一個(gè)字均表示為768維的向量。
Transformer編碼器:僅使用一個(gè)編碼器層和一個(gè)注意力頭。編碼器對(duì)上游傳遞過(guò)來(lái)的ELECTRA字向量進(jìn)行處理,對(duì)句子的全部字向量取平均,然后通過(guò)一個(gè)全連接層輸出為64維的向量,以此提取句子的語(yǔ)義信息,記為語(yǔ)義特征向量。
圖卷積神經(jīng)網(wǎng)絡(luò):使用DGL圖神經(jīng)網(wǎng)絡(luò)框架[23],按照依存關(guān)系構(gòu)建有向圖。實(shí)驗(yàn)中GCN包含兩個(gè)卷積層,第一個(gè)卷積層的輸出維度為8;第二個(gè)卷積層的輸出即句子的句法特征向量,其維度會(huì)對(duì)結(jié)果產(chǎn)生一定的影響。我們進(jìn)行了多輪實(shí)驗(yàn),取表現(xiàn)最優(yōu)的情況:在基于ELECTRA和BERT的實(shí)驗(yàn)中,我們?nèi)≥敵鼍S度為3,在基于XLNet和Ernie的實(shí)驗(yàn)中則取為4。
分類(lèi)器:使用全連接層,其輸入為語(yǔ)義特征向量和句法特征向量拼接后的句特征向量;輸出維度為3,即分類(lèi)的總類(lèi)別數(shù)。
參數(shù)設(shè)置:使用Dropout策略,其p值設(shè)置為0.3。 使用帶Softmax的交叉熵?fù)p失函數(shù)。優(yōu)化器使用AdamW,初始學(xué)習(xí)率設(shè)置為5e-5。Batch Size設(shè)置為16。
實(shí)驗(yàn)環(huán)境:編程語(yǔ)言采用Python 3.8,深度學(xué)習(xí)框架為PyTorch 1.7。CPU為Intel 10700K,使用一塊NVIDIA RTX 3080 GPU。
我們的實(shí)驗(yàn)分為兩部分,分別是與基線(xiàn)模型的對(duì)比及特征消融實(shí)驗(yàn)。
基線(xiàn)模型對(duì)比:對(duì)于BERT、Ernie和XLNet,我們仿照SaGE的框架,但去掉了模型右側(cè)的句法處理模塊,即只在各個(gè)語(yǔ)言模型的基礎(chǔ)上堆疊一個(gè)單層單注意力頭的Transformer編碼器,并輸出為64維的向量,再通過(guò)一個(gè)全連接層完成分類(lèi)。
特征消融:目的是驗(yàn)證句法處理模塊的有效性。一方面,我們?cè)谇懊鏄?gòu)建的基線(xiàn)模型的基礎(chǔ)上增加了SaGE模型右側(cè)的句法處理模塊,分別記為BERT+syn、Ernie+syn和XLNet+syn。另一方面,去除SaGE的句法處理模塊,此時(shí)模型退化為原始的ELECTRA,也可記為SaGE-syn。
表4為所有模型的宏平均F1分?jǐn)?shù)(使用百分制)。我們提出的SaGE模型在和全部基線(xiàn)模型的對(duì)比中表現(xiàn)出色,以85.22的宏平均F1分?jǐn)?shù)超越了CCL 2018中文隱喻識(shí)別評(píng)測(cè)任務(wù)中的第一名約兩個(gè)百分點(diǎn)。此外,此時(shí)的準(zhǔn)確率(Accuracy)可以達(dá)到89.45%。同時(shí)可以看到,單純地使用XLNet、BERT和Ernie效果并不理想,甚至無(wú)法超越此前的最佳模型。這說(shuō)明在隱喻識(shí)別中充分考慮到句子的內(nèi)部結(jié)構(gòu)、利用外部資源等具有一定的現(xiàn)實(shí)意義,而這也是我們研究的出發(fā)點(diǎn)所在。
表4 基線(xiàn)模型對(duì)比
如表5所示,XLNet、BERT和Ernie等基線(xiàn)模型在結(jié)合了本文提出的句法處理模塊后,性能都有了明顯的提升,宏平均F1值分別上升了1.91、1.57和1.24個(gè)百分點(diǎn)。此外,當(dāng)去除SaGE的句法處理模塊后,模型的宏平均F1值下降了0.94個(gè)百分點(diǎn)。特征消融實(shí)驗(yàn)驗(yàn)證了句法信息對(duì)于隱喻識(shí)別的重要性,說(shuō)明我們?cè)O(shè)計(jì)的句法處理模塊是有效的。
表5 特征消融
雖然預(yù)訓(xùn)練語(yǔ)言模型改變了自然語(yǔ)言處理的研究范式,在許多任務(wù)中用戶(hù)僅需要調(diào)用接口并微調(diào)就可以取得不錯(cuò)的結(jié)果,但是語(yǔ)言本身是復(fù)雜的,它包含著語(yǔ)義、語(yǔ)音、句法和修辭等多個(gè)方面,近年來(lái)興起的多模態(tài)自然語(yǔ)言處理也正是試圖從多個(gè)層面對(duì)語(yǔ)言進(jìn)行建模。
事實(shí)上,已經(jīng)有許多研究說(shuō)明了句法結(jié)構(gòu)對(duì)于隱喻識(shí)別的重要性。Sullivan[24]從構(gòu)式語(yǔ)法的角度出發(fā),發(fā)現(xiàn)在許多情況下,特定的構(gòu)式?jīng)Q定了何種句法成分能夠充當(dāng)隱喻中的源域和目標(biāo)域。其中,動(dòng)詞往往會(huì)激活句子中的源域,目標(biāo)域則由動(dòng)詞的論元所激活。Hwang[25]對(duì)語(yǔ)言中的使役結(jié)構(gòu)(Caused Motion)進(jìn)行了研究,發(fā)現(xiàn)動(dòng)詞的補(bǔ)足語(yǔ)往往呈現(xiàn)為隱喻表達(dá)。
因此,我們選擇使用依存句法分析有以下考慮:一是依存句法分析(Dependency Parsing)相較于句法成分分析(Constituent Parsing)準(zhǔn)確率更高,能最大程度地減少上游預(yù)處理帶來(lái)的錯(cuò)誤累積;二是在依存句法分析中,動(dòng)詞居于句子的主導(dǎo)地位,既能以一種相對(duì)合理的方式將句子組織成圖結(jié)構(gòu),又能充分地考慮動(dòng)詞對(duì)句子隱喻義表達(dá)的影響。
為了進(jìn)一步觀(guān)察模型的性能,明確SaGE在處理隱喻識(shí)別任務(wù)時(shí)的缺陷,我們提取出了測(cè)試集中模型分類(lèi)錯(cuò)誤的樣本,并進(jìn)行了仔細(xì)的研究。實(shí)驗(yàn)中的偏誤大致可以分成三類(lèi),具體例子如表6所示(3)其中,標(biāo)注標(biāo)簽指數(shù)據(jù)集中標(biāo)注者人工給定的標(biāo)簽,預(yù)測(cè)標(biāo)簽則是SaGE通過(guò)運(yùn)算預(yù)測(cè)的標(biāo)簽。
表6 偏誤分析
兼類(lèi):指句子既有名詞隱喻的性質(zhì),又有動(dòng)詞隱喻的特點(diǎn),在判斷時(shí)是模棱兩可的。如句1,將“你”比作“松柏”可以視為名詞隱喻,但用來(lái)描述人的動(dòng)詞“挺立”用于“松柏”上,又構(gòu)成了動(dòng)詞隱喻。再如句2,“眼睛”無(wú)法發(fā)生“說(shuō)”的動(dòng)作,在這一層面上該句屬于動(dòng)詞隱喻句;然而,“心”又無(wú)法產(chǎn)生“話(huà)語(yǔ)”,“心的話(huà)語(yǔ)”實(shí)則指“心聲、想法”,此處又形成了名詞隱喻。這類(lèi)句子難以用某一特定的類(lèi)別進(jìn)行分類(lèi),因此,在給隱喻句進(jìn)行分類(lèi)時(shí),我們應(yīng)該制定更加詳細(xì)的標(biāo)準(zhǔn),以處理兼屬兩種隱喻句的句子。
標(biāo)注錯(cuò)誤:由于隱喻識(shí)別數(shù)據(jù)集的構(gòu)建在很大程度上依賴(lài)于人工標(biāo)注,因此可能會(huì)出現(xiàn)少量難以避免的標(biāo)注錯(cuò)誤。如句3,將“天空”比作“油畫(huà)”是很顯然的名詞隱喻句,前者是目標(biāo)域,后者是源域。再如句4,“淋濕”和“心”之間有十分明顯的語(yǔ)義沖突,應(yīng)該屬于動(dòng)詞隱喻句。我們的模型實(shí)際上在這兩個(gè)例子中給出了正確的答案。因此,在數(shù)據(jù)標(biāo)注上,我們應(yīng)進(jìn)一步明確標(biāo)注規(guī)范,尤其是要加強(qiáng)后期的人工審校。
預(yù)測(cè)錯(cuò)誤:模型本身處理不當(dāng)而造成的錯(cuò)誤。該類(lèi)錯(cuò)誤主要包括兩種。其一是某些需要背景知識(shí)的語(yǔ)言表達(dá),如句5,“浮出水面”指“身份揭曉”,此處模型由于缺少相關(guān)的知識(shí),很容易將其理解為字面意義。第二種是以比喻詞“像”“似的”和“猶如”等引導(dǎo)的隱喻句,由于該類(lèi)比喻詞較多地出現(xiàn)于名詞隱喻句中,因此在數(shù)據(jù)量上可能會(huì)給模型帶來(lái)一定的誘導(dǎo),當(dāng)出現(xiàn)如句6那種較為復(fù)雜的情況時(shí),模型會(huì)傾向于將其理解為名詞隱喻。
針對(duì)模型缺乏背景知識(shí)的問(wèn)題,我們可以進(jìn)一步在模型中融入外部知識(shí),如詞匯抽象程度、HowNet和同義詞詞林等。針對(duì)模型對(duì)比喻詞引導(dǎo)的句子處理較差的問(wèn)題,一方面要考慮樣本類(lèi)別之間的平衡性,盡可能做到每一種隱喻句的數(shù)量大體一致,對(duì)于樣本稀少的類(lèi)別,可以進(jìn)行數(shù)據(jù)增強(qiáng);另一方面,可以將規(guī)則和深度學(xué)習(xí)的方法結(jié)合起來(lái),用人工編寫(xiě)的規(guī)則來(lái)處理包括該類(lèi)隱喻句在內(nèi)的較為復(fù)雜的情況。
本文針對(duì)中文設(shè)計(jì)了一種基于句法感知圖卷積神經(jīng)網(wǎng)絡(luò)和ELECTRA的隱喻識(shí)別模型,在CCL 2018中文隱喻識(shí)別任務(wù)數(shù)據(jù)集上取得了不錯(cuò)的效果,驗(yàn)證了將句法結(jié)構(gòu)融入到隱喻識(shí)別任務(wù)中的有效性,并結(jié)合語(yǔ)言學(xué)理論給出了相應(yīng)的解釋。此外,我們對(duì)模型預(yù)測(cè)錯(cuò)誤的樣本進(jìn)行了深入分析,對(duì)隱喻識(shí)別任務(wù)中存在的幾類(lèi)問(wèn)題進(jìn)行了探討,為今后的研究者開(kāi)展相關(guān)的探索提供了新的思路。
由于時(shí)間精力有限,我們的研究尚存在諸多的不足。首先,我們從利用非線(xiàn)性結(jié)構(gòu)進(jìn)行自然語(yǔ)言處理的研究中得到啟發(fā),使用GCN對(duì)依存句法分析的結(jié)果進(jìn)行處理,但采用的網(wǎng)絡(luò)結(jié)構(gòu)較為單一。未來(lái)工作中,我們將探索其他的圖神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),如圖注意力網(wǎng)絡(luò)(Graph Attention Network, GAT)和關(guān)系圖卷積神經(jīng)網(wǎng)絡(luò)(Relational Graph Convolutional Network, R-GCN)等。其次,我們將進(jìn)一步探索隱喻識(shí)別數(shù)據(jù)集的數(shù)據(jù)增強(qiáng)方法,擴(kuò)大數(shù)據(jù)集的規(guī)模;在英文數(shù)據(jù)集中拓展我們的研究,探討中英文隱喻識(shí)別的異同。最后,嘗試將HowNet和同義詞詞林等外部知識(shí)融入到中文隱喻識(shí)別任務(wù)中來(lái),發(fā)揮語(yǔ)言學(xué)知識(shí)在自然語(yǔ)言處理中的積極作用。