張聲龍,劉 穎,馬艷軍
(1. 清華大學(xué) 人文學(xué)院,北京 100084; 2. 北京百度網(wǎng)訊科技有限公司 深度學(xué)習(xí)技術(shù)平臺部,北京 100085)
隱喻(Metaphor)是一種比喻性的語言。Lakoff和Johnson[1]的概念隱喻理論從認(rèn)知語言學(xué)的角度對隱喻現(xiàn)象進(jìn)行了深入的剖析。隱喻是通過概念映射(Conceptual Mapping)這一機制實現(xiàn)的,在隱喻機制中,一事物(源域)可以用來表示另一事物(目標(biāo)域),映射的依據(jù)則是二者之間的相似性。以句子“書是人類進(jìn)步的階梯。”為例,“階梯”在句子中是源域,“書”則是目標(biāo)域,二者之間的共同特質(zhì)是“使人進(jìn)步”,從而形成了隱喻。隱喻在日常生活中普遍存在,它不僅僅存在于自然語言之中,更與人的思維和行為密切相關(guān)。
識別句子中的隱喻對于自然語言處理來說十分重要,情感分析、機器翻譯、問答系統(tǒng)和機器閱讀理解等任務(wù)都需要模型能處理句子中的字面義和隱喻義,否則可能會影響系統(tǒng)的性能。以英文句子“It seems that he will kick the bucket soon.”為例,若機器不能識別出“kick the bucket”是“去世”的隱喻用法,翻譯的結(jié)果則會與原句的語境義大相徑庭。同時,能夠讀懂句子中的言外之意,也是機器智能的一種重要體現(xiàn)。
針對中文領(lǐng)域的隱喻識別任務(wù),本文提出了一種基于句法感知圖卷積神經(jīng)網(wǎng)絡(luò)和ELECTRA的隱喻識別模型(Syntax-aware GCN with ELECTRA,SaGE)。具體而言,模型分為語義處理模塊和句法處理模塊兩個子模塊。語義處理模塊對ELECTRA語言模型的輸出進(jìn)行處理,抽取出句子的語義信息;句法處理模塊則將句子按照依存句法分析的結(jié)果組織成一張圖,使用圖卷積神經(jīng)網(wǎng)絡(luò)(Graph Convolutional Network, GCN)抽取句子的句法信息。最終,模型將兩個子模塊的輸出進(jìn)一步進(jìn)行融合處理以完成分類。本文的貢獻(xiàn)如下:
(1) 針對中文的特點,本文考慮了字和詞兩種粒度的信息,使用ELECTRA語言模型和GCN分別對句子的語義和句法進(jìn)行表示,有效增強了模型的性能。本文模型在CCL 2018中文隱喻識別數(shù)據(jù)集上超越了此前的最佳成績,同時較BERT(Bidirectional Encoder Representations from Transformers)、Ernie(Enhanced Representation through Knowledge Integration)和XLNet等基線模型有顯著提升。特征消融實驗表明,在基線模型的基礎(chǔ)上結(jié)合SaGE的句法處理模塊,能進(jìn)一步增強語言模型處理隱喻的能力。
(2) 這項研究是將圖卷積神經(jīng)網(wǎng)絡(luò)融入中文隱喻識別任務(wù)中的首項研究。此前的研究提取出來的各項特征是相對獨立的,而SaGE將句子表示為依存圖,因此可以將不同的特征聯(lián)系起來。同時,我們在GCN的基礎(chǔ)上進(jìn)行了拓展,為節(jié)點之間的連邊賦予了特征。
(3) 從語言學(xué)角度為模型進(jìn)行了解釋分析,結(jié)合實驗結(jié)果驗證了句法結(jié)構(gòu)對于句子深層語義理解的重要作用。
如何識別句子中的隱喻一直以來都吸引著諸多學(xué)者的研究興趣。賈玉祥和俞士汶[2]利用同義詞詞林和HowNet作為詞典資源計算詞語之間的語義關(guān)聯(lián)性,識別中文的名詞隱喻句。曾華琳等人[3]基于最大熵模型提出了一種特征自動選擇方法,綜合考慮了字符、句法結(jié)構(gòu)和語義信息等不同層次的特征,該方法能在隱喻識別任務(wù)中為輸入的文本匹配最優(yōu)的特征模板。張冬瑜等人[4]使用BERT模型替代詞向量進(jìn)行語義表示,利用Transformer進(jìn)行特征提取并通過分類器進(jìn)行名詞隱喻識別。
Mao等人[5]從語言學(xué)理論出發(fā),使用靜態(tài)的GloVe詞向量表示詞的本義,使用動態(tài)調(diào)整的 ELMo詞向量表示詞的語境義,通過神經(jīng)網(wǎng)絡(luò)比較二者之間的語義差別進(jìn)一步進(jìn)行隱喻識別。Mu等人[6]認(rèn)為理解隱喻要立足于更加具體的語境,他們跳出了短語或句子層級,從更大的范圍來處理隱喻,僅使用簡單的梯度提升模型便取得了不錯的效果。Su等人[7]將隱喻識別轉(zhuǎn)化為閱讀理解問題,他們在BERT原輸入的基礎(chǔ)上,額外增加了全局語境特征、局部語境特征、問句特征和詞性特征等,增強了模型的表示能力,在2020 ACL隱喻識別任務(wù)上取得了最佳表現(xiàn)。Gong等人[8]使用RoBERTa對語言進(jìn)行向量化表示,捕捉句子的語境信息,同時結(jié)合詞匯抽象程度、詞性標(biāo)注、主題模型、 WordNet 和 VerbNet 等外部特征進(jìn)行判別,進(jìn)一步提升了模型的性能。
以上諸多研究都考慮了外部特征對于隱喻識別的作用。但是,它們抽取的特征是彼此獨立的,沒有按照句法規(guī)則將各類特征統(tǒng)一起來,忽略了句法結(jié)構(gòu)對于句子的支撐作用。此前已有許多研究者使用非線性結(jié)構(gòu)來處理文本。Tai等人[9]將LSTM拓展到了樹結(jié)構(gòu),提出了Tree-LSTM模型。作者利用句法分析的結(jié)果將句子組織成句法樹,使用Tree-LSTM進(jìn)行文本情感分析,取得了不錯的結(jié)果。Marcheggiani和Titov[10]針對LSTM結(jié)構(gòu)沒有利用句法信息的問題,在雙向LSTM層上堆疊了一個GCN層以編碼句法信息,他們的模型在語義角色標(biāo)注任務(wù)上表現(xiàn)出色。Ji等人[11]使用圖神經(jīng)網(wǎng)絡(luò)進(jìn)行依存句法分析,使得依存樹節(jié)點能夠有效表示高階信息,其方法在多個公開數(shù)據(jù)集上表現(xiàn)優(yōu)異。受到此前研究的啟發(fā),本文在提取特征時將一個句子中的詞按照依存關(guān)系連接起來,組成一張圖,在此基礎(chǔ)上使用圖卷積神經(jīng)網(wǎng)絡(luò)對句子進(jìn)行處理。
當(dāng)前主流的中文預(yù)訓(xùn)練語言模型(如BERT等)大多是基于字粒度的,它們在諸多自然語言處理任務(wù)中表現(xiàn)優(yōu)異,展現(xiàn)了強大的語義編碼能力,這對于隱喻識別任務(wù)而言是不可或缺的。另一方面,隱喻識別需要考慮某些外部句法特征,而這些句法特征往往是基于詞粒度的。為了將字粒度的語義信息和詞粒度的外部句法特征結(jié)合起來,增強模型的表示能力,我們設(shè)計了一種基于句法感知圖卷積神經(jīng)網(wǎng)絡(luò)和ELECTRA的隱喻識別模型(SaGE),其結(jié)構(gòu)如圖1所示。

圖1 SaGE模型結(jié)構(gòu)
從圖1可以看出,該模型分為兩大模塊,左側(cè)為語義處理模塊,右側(cè)為句法處理模塊。語義處理模塊中,句子s被切分為t1,t2,…,tn共n個字符,經(jīng)過ELECTRA語言模型處理后,輸出為字向量,e1,e2,…,en。 字向量再經(jīng)由Transformer編碼器進(jìn)行進(jìn)一步處理以抽取全局語境信息,輸出句子的語義特征。在句法處理模塊中,句子s被分詞器切分為w1,w2,…,wm共m個詞,并將每個詞的詞性嵌入為低維向量,記為pwi。 同時,句子可以被依存句法分析器解析成一張依存圖,若兩個詞之間存在依存關(guān)系,則為它們建立一條邊,并將每一條邊上的依存關(guān)系嵌入為低維向量,記為dej。 圖卷積神經(jīng)網(wǎng)絡(luò)會對句子的依存圖進(jìn)行處理,輸出圖的嵌入向量作為句法特征。進(jìn)一步,模型將語義特征向量和句法特征向量拼接起來并輸入到分類器中,完成分類。
ELECTRA是Google和斯坦福大學(xué)[12]于2020年提出的一種全新的預(yù)訓(xùn)練語言模型,它采用Transformer編碼器作為基礎(chǔ)組件。不同于BERT等掩碼語言模型(Masked Language Model),ELECTRA提出了一個新穎的訓(xùn)練任務(wù)。
在掩碼語言模型中,以BERT為例,模型會隨機遮蓋掉一部分詞,并通過后續(xù)的訓(xùn)練試圖還原被遮蓋的詞,這種訓(xùn)練方式存在著一定的缺陷:首先,掩碼標(biāo)記“[mask]”是人工標(biāo)注的,這在后續(xù)的下游任務(wù)中實際上并不會出現(xiàn),因此可能會造成一定的性能損失;其次,BERT只對句子中15%的詞進(jìn)行隨機處理,模型訓(xùn)練過程中只對其中15%的詞進(jìn)行了預(yù)測,沒有充分利用大規(guī)模語料的優(yōu)勢。ELECTRA訓(xùn)練思路如圖2所示。

圖2 ELECTRA訓(xùn)練思路
ELECTRA借鑒了對抗生成網(wǎng)絡(luò)(Generative Adversarial Networks, GAN)的思想,引入了判別式任務(wù)(Discriminative Task)。第一步,模型通過生成器(Generator, 通常是一個小型的掩碼語言模型)與BERT一樣對被破壞的句子進(jìn)行還原,即預(yù)測被隨機遮蓋的詞。第二步,模型通過判別器(Discriminator)對生成器輸出的句子進(jìn)行處理,判定其中的詞是原來的還是被生成器替換的。顯然,ELECTRA在訓(xùn)練過程中預(yù)測了句子中的全部詞,克服了掩碼語言模型只預(yù)測部分詞的缺點。在訓(xùn)練完成后,使用判別器處理下游任務(wù),因此,解決了實際任務(wù)中“[mask]”不出現(xiàn)的問題。實驗證明,ELECTRA在同等模型體積、數(shù)據(jù)量和算力的情況下比BERT表現(xiàn)要更為優(yōu)秀。
在我們的隱喻識別模型中,ELECTRA會對每一個輸入的句子S進(jìn)行處理,為句中每一個字生成d維的字向量。設(shè)S共包含n個字,則句子可用向量S=[t1,t2,…,tn]表示。其中,ti為句中第i個字符。ELECTRA的運算可以簡單表示為式(1)。
其中,Es為整個句子的嵌入矩陣,矩陣的每一行為句中每一個字符的字向量。利用ELECTRA強大的語義建模能力,我們能很好地表示句中的詞在當(dāng)前語境下的語義,從而在語義層面上克服隱喻識別的障礙。
Transformer編碼器來自于Google[13]發(fā)布于2017年的一項工作,它創(chuàng)造性地拋棄了此前在自然語言處理任務(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)機制,事實證明,Transformer相較于RNN和CNN等結(jié)構(gòu)有著明顯的優(yōu)勢。一方面,由于注意力機制的使用,模型可以關(guān)注更大范圍內(nèi)的語境信息,避免句子過長導(dǎo)致的網(wǎng)絡(luò)退化。另一方面,Transformer可以很方便地利用現(xiàn)有的主流設(shè)備高效并行地工作,大大提升了運算效率。如今,Transformer已經(jīng)成為BERT、XLNet和Ernie等大型預(yù)訓(xùn)練語言模型采用的基礎(chǔ)組件。
如圖3所示,本文模型中,Transformer編碼器的輸入由兩部分組成,第一部分是來自于上游 ELECTRA 語言模型產(chǎn)生的字向量,它們攜帶著豐富的語義信息;第二部分是句子中每一個字對應(yīng)的位置編碼,因為在自然語言處理任務(wù)中,考慮字符的先后順序是十分重要的。字向量和位置編碼相加,共同組成編碼器的完整輸入。在多頭注意力(Multi-Head Attention)環(huán)節(jié),編碼器會考慮每個字在句子中的上下文,計算句子中當(dāng)前字對于包括其自身在內(nèi)的所有字符的注意力,從而實現(xiàn)對整個句子的語義信息抽取,更好地建模句子的語義信息。此外,編碼器中還有殘差連接和歸一化層(Add &Norm),二者的目的都是防止網(wǎng)絡(luò)退化。

圖3 Transformer編碼器
在實驗中,我們利用Transformer編碼器對ELECTRA輸出的句嵌入矩陣Es進(jìn)行處理。其運算過程如下:
式(2)的H為句嵌入矩陣Es經(jīng)過Transformer編碼器后輸出的隱藏狀態(tài)矩陣,矩陣的每一行表示句中每一個詞的隱藏狀態(tài)。式(3)中對H取平均,壓縮為k維向量xh,其中,Mean表示取平均操作。xh再經(jīng)式(4)中的線性變換輸出為α維向量,得到xsem,即為語義特征向量。Transformer編碼器使得模型能夠?qū)㈥P(guān)注范圍擴(kuò)大至整個句子,實現(xiàn)句層級的語義信息提取,有助于發(fā)掘源域和目標(biāo)域之間的語義差異。
傳統(tǒng)的機器學(xué)習(xí)方法在歐氏數(shù)據(jù)上取得了重要的突破。文本和圖片都是屬于歐氏空間的數(shù)據(jù),其特點就是結(jié)構(gòu)十分規(guī)則。而在現(xiàn)實生活中,有許多不規(guī)則的數(shù)據(jù)結(jié)構(gòu),其中以圖結(jié)構(gòu)(Graph)最為典型。圖中每個節(jié)點周圍的結(jié)構(gòu)可能都是獨一無二的。社交網(wǎng)絡(luò)、化學(xué)分子結(jié)構(gòu)和知識圖譜等,都可以表示為圖結(jié)構(gòu)。
以樹結(jié)構(gòu)或圖結(jié)構(gòu)表示句子具有一定的合理性。一方面,句子內(nèi)部是有層次的,人類很容易察覺到句子的層次性,然而機器卻只能在單一維度上向前或向后看,不符合人對語言的理解方式。另一方面,圖神經(jīng)網(wǎng)絡(luò)可以靈活編碼不同的語言特征,若圖中的每一個節(jié)點表示一個詞,每一條邊表示詞與詞之間的關(guān)系,則節(jié)點可以嵌入如詞義、詞性和實體信息等不同方面的知識;圖中的邊則可以嵌入依存關(guān)系(Dependency)、句法成分結(jié)構(gòu)(Constituent)等不同的關(guān)系,對語言進(jìn)行更加準(zhǔn)確和豐富的特征表示。自然語言中的句子可以根據(jù)句法規(guī)則組織成樹形結(jié)構(gòu),而樹形結(jié)構(gòu)本質(zhì)上是一種特殊的圖結(jié)構(gòu)。因此,將句子組織成一張圖,是一種自然的想法。
以句子“他像風(fēng)一樣奔跑。”為例,該句子可以被句法分析器解析為如圖4所示的依存關(guān)系圖,每個詞都是依存圖中的一個節(jié)點,其中“Root”為虛擬的頭節(jié)點,從“Root”開始逐次給每個詞編號。我們按照依存邊的指向為節(jié)點添加邊,最終構(gòu)成一張完整的圖。此外,我們將詞的詞性標(biāo)注嵌入為低維向量,作為節(jié)點特征;若節(jié)點與節(jié)點之間存在一條邊,則將邊上的依存關(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é)點可以發(fā)出消息,也可以通過節(jié)點之間的連邊接收其鄰居發(fā)出的消息。我們基于MPNN構(gòu)建空域圖卷積神經(jīng)網(wǎng)絡(luò),以便對有向圖進(jìn)行處理。


簡單來說,在每一次卷積操作時,節(jié)點i都會對其所有的鄰居傳遞過來的消息進(jìn)行處理,并以此為依據(jù)更新自己的值。第一次卷積時,節(jié)點可以接收到鄰居的消息,第二次卷積時則可以接收到鄰居的鄰居的消息,因為此時的鄰居在上一次卷積時同樣也接收到了來自它的鄰居的消息。從而,經(jīng)過多次卷積之后,節(jié)點可以接收到與自己距離較遠(yuǎn)的信息。
回到句子層級。設(shè)輸入GCN的句子為S,句中共有m個詞,GCN第l+1層輸出的詞的隱藏狀態(tài)為β維。則S經(jīng)過第l+1層后可用式(6)表示。



本實驗采用大連理工大學(xué)于CCL 2018中文隱喻識別與情感分析任務(wù)中發(fā)布的中文隱喻識別數(shù)據(jù)集(1)https://github.com/DUTIR-Emotion-Group/CCL2018-Chinese-Metaphor-Analysis。該數(shù)據(jù)集分為訓(xùn)練集與測試集兩部分,其概況如表1所示(2)注:其中句長均以字符為單位進(jìn)行統(tǒng)計。。

表1 數(shù)據(jù)集概況
數(shù)據(jù)集一共包含三類樣本,即動詞隱喻句、名詞隱喻句和非隱喻句。我們可以從語義沖突的觀點來理解不同類型的隱喻,它是隱喻產(chǎn)生的基本條件。語義沖突也稱為語義偏離,指在語言意義組合中違反語義選擇限制或常理的現(xiàn)象[15]。
我們根據(jù)句子的句法特征,以表2為例對動詞隱喻句、名詞隱喻句和非隱喻句三類句子進(jìn)行詳細(xì)說明[16]。

表2 隱喻句分類
名詞隱喻指的是由名詞構(gòu)成的隱喻。句1中的源域是“暖爐”,目標(biāo)域是“被窩”;句2中的源域是“銀河”, 目標(biāo)域是“水面”。兩個句子中作為源域和目標(biāo)域的兩個名詞屬于不同范疇,描述的是不同的實體,因此產(chǎn)生了語義上的沖突,形成了名詞隱喻句。
動詞隱喻指的是話語中使用的動詞與邏輯上的主語或賓語構(gòu)成語義沖突所形成的隱喻。句3中動詞“點燃”一般用于可燃物,而非抽象的概念“熱情”;句4中動詞“重創(chuàng)”多用于人或動物,此處用于無生命的“城市”。兩個句子中的動詞促使聽者從沖突的語義出發(fā)去感知其引申義,由此構(gòu)成了動詞隱喻句。
所謂非隱喻句,指的是句中的詞語沒有產(chǎn)生語義沖突,未觸發(fā)隱喻機制。句5和句6皆為非隱喻句。
數(shù)據(jù)集中三類樣本的分布情況如表3所示。
我們的實驗本質(zhì)上是一個針對句子的三分類任務(wù)。依照CCL 2018的評測標(biāo)準(zhǔn),我們同樣采用宏平均F1值(macro-F1)作為實驗的評價標(biāo)準(zhǔn)。宏平均首先對每一個類i的預(yù)測結(jié)果計算精確率(P)、召回率(R)以及F值,然后對所有類的F值求算術(shù)平均值,如式(9)、式(10)所示。
在實驗中,本文選取了經(jīng)典的語言模型BERT[17]、Ernie[18]和XLNet[19]作為基線模型(Baseline)以驗證本文方法的有效性。其中,BERT采用Google發(fā)布的原版BERT-base-Chinese,Ernie使用百度公司發(fā)布的Ernie 1.0,XLNet和本文模型中使用的ELECTRA采用哈工大發(fā)布的開源預(yù)訓(xùn)練語言模型XLNet-base和ELECTRA-discriminator-base[20]。
此外,我們也選擇了在CCL 2018中文隱喻識別評測任務(wù)中排名前三名的隊伍(分別記為CCL 2018 top 1, CCL 2018 top 2 和CCL 2018 top 3)作為參照[21]。 由于評測任務(wù)中各個隊伍使用的方法已不可考,我們無法進(jìn)行模型上的詳細(xì)說明,故僅從實驗結(jié)果上驗證本文方法的有效性。
數(shù)據(jù)預(yù)處理: 使用哈工大發(fā)布的LTP 4.0工具[22]對數(shù)據(jù)集中的全部句子進(jìn)行詞性標(biāo)注和依存句法分析。進(jìn)一步,將每個詞的詞性嵌入為8維向量,詞與詞之間的依存關(guān)系也嵌入為8維向量。
ELECTRA:使用ELECTRA模型的判別器作為語言模型對句子進(jìn)行向量化表示,句中每一個字均表示為768維的向量。
Transformer編碼器:僅使用一個編碼器層和一個注意力頭。編碼器對上游傳遞過來的ELECTRA字向量進(jìn)行處理,對句子的全部字向量取平均,然后通過一個全連接層輸出為64維的向量,以此提取句子的語義信息,記為語義特征向量。
圖卷積神經(jīng)網(wǎng)絡(luò):使用DGL圖神經(jīng)網(wǎng)絡(luò)框架[23],按照依存關(guān)系構(gòu)建有向圖。實驗中GCN包含兩個卷積層,第一個卷積層的輸出維度為8;第二個卷積層的輸出即句子的句法特征向量,其維度會對結(jié)果產(chǎn)生一定的影響。我們進(jìn)行了多輪實驗,取表現(xiàn)最優(yōu)的情況:在基于ELECTRA和BERT的實驗中,我們?nèi)≥敵鼍S度為3,在基于XLNet和Ernie的實驗中則取為4。
分類器:使用全連接層,其輸入為語義特征向量和句法特征向量拼接后的句特征向量;輸出維度為3,即分類的總類別數(shù)。
參數(shù)設(shè)置:使用Dropout策略,其p值設(shè)置為0.3。 使用帶Softmax的交叉熵?fù)p失函數(shù)。優(yōu)化器使用AdamW,初始學(xué)習(xí)率設(shè)置為5e-5。Batch Size設(shè)置為16。
實驗環(huán)境:編程語言采用Python 3.8,深度學(xué)習(xí)框架為PyTorch 1.7。CPU為Intel 10700K,使用一塊NVIDIA RTX 3080 GPU。
我們的實驗分為兩部分,分別是與基線模型的對比及特征消融實驗。
基線模型對比:對于BERT、Ernie和XLNet,我們仿照SaGE的框架,但去掉了模型右側(cè)的句法處理模塊,即只在各個語言模型的基礎(chǔ)上堆疊一個單層單注意力頭的Transformer編碼器,并輸出為64維的向量,再通過一個全連接層完成分類。
特征消融:目的是驗證句法處理模塊的有效性。一方面,我們在前面構(gòu)建的基線模型的基礎(chǔ)上增加了SaGE模型右側(cè)的句法處理模塊,分別記為BERT+syn、Ernie+syn和XLNet+syn。另一方面,去除SaGE的句法處理模塊,此時模型退化為原始的ELECTRA,也可記為SaGE-syn。
表4為所有模型的宏平均F1分?jǐn)?shù)(使用百分制)。我們提出的SaGE模型在和全部基線模型的對比中表現(xiàn)出色,以85.22的宏平均F1分?jǐn)?shù)超越了CCL 2018中文隱喻識別評測任務(wù)中的第一名約兩個百分點。此外,此時的準(zhǔn)確率(Accuracy)可以達(dá)到89.45%。同時可以看到,單純地使用XLNet、BERT和Ernie效果并不理想,甚至無法超越此前的最佳模型。這說明在隱喻識別中充分考慮到句子的內(nèi)部結(jié)構(gòu)、利用外部資源等具有一定的現(xiàn)實意義,而這也是我們研究的出發(fā)點所在。

表4 基線模型對比
如表5所示,XLNet、BERT和Ernie等基線模型在結(jié)合了本文提出的句法處理模塊后,性能都有了明顯的提升,宏平均F1值分別上升了1.91、1.57和1.24個百分點。此外,當(dāng)去除SaGE的句法處理模塊后,模型的宏平均F1值下降了0.94個百分點。特征消融實驗驗證了句法信息對于隱喻識別的重要性,說明我們設(shè)計的句法處理模塊是有效的。

表5 特征消融
雖然預(yù)訓(xùn)練語言模型改變了自然語言處理的研究范式,在許多任務(wù)中用戶僅需要調(diào)用接口并微調(diào)就可以取得不錯的結(jié)果,但是語言本身是復(fù)雜的,它包含著語義、語音、句法和修辭等多個方面,近年來興起的多模態(tài)自然語言處理也正是試圖從多個層面對語言進(jìn)行建模。
事實上,已經(jīng)有許多研究說明了句法結(jié)構(gòu)對于隱喻識別的重要性。Sullivan[24]從構(gòu)式語法的角度出發(fā),發(fā)現(xiàn)在許多情況下,特定的構(gòu)式?jīng)Q定了何種句法成分能夠充當(dāng)隱喻中的源域和目標(biāo)域。其中,動詞往往會激活句子中的源域,目標(biāo)域則由動詞的論元所激活。Hwang[25]對語言中的使役結(jié)構(gòu)(Caused Motion)進(jìn)行了研究,發(fā)現(xiàn)動詞的補足語往往呈現(xiàn)為隱喻表達(dá)。
因此,我們選擇使用依存句法分析有以下考慮:一是依存句法分析(Dependency Parsing)相較于句法成分分析(Constituent Parsing)準(zhǔn)確率更高,能最大程度地減少上游預(yù)處理帶來的錯誤累積;二是在依存句法分析中,動詞居于句子的主導(dǎo)地位,既能以一種相對合理的方式將句子組織成圖結(jié)構(gòu),又能充分地考慮動詞對句子隱喻義表達(dá)的影響。
為了進(jìn)一步觀察模型的性能,明確SaGE在處理隱喻識別任務(wù)時的缺陷,我們提取出了測試集中模型分類錯誤的樣本,并進(jìn)行了仔細(xì)的研究。實驗中的偏誤大致可以分成三類,具體例子如表6所示(3)其中,標(biāo)注標(biāo)簽指數(shù)據(jù)集中標(biāo)注者人工給定的標(biāo)簽,預(yù)測標(biāo)簽則是SaGE通過運算預(yù)測的標(biāo)簽。

表6 偏誤分析
兼類:指句子既有名詞隱喻的性質(zhì),又有動詞隱喻的特點,在判斷時是模棱兩可的。如句1,將“你”比作“松柏”可以視為名詞隱喻,但用來描述人的動詞“挺立”用于“松柏”上,又構(gòu)成了動詞隱喻。再如句2,“眼睛”無法發(fā)生“說”的動作,在這一層面上該句屬于動詞隱喻句;然而,“心”又無法產(chǎn)生“話語”,“心的話語”實則指“心聲、想法”,此處又形成了名詞隱喻。這類句子難以用某一特定的類別進(jìn)行分類,因此,在給隱喻句進(jìn)行分類時,我們應(yīng)該制定更加詳細(xì)的標(biāo)準(zhǔn),以處理兼屬兩種隱喻句的句子。
標(biāo)注錯誤:由于隱喻識別數(shù)據(jù)集的構(gòu)建在很大程度上依賴于人工標(biāo)注,因此可能會出現(xiàn)少量難以避免的標(biāo)注錯誤。如句3,將“天空”比作“油畫”是很顯然的名詞隱喻句,前者是目標(biāo)域,后者是源域。再如句4,“淋濕”和“心”之間有十分明顯的語義沖突,應(yīng)該屬于動詞隱喻句。我們的模型實際上在這兩個例子中給出了正確的答案。因此,在數(shù)據(jù)標(biāo)注上,我們應(yīng)進(jìn)一步明確標(biāo)注規(guī)范,尤其是要加強后期的人工審校。
預(yù)測錯誤:模型本身處理不當(dāng)而造成的錯誤。該類錯誤主要包括兩種。其一是某些需要背景知識的語言表達(dá),如句5,“浮出水面”指“身份揭曉”,此處模型由于缺少相關(guān)的知識,很容易將其理解為字面意義。第二種是以比喻詞“像”“似的”和“猶如”等引導(dǎo)的隱喻句,由于該類比喻詞較多地出現(xiàn)于名詞隱喻句中,因此在數(shù)據(jù)量上可能會給模型帶來一定的誘導(dǎo),當(dāng)出現(xiàn)如句6那種較為復(fù)雜的情況時,模型會傾向于將其理解為名詞隱喻。
針對模型缺乏背景知識的問題,我們可以進(jìn)一步在模型中融入外部知識,如詞匯抽象程度、HowNet和同義詞詞林等。針對模型對比喻詞引導(dǎo)的句子處理較差的問題,一方面要考慮樣本類別之間的平衡性,盡可能做到每一種隱喻句的數(shù)量大體一致,對于樣本稀少的類別,可以進(jìn)行數(shù)據(jù)增強;另一方面,可以將規(guī)則和深度學(xué)習(xí)的方法結(jié)合起來,用人工編寫的規(guī)則來處理包括該類隱喻句在內(nèi)的較為復(fù)雜的情況。
本文針對中文設(shè)計了一種基于句法感知圖卷積神經(jīng)網(wǎng)絡(luò)和ELECTRA的隱喻識別模型,在CCL 2018中文隱喻識別任務(wù)數(shù)據(jù)集上取得了不錯的效果,驗證了將句法結(jié)構(gòu)融入到隱喻識別任務(wù)中的有效性,并結(jié)合語言學(xué)理論給出了相應(yīng)的解釋。此外,我們對模型預(yù)測錯誤的樣本進(jìn)行了深入分析,對隱喻識別任務(wù)中存在的幾類問題進(jìn)行了探討,為今后的研究者開展相關(guān)的探索提供了新的思路。
由于時間精力有限,我們的研究尚存在諸多的不足。首先,我們從利用非線性結(jié)構(gòu)進(jìn)行自然語言處理的研究中得到啟發(fā),使用GCN對依存句法分析的結(jié)果進(jìn)行處理,但采用的網(wǎng)絡(luò)結(jié)構(gòu)較為單一。未來工作中,我們將探索其他的圖神經(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ù)據(jù)集的數(shù)據(jù)增強方法,擴(kuò)大數(shù)據(jù)集的規(guī)模;在英文數(shù)據(jù)集中拓展我們的研究,探討中英文隱喻識別的異同。最后,嘗試將HowNet和同義詞詞林等外部知識融入到中文隱喻識別任務(wù)中來,發(fā)揮語言學(xué)知識在自然語言處理中的積極作用。