劉 暢,王東波,胡昊天,張逸勤,李 斌
卷帙浩繁的古籍文獻(xiàn)是人類文明中最璀璨的瑰寶之一。繼承與發(fā)揚(yáng)古籍中的優(yōu)秀文化是豐富精神文明建設(shè),提高文化軟實(shí)力的必然要求。然而,古代典籍由于時(shí)代色彩,其閱讀與推廣需要讀者具備較高的語(yǔ)言學(xué)與歷史學(xué)素養(yǎng),給初學(xué)者帶來(lái)了不低的門檻。這就要求知識(shí)提供方能夠打破學(xué)科壁壘,從多個(gè)維度對(duì)文本資源進(jìn)行全方位的展現(xiàn)。盡管我國(guó)經(jīng)過30余年的古籍?dāng)?shù)字化建設(shè),建成了一批優(yōu)質(zhì)古籍電子資源庫(kù),但長(zhǎng)期以來(lái),數(shù)字化古籍文本僅僅充當(dāng)印刷資源或影印資源的替代物,缺乏結(jié)構(gòu)化的知識(shí)組織和深度利用,大量珍貴的古籍資源仍被束之高閣。數(shù)字人文(Digital humanities)概念的提出為古籍資源的深度開發(fā)提供了思路,作為新興的交叉學(xué)科,數(shù)字人文旨在采用計(jì)算機(jī)技術(shù)對(duì)傳統(tǒng)人文學(xué)科的研究?jī)?nèi)容進(jìn)行組織與發(fā)現(xiàn),從多角度具象化深藏于文本中或僅被少數(shù)領(lǐng)域?qū)<艺莆盏碾[性知識(shí)。正如黃水清[1]所說,數(shù)字人文研究的目的在于得到領(lǐng)域?qū)<摇靶闹兴?,口中所無(wú)”的知識(shí),并將這些知識(shí)以易于理解和使用的方式加以呈現(xiàn)。
詞匯是含有完整語(yǔ)義信息,且能獨(dú)立應(yīng)用的最小語(yǔ)言單位。精準(zhǔn)有效的切分文本,是文本從非結(jié)構(gòu)化向結(jié)構(gòu)化轉(zhuǎn)變的關(guān)鍵,也是實(shí)現(xiàn)智能化文本處理的基石。在古漢語(yǔ)文本中,詞與詞之間缺少顯著的分隔,且由于詞類活用、特殊句式等語(yǔ)法現(xiàn)象的廣泛存在,分詞的困難程度大大加深。以往的古漢語(yǔ)分詞研究中,基于詞典的和基于統(tǒng)計(jì)學(xué)習(xí)的分詞方法是分詞處理的主流,這些方法通常依賴于構(gòu)建大規(guī)模的詞表與復(fù)雜的特征制定,僅適用于部分特定的古籍文本。而多變的古文題材,不同時(shí)代不同的文言寫作風(fēng)格也決定了這兩類方法不易移植。因此,使用深度學(xué)習(xí)技術(shù)自動(dòng)提取文本特征,實(shí)現(xiàn)文本的智能處理,是處理大規(guī)模古籍?dāng)?shù)據(jù)的必由之路。
本研究選取了記載先秦至三國(guó)時(shí)期歷史的最具有代表性的6 部官修史籍,充分結(jié)合外部信息,引入基于《四庫(kù)全書》全文數(shù)據(jù)預(yù)訓(xùn)練的BERT 模型和融合詞典信息的BiLSTM-CRF 和Lattice-LSTM模型,通過多項(xiàng)對(duì)比實(shí)驗(yàn)探索多種深度學(xué)習(xí)模型的分詞效果。并結(jié)合第一版《漢語(yǔ)大詞典》的全部古漢語(yǔ)詞匯構(gòu)建融合詞性特征的古文智能處理單機(jī)版軟件,為從事古籍研究的相關(guān)學(xué)科工作者提供高效易用的自動(dòng)分詞工具。
數(shù)字人文學(xué)科的研究方法與內(nèi)容靈活多變。面向不同的人文學(xué)科內(nèi)容,采用合適的計(jì)算機(jī)手段加以描述和呈現(xiàn)是數(shù)字人文研究的特征。朱本軍等[2]調(diào)查了國(guó)內(nèi)外數(shù)字人文實(shí)驗(yàn)室的研究項(xiàng)目與所開發(fā)的工具,將數(shù)字人文研究?jī)?nèi)容總結(jié)為4個(gè)層面:簡(jiǎn)化人文學(xué)科研究的工作流程以提升效率,解決傳統(tǒng)人文學(xué)科的問題,使用計(jì)算機(jī)技術(shù)從人文研究?jī)?nèi)容中發(fā)現(xiàn)并解答新問題以及對(duì)人文領(lǐng)域研究進(jìn)行創(chuàng)造性建設(shè)。在面向古籍的數(shù)字人文研究中,結(jié)合人工智能的文本挖掘方法是對(duì)古籍文獻(xiàn)進(jìn)行知識(shí)層面的組織與可視化的主要手段。國(guó)內(nèi)學(xué)者利用計(jì)算機(jī)技術(shù)對(duì)古籍資源的深度開發(fā)進(jìn)行了一系列的探索。歐陽(yáng)劍[3]結(jié)合大數(shù)據(jù)、文本處理、GIS 等技術(shù),創(chuàng)建了面向語(yǔ)言學(xué)、歷史學(xué)、地理學(xué)研究的古籍分析一體化平臺(tái)。于純良等[4]采用語(yǔ)義分析方法挖掘稷下學(xué)資料中隱含的知識(shí),設(shè)計(jì)致力于人文計(jì)算的稷下學(xué)語(yǔ)義處理框架。李海濤等[5]采用LDA主題模型對(duì)少林寺檔案進(jìn)行主題抽取,并以知識(shí)圖譜和多媒體技術(shù)進(jìn)行可視化呈現(xiàn)。王兆鵬等[6]從古代文學(xué)研究資料離散和時(shí)空分離兩大問題入手論述引入數(shù)字人文技術(shù)的必要性,并簡(jiǎn)要介紹應(yīng)用于古代文學(xué)研究中的知識(shí)抽取方案。
當(dāng)前國(guó)內(nèi)古籍?dāng)?shù)字人文研究雖然成果頗豐,但面臨的問題也十分嚴(yán)峻。一方面,古籍?dāng)?shù)字人文研究缺少統(tǒng)一的研究范式和評(píng)價(jià)標(biāo)準(zhǔn),大多數(shù)研究?jī)H僅在古籍的處理中簡(jiǎn)單的調(diào)用計(jì)算機(jī)技術(shù),缺乏導(dǎo)向性。另一方面,國(guó)內(nèi)古籍?dāng)?shù)字人文研究者缺少高效易用的古籍分析工具。古籍文本所用的語(yǔ)言是繁體的文言文或古白話文,而當(dāng)前的主流文本自動(dòng)化分析工具僅面向簡(jiǎn)體白話文的處理,難以有效識(shí)別繁體文言文中的關(guān)鍵信息,古籍隱藏知識(shí)的抽取仍需花費(fèi)大量人力,導(dǎo)致研究的大部分時(shí)間都耗費(fèi)在了信息的提取上。人工智能技術(shù)的普及雖然在一定程度上緩解了這一現(xiàn)象,但國(guó)內(nèi)許多實(shí)驗(yàn)室和個(gè)人仍面臨著算力不足,精加工數(shù)據(jù)缺乏的問題,這些都是制約數(shù)字人文研究發(fā)展的重要因素。
中文分詞是中文自然語(yǔ)言處理中的重要一環(huán),不同于英文文本,中文文本的詞與詞之間缺乏顯著的分隔標(biāo)記,而當(dāng)以字為基本單位進(jìn)行文本處理時(shí)必然割裂句子中豐富的語(yǔ)義信息。因此,高效、精確的中文分詞是計(jì)算機(jī)理解文本的基礎(chǔ)。根據(jù)技術(shù)手段的不同,筆者將當(dāng)前的中文分詞研究概括為3個(gè)層面的內(nèi)容。
(1)基于詞典的中文分詞研究。詞典法是實(shí)現(xiàn)中文分詞任務(wù)最簡(jiǎn)單高效的方法。該方法通過構(gòu)建通用的漢語(yǔ)詞典或領(lǐng)域?qū)S迷~典,按照規(guī)則匹配文本中的詞匯以完成詞語(yǔ)切分。最大匹配法是中文分詞最常用的方法,通過正向、逆向或雙向掃描輸入文本,以最長(zhǎng)匹配、加字匹配或減字匹配為策略進(jìn)行匹配。直至今日,這種簡(jiǎn)潔快速的匹配方法仍大規(guī)模應(yīng)用在通用文本和特定領(lǐng)域文本的分詞任務(wù)中。但該方法的缺點(diǎn)在于可移植性較差,需根據(jù)領(lǐng)域的不同構(gòu)建高質(zhì)量的詞典,且難以解決未登錄詞問題和切分歧義問題。部分學(xué)者對(duì)詞典法做了改進(jìn)。比如,莫建文等[7]學(xué)者結(jié)合雙字哈希結(jié)構(gòu),改進(jìn)了最大正向匹配算法,這種方法對(duì)長(zhǎng)詞切分效果具有一定提升,有效的改善了分詞精度。陳之彥等[8]提出一種可用于雙向匹配的詞典結(jié)構(gòu),并設(shè)計(jì)出與之相應(yīng)的匹配算法,以互信息處理模塊解決切分歧義問題,其切分準(zhǔn)確率超過了雙向最大匹配算法。蔡燦民等[9]設(shè)計(jì)了一種結(jié)合新詞發(fā)現(xiàn)的智能詞典解決未登錄詞問題,但使用該方法的時(shí)間成本較高。周程遠(yuǎn)等[10]提出一種基于TRIE索引樹的分層逐字二分分詞方法,并結(jié)合逆向最大匹配算法從整詞切分和逐字切分兩個(gè)層面實(shí)現(xiàn)文本的分詞,有效的解決了詞典算法分詞緩慢的問題。
(2)基于統(tǒng)計(jì)學(xué)習(xí)與深度學(xué)習(xí)的中文分詞研究。隨著計(jì)算機(jī)硬件算力的快速提升,機(jī)器學(xué)習(xí)與深度學(xué)習(xí)技術(shù)再度受到學(xué)術(shù)界與工業(yè)界的青睞,在自然語(yǔ)言處理工作中,研究者一般將中文分詞歸結(jié)為以字符為單位的序列標(biāo)注任務(wù)。采用人工智能方法解決分詞問題是當(dāng)下分詞研究的主流方法。在面向古籍文本的分詞中,石民等[11]采用條件隨機(jī)場(chǎng)模型,測(cè)試了只進(jìn)行分詞,只進(jìn)行詞性標(biāo)注,同時(shí)進(jìn)行分詞和詞性標(biāo)注3種詞匯切分策略的效果,結(jié)果表明,同時(shí)進(jìn)行分詞和詞性標(biāo)注的分詞效果最佳,其調(diào)和平均數(shù)最高可達(dá)89.65%。錢智勇等[12]基于全切分分詞法和HMM(隱馬爾科夫模型)進(jìn)行《楚辭》的分詞和詞性標(biāo)注一體化實(shí)驗(yàn),在封閉測(cè)試中分詞的調(diào)和平均值最終達(dá)97.31%。王莉軍等[13]采用BiLSTM-CRF訓(xùn)練面向中醫(yī)古籍的文本分詞模型,效果顯著優(yōu)于主流漢語(yǔ)分詞器,且具有更高的魯棒性。張琪等[14]使用BERT基于25部先秦典籍構(gòu)建分詞詞性標(biāo)注一體化模型,以此為基礎(chǔ)開發(fā)分詞平臺(tái),在未經(jīng)人工標(biāo)注的《史記》數(shù)據(jù)集上進(jìn)行了觸發(fā)詞抽取測(cè)試,取得了良好的實(shí)驗(yàn)效果。俞敬松等[15]從無(wú)監(jiān)督學(xué)習(xí)中得到啟發(fā),設(shè)計(jì)出一種結(jié)合非參數(shù)貝葉斯和BERT的組合模型,并將其應(yīng)用于古漢語(yǔ)分詞。
(3)多特征融合的中文分詞研究。盡管深度學(xué)習(xí)技術(shù)的使用有效提升了中文分詞的效率,但仍面臨著一些難以解決的問題。例如,以漢字字符為粒度的序列處理模式難以考慮詞匯的整體特征造成錯(cuò)誤切分,該問題在特定領(lǐng)域的文本分詞上尤為嚴(yán)重。讓深度學(xué)習(xí)模型結(jié)合外部信息,是解決該問題的關(guān)鍵。目前,常用的外部信息融合方法主要是預(yù)訓(xùn)練技術(shù)和詞典信息融合。Zhang 等[16]設(shè)計(jì)將詞典信息融入BiLSTM-CRF 網(wǎng)絡(luò)的方法,在9 種公開數(shù)據(jù)集上進(jìn)行效果測(cè)試,證明該模型能夠從特定領(lǐng)域的字典中獲利,但這一方法比較依賴高質(zhì)量的領(lǐng)域詞典。成于思等[17]將上述方法與遷移學(xué)習(xí)技術(shù)相結(jié)合,加入土木工程與法律領(lǐng)域?qū)S迷~典,實(shí)現(xiàn)工程法律文本的自動(dòng)分詞。Zhang等[18]設(shè)計(jì)出用于中文命名實(shí)體識(shí)別的模型Lattice-LSTM,這種模型將輸入的字符級(jí)序列和序列中潛在的包含在字典中的詞匯進(jìn)行編碼,能有效利用詞序信息,使中文實(shí)體的邊界更加清晰,該論文一舉成為融入詞典信息序列標(biāo)注的開山之作。張文靜等[19]將Lattice-LSTM的思想應(yīng)用在中文分詞任務(wù)上,以公開的多粒度的分詞數(shù)據(jù)集進(jìn)行對(duì)比實(shí)驗(yàn),在測(cè)試集中獲得最高96.39%的F值。崔丹丹等[20]將Lattice-LSTM應(yīng)用于古籍處理,將簡(jiǎn)體的《四庫(kù)全書》全文利用甲言分詞工具分詞,并使用word2vec 訓(xùn)練出古文詞向量作為模型的輸入,識(shí)別《四庫(kù)全書》中“史部”文獻(xiàn)全文中的人名、地名、機(jī)構(gòu)名、職官名4 類實(shí)體,模 型 的 F1 值比 BiLSTM-CRF 提 升3.95%,證實(shí)Lattice-LSTM 用于序列標(biāo)注任務(wù)的可行性,但目前研究暫時(shí)沒有把該方法應(yīng)用到古漢語(yǔ)分詞中。陳美等[21]基于預(yù)訓(xùn)練技術(shù),選取《新華字典》訓(xùn)練詞向量,并以BiLSTM-CRF模型加載詞向量完成《辭?!啡臄?shù)據(jù)的分詞。
綜合相關(guān)文獻(xiàn)的閱讀,目前用于中文分詞的方式多種多樣,但大都應(yīng)用于現(xiàn)代漢語(yǔ)或簡(jiǎn)體古籍文本的分詞,在古籍繁體文本的分詞探索上缺少外部信息的融入。多數(shù)研究?jī)H僅是運(yùn)用深度學(xué)習(xí)模型做了對(duì)比實(shí)驗(yàn),不能為研究典籍的數(shù)字人文學(xué)者提供通用性的文本分詞解決方案。本實(shí)驗(yàn)基于預(yù)訓(xùn)練技術(shù)和詞典信息融合方法,為古籍繁體文本的自動(dòng)分詞任務(wù)選擇合適高效的模型,解決人文學(xué)科研究者缺少自動(dòng)化古籍分詞工具的問題,助力數(shù)字人文研究。
本研究選用《左傳》《戰(zhàn)國(guó)策》《史記》《漢書》《后漢書》《三國(guó)志》6部史籍原文作為實(shí)驗(yàn)語(yǔ)料,以句子為單位完成文本切分,由語(yǔ)言學(xué)專業(yè)研究生采用人工標(biāo)注的方式進(jìn)行文本的分詞和詞性標(biāo)注。最終得到大小為18.6MB的精加工史籍語(yǔ)料,語(yǔ)料具體信息見表1。
表1 精加工史籍語(yǔ)料的基本信息
在標(biāo)注過程中,參考張穎杰等[22]提出的先秦漢語(yǔ)詞義標(biāo)注方法,在人工分詞的基礎(chǔ)上標(biāo)記共22種詞性標(biāo)簽。本研究主要注重古籍文本的自動(dòng)分詞,對(duì)詞性標(biāo)注情況不予贅述,表2主要展示了對(duì)6部史書的分詞結(jié)果。
表2 史籍語(yǔ)料的分詞結(jié)果
根據(jù)分詞詞匯的詞長(zhǎng),將詞匯劃分為單字成詞、雙字成詞、多字(三字及以上)成詞3種類型。語(yǔ)料中單字成詞的情況最多,共有83.04%詞匯(含標(biāo)點(diǎn))僅包含一個(gè)字符,雙字成詞的情況占比為14.96%。多字成詞的情況最少,占總詞數(shù)2.00%,且從詞性來(lái)看,該類詞匯多表達(dá)人物稱謂、地理位置、時(shí)間等信息,其詞性以名詞為主。分詞樣例如下:
太 祖/恱/,/謂/禁/曰/:「淯 水/之/難/,/吾/其/急/也/,/將 軍/在/亂/能/整/,/討 暴/堅(jiān)/壘/,/有/不/可/動(dòng)/之/節(jié)/,/雖/古/名將/,/何以/加/之/!/
加入詞性標(biāo)簽后的樣例如下:
太祖/nr 恱/v,/w 謂/v 禁/n 曰/v:/w 「/w 淯水/ns 之/u 難/n,/w 吾/r 其/r 急/n 也/u,/w 將軍/n 在/v亂/n能/v整/v,/w討暴/v堅(jiān)/v壘/n,/w有/v不/d可/v動(dòng)/v之/u節(jié)/n,/w雖/c古/t名將/nx,/w何以/d加/v之/r!/w
選取基于神經(jīng)網(wǎng)絡(luò)架構(gòu)的層疊式深度學(xué)習(xí)模型BiLSTM-CRF,基于雙向Transformer架構(gòu)的BERT預(yù)訓(xùn)練模型,以及使用大規(guī)模古籍?dāng)?shù)據(jù)繼續(xù)訓(xùn)練的SikuBERT 預(yù)訓(xùn)練模型作為實(shí)驗(yàn)工具。在以字為粒度的文本序列上完成分詞任務(wù),探索不同模型在古文分詞上的性能差別。
(1)融合詞典信息的BiLSTM-CRF 介紹。BiLSTM-CRF[23]是由百度研究院2015年發(fā)布的深度學(xué)習(xí)模型,該模型兼顧長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(LSTM)和條件隨機(jī)場(chǎng)(CRF)模型的優(yōu)點(diǎn),其基本結(jié)構(gòu)主要分為輸入層,雙向LSTM層和CRF層3個(gè)部分,詳見圖1。在輸入層中,模型以中文字符為單位讀入序列文本和分詞標(biāo)簽,并生成詞向量矩陣向上層傳遞。雙向LSTM 層包含了前向LSTM和后向LSTM。其中,前向LSTM層按順序讀入字向量,后向LSTM按逆序讀入字向量,分別得到正向隱狀態(tài)向量(hl0,hl1,hl2…,hli)和逆向隱狀態(tài)向量(hr0,hr1,hr2…,hri),將正向與逆向隱狀態(tài)向量進(jìn)行拼接,得到綜合句子順序與逆序特征的隱狀態(tài)向量(h0,h1,h2…,hi),從而克服LSTM只能編碼正向文本序列,無(wú)法獲取句子雙向語(yǔ)義特征的問題。模型的第三層是CRF層,該部分主要為BiLSTM層的預(yù)測(cè)值分?jǐn)?shù)提供特定約束。CRF層能夠從訓(xùn)練數(shù)據(jù)中學(xué)習(xí)標(biāo)簽的轉(zhuǎn)移概率,確保輸出序列的順序的合理性,防止模型輸出中含有不符合語(yǔ)言邏輯的標(biāo)簽組合。在本實(shí)驗(yàn)中,筆者采用Zhang等[16]①的解決方案,在神經(jīng)網(wǎng)絡(luò)中加入《漢語(yǔ)大詞典》中共計(jì)408,619個(gè)漢語(yǔ)詞匯的文本信息,構(gòu)建具有漢語(yǔ)大詞典特征的超LSTM,向主干LSTM動(dòng)態(tài)生成詞向量,用于增強(qiáng)模型在古漢語(yǔ)語(yǔ)料上的新詞發(fā)現(xiàn)能力。
圖1 BiLSTM-CRF的基本結(jié)構(gòu)
(2)Lattice-LSTM介紹。Lattice-LSTM②是一種以LSTM-CRF結(jié)構(gòu)為主干的結(jié)合詞典特征的序列的標(biāo)注模型,詳見圖2。當(dāng)前深度學(xué)習(xí)模型處理文本序列的主要思路是將定長(zhǎng)的句子切分為單個(gè)字符的集合,再?gòu)淖址蛄兄凶詣?dòng)學(xué)習(xí)語(yǔ)義關(guān)系完成模型訓(xùn)練。這一做法的好處在于可以忽略分詞錯(cuò)誤的影響,但同時(shí)也導(dǎo)致了部分語(yǔ)義信息的缺失,此現(xiàn)象在含有大量術(shù)語(yǔ)的專業(yè)領(lǐng)域(如生物、醫(yī)學(xué)等學(xué)科)的語(yǔ)料中尤為明顯。Lattice-LSTM模型創(chuàng)造性地將領(lǐng)域詞典與深度學(xué)習(xí)模型相結(jié)合,依靠word2vec訓(xùn)練的詞向量實(shí)現(xiàn)詞典功能。Lattice-LSTM在處理輸入的句子序列時(shí),先對(duì)字符級(jí)的序列進(jìn)行預(yù)處理,將單個(gè)的字符與詞典進(jìn)行匹配發(fā)現(xiàn)潛在詞匯,在此基礎(chǔ)上構(gòu)造同時(shí)包含字符和單詞序列的格子結(jié)構(gòu),詳見圖3。在模型的主干部分,原先LSTM模型的細(xì)胞(cell)結(jié)構(gòu)被用來(lái)儲(chǔ)存和處理潛在詞匯信息,每個(gè)細(xì)胞單元與原字符級(jí)序列相連,使得LSTM擁有發(fā)現(xiàn)序列中潛在詞匯的能力,從而減少了序列標(biāo)注任務(wù)中的歧義問題。在本實(shí)驗(yàn)中,筆者基于雙向最大匹配的方法用《漢語(yǔ)大詞典》中的詞匯對(duì)詞典中年代在民國(guó)以前的所有例句進(jìn)行了分詞,這些例句涵蓋詩(shī)歌、政論、散文、傳記、小說等多種文學(xué)體裁。在此基礎(chǔ)上使用word2vec算法訓(xùn)練出50維的古文詞向量和字向量,作為詞典特征加入到Lattice-LSTM結(jié)構(gòu)。
圖2 超LSTM與主干LSTM結(jié)構(gòu)[16]
圖3 Lattice-LSTM的格子結(jié)構(gòu)
(3)BERT預(yù)訓(xùn)練模型介紹。BERT預(yù)訓(xùn)練模型[24]是Google2018 年發(fā)布的基于深度雙向Transformer編碼器的預(yù)訓(xùn)練模型,通過預(yù)訓(xùn)練和微調(diào)兩個(gè)階段的任務(wù)完成不同的自然語(yǔ)言處理工作。在預(yù)訓(xùn)練階段,BERT模型創(chuàng)造性的利于近乎無(wú)限的未經(jīng)人工標(biāo)注的數(shù)據(jù),以掩碼語(yǔ)言模型(Masked Language Model)和下一句預(yù)測(cè)(Next Sentence Prediction)兩個(gè)無(wú)監(jiān)督任務(wù)更新模型底層參數(shù)。在掩碼語(yǔ)言模型任務(wù)中,BERT按一定百分比隨機(jī)遮罩句子中的詞匯,并根據(jù)上下文預(yù)測(cè)該詞。在下一句預(yù)測(cè)任務(wù)中,BERT模型成對(duì)的讀入句子,判斷兩個(gè)句子是否相鄰,以獲取句子間的語(yǔ)義關(guān)系,通過對(duì)兩個(gè)任務(wù)的損失函數(shù)優(yōu)化,實(shí)現(xiàn)模型參數(shù)調(diào)優(yōu)。而在下游任務(wù)中,只需要對(duì)上層參數(shù)進(jìn)行輕微調(diào)整,即可使模型獲得傳統(tǒng)神經(jīng)網(wǎng)絡(luò)模型需消耗更多計(jì)算資源才能達(dá)到的效果。圖4展示了BERT模型的基本結(jié)構(gòu)。
圖4 BERT模型的基本結(jié)構(gòu)
如圖4所示,在Embedding層,BERT模型對(duì)輸入的中文序列以字為單位進(jìn)行分詞,使用自帶的中文字典將字符映射為數(shù)值序列。例如,當(dāng)模型讀入“寡人之于國(guó)也”這個(gè)序列時(shí),這句話先被BERT模型按字符為單位分割,加入序列起始標(biāo)記[CLS]和終止標(biāo)記[SEP],轉(zhuǎn)換為輸入序列[[CLS],寡,人,之,于,國(guó),也,[SEP]],再自動(dòng)地結(jié)合每個(gè)字在詞表中相對(duì)應(yīng)地索引值原字符以生成詞向量,結(jié)合詞在句中位置的位置向量,以及表示句子類別的分段向量,一起求和生成一個(gè)組合向量。通過堆疊的多層雙向transformer 編碼器,把最后結(jié)果通過一個(gè)softmax層,可以獲取每一個(gè)字符對(duì)應(yīng)標(biāo)簽的最大概率,將這一系列標(biāo)簽輸出即可實(shí)現(xiàn)序列標(biāo)注。非常適合進(jìn)行文本分類與序列標(biāo)注等判別式任務(wù),是當(dāng)前NLP業(yè)界使用熱度最高的模型之一。在本實(shí)驗(yàn)中,筆者選取了HuggingFace提供的12層、768個(gè)隱藏單元、1.1億參數(shù)量、用于Pytorch 框架的BERT-base 中文預(yù)訓(xùn)練模型③,該模型已在包含維基百科數(shù)據(jù)集在內(nèi)的大量語(yǔ)料上完成了預(yù)訓(xùn)練,對(duì)于中文自然語(yǔ)言處理任務(wù)的效果提升顯著。
(4)SikuBERT 預(yù)訓(xùn)練模型介紹。SikuBERT預(yù)訓(xùn)練模型[25]④是由南京農(nóng)業(yè)大學(xué)、南京理工大學(xué)、南京師范大學(xué)聯(lián)合發(fā)布的面向古文智能處理的預(yù)訓(xùn)練模型。該模型基于掩碼語(yǔ)言模型策略,在去除注釋信息的無(wú)標(biāo)點(diǎn)繁體《四庫(kù)全書》全文上完成了對(duì)BERT和RoBERTa中文模型的二次預(yù)訓(xùn)練。除以困惑度為指標(biāo)作為判斷依據(jù)外,作者還以分詞、詞性標(biāo)注、命名實(shí)體識(shí)別和斷句四項(xiàng)NLP任務(wù)在公開的《左傳》數(shù)據(jù)集上完成了多項(xiàng)對(duì)比實(shí)驗(yàn),多組實(shí)驗(yàn)的效果均超過基線模型BERT-base 和Chinese-RoBERTa-wwm,且當(dāng)數(shù)據(jù)規(guī)模越小時(shí),SikuBERT的性能提升就更加顯著。在本實(shí)驗(yàn)中,將SikuBERT作為領(lǐng)域數(shù)據(jù)預(yù)訓(xùn)練的模型用于對(duì)比實(shí)驗(yàn)和分詞工具的開發(fā)。
通過大量預(yù)實(shí)驗(yàn),發(fā)現(xiàn)除基本超參數(shù)外,標(biāo)點(diǎn)符號(hào)的有無(wú)、訓(xùn)練數(shù)據(jù)的規(guī)模以及語(yǔ)料的語(yǔ)言特征對(duì)模型的分詞效果有著顯著影響。因此,通過更改以上因素,初步設(shè)計(jì)了4組實(shí)驗(yàn),表3介紹了實(shí)驗(yàn)中外部信息的結(jié)合方式與代碼的運(yùn)行環(huán)境。
使用Lattice-LSTM用于古籍分詞需要訓(xùn)練古文詞向量,筆者借助專用于機(jī)器學(xué)習(xí)的python工具包gensim,使用其中的word2vec模塊用于《漢語(yǔ)大詞典》分詞數(shù)據(jù)的詞向量生成。實(shí)驗(yàn)設(shè)置的參數(shù)如表4所示。
表4 word2vec方法的參數(shù)設(shè)置
使用word2vec工具,訓(xùn)練出50維的古文字向量和詞向量,以供后續(xù)實(shí)驗(yàn)使用。在實(shí)驗(yàn)中所有模型的超參數(shù)均調(diào)整至最佳狀態(tài),表5-6展示了兩類模型在最佳狀態(tài)下的主要超參數(shù)設(shè)置。
表5 LSTM類模型超參數(shù)設(shè)置
表6 BERT類模型超參數(shù)設(shè)置
將分詞語(yǔ)料以句子為單位,進(jìn)行隨機(jī)打亂,以“9∶1”的比例將處理好的語(yǔ)料劃分訓(xùn)練集、測(cè)試集與驗(yàn)證集。在語(yǔ)料中采用{B,M,E,S}標(biāo)注體系給字符加上標(biāo)簽,其中B,M,E標(biāo)簽分別代表詞首字,詞中間字和詞末尾字,S標(biāo)簽代表獨(dú)立成詞的單字。實(shí)驗(yàn)語(yǔ)料樣例見表7。
表7 實(shí)驗(yàn)語(yǔ)料樣例
采用準(zhǔn)確率P(Precision)、召回率R(Recall)和調(diào)和平均值F(F-measure)作為模型分詞效果的評(píng)測(cè)指標(biāo),3種指標(biāo)的計(jì)算方法如下:
準(zhǔn)確率和召回率分別體現(xiàn)了模型分詞的精確程度和全面程度,而調(diào)和平均值綜合兩者優(yōu)點(diǎn),避免二者差距過大的情況,能更為客觀的評(píng)價(jià)分詞結(jié)果,是實(shí)驗(yàn)中關(guān)鍵的評(píng)價(jià)指標(biāo)。
在初步實(shí)驗(yàn)中,基于原始語(yǔ)料分別測(cè)試各種模型的分詞性能,得到如表8所示的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)結(jié)果表明,在含有標(biāo)點(diǎn)符號(hào)的繁體中文語(yǔ)料上,4種深度學(xué)習(xí)模型均取得了95%以上的調(diào)和平均值,其中表現(xiàn)最佳的是BERT中文預(yù)訓(xùn)練模型,其調(diào)和平均值達(dá)到97.36%,且BERT類模型的表現(xiàn)比LSTM類模型更佳。
表8 基于原始語(yǔ)料的模型分詞效果(%)
考慮到SikuBERT模型采用了無(wú)標(biāo)點(diǎn)語(yǔ)料進(jìn)行了預(yù)訓(xùn)練,且在原始語(yǔ)料上的分詞表現(xiàn)并未超過BERT。對(duì)此,筆者提出假設(shè):標(biāo)點(diǎn)符號(hào)的存在與否對(duì)預(yù)訓(xùn)練模型的分詞性能具有顯著影響?;谠摷僭O(shè),去除了語(yǔ)料中全部的中文標(biāo)點(diǎn)符號(hào),并重新進(jìn)行模型分詞。實(shí)驗(yàn)結(jié)果如表9所示。
表9 基于無(wú)標(biāo)點(diǎn)語(yǔ)料的模型分詞效果(%)
在該組實(shí)驗(yàn)中,SikuBERT的分詞效果達(dá)到了最優(yōu),最高調(diào)和平均值達(dá)到95.18%,對(duì)此,筆者給出的解釋是SikuBERT依靠MLM的預(yù)訓(xùn)練方式屬于典型的自動(dòng)編碼器(AE),這一訓(xùn)練策略旨在對(duì)已損壞句子的重構(gòu)更新模型參數(shù),因訓(xùn)練語(yǔ)料不含標(biāo)點(diǎn),模型在計(jì)算句子被遮罩詞或計(jì)算句子概率時(shí)依賴的是不含有標(biāo)點(diǎn)的上下文,而當(dāng)模型面對(duì)下游任務(wù)時(shí),標(biāo)點(diǎn)符號(hào)實(shí)際上成為模型推測(cè)字符類別歸屬的噪聲??梢?,使用領(lǐng)域數(shù)據(jù)預(yù)訓(xùn)練的模型需要在形式相近的文本處理上方能取得更好的效果。
數(shù)字人文的研究者在處理古籍文本時(shí),面臨的多是未經(jīng)人工處理的數(shù)據(jù),精加工的標(biāo)注數(shù)據(jù)由于需要耗費(fèi)大量的人力成本,往往數(shù)量稀少且難以獲取。因此,良好深度學(xué)習(xí)模型應(yīng)當(dāng)能夠適應(yīng)低資源環(huán)境,僅需依靠少量的標(biāo)注數(shù)據(jù)就能實(shí)現(xiàn)較強(qiáng)的泛化能力?;谶@一思路,縮減了訓(xùn)練數(shù)據(jù)的規(guī)模,分別將無(wú)標(biāo)點(diǎn)的訓(xùn)練數(shù)據(jù)縮減至1/2、1/4、1/8、1/10,以探索語(yǔ)料規(guī)模對(duì)模型分詞性能的影響,模擬僅有少量標(biāo)注數(shù)據(jù)情況下的分詞效果。此實(shí)驗(yàn)以調(diào)和平均數(shù)作為分詞評(píng)價(jià)指標(biāo),表10描述了實(shí)驗(yàn)的結(jié)果。
表10 不同語(yǔ)料規(guī)模下模型分詞結(jié)果(%)
以F 值為基準(zhǔn),4 種模型的分詞性能排序?yàn)椋篖attice-LSTM<BiLSTM-CRF<BERT<SikuBERT,從分詞結(jié)果來(lái)看,LSTM 類的模型對(duì)語(yǔ)料規(guī)模變化敏感,當(dāng)語(yǔ)料減少時(shí),分詞效果的變動(dòng)幅度更大。BERT類模型在總體的分詞效果優(yōu)于LSTM類模型,且隨著語(yǔ)料規(guī)模的降低,SikuBERT與BERT模型的分詞效果的差距不斷增加。當(dāng)使用全部的訓(xùn)練數(shù)據(jù)時(shí),這一差距僅為0.25%,而當(dāng)訓(xùn)練集數(shù)據(jù)下降到1/10時(shí),該差距已經(jīng)超過了1%??梢?,SikuBERT 在訓(xùn)練語(yǔ)料較少的情況下分詞效果要顯著好于BERT 模型,該實(shí)驗(yàn)結(jié)論也與SikuBERT 模型開發(fā)者的說明相一致。
本實(shí)驗(yàn)采用的語(yǔ)料來(lái)自成書時(shí)間介于戰(zhàn)國(guó)中期至南朝劉宋時(shí)期的官修史籍,從語(yǔ)言風(fēng)格上看,成書時(shí)間最早的《左傳》和其他史籍的語(yǔ)言風(fēng)格有較大差異。文獻(xiàn)[26]對(duì)《左傳》的語(yǔ)言特色做了探討,指出《左傳》行文語(yǔ)言極度簡(jiǎn)潔凝練,作者大量使用了省略和節(jié)縮的方法,使文章難以理解。相比之下,《戰(zhàn)國(guó)策》語(yǔ)言清晰直白、富于修辭。而成書時(shí)間在漢朝及以后的史籍更是注重修辭的使用和歷史事件的詳細(xì)描寫。筆者根據(jù)這一特點(diǎn)設(shè)計(jì)了實(shí)驗(yàn)4,以《左傳》單獨(dú)作為測(cè)試集,其他5部史籍作為訓(xùn)練集進(jìn)行開放測(cè)試,以比較幾種模型面對(duì)不同分詞語(yǔ)料時(shí)的魯棒性。實(shí)驗(yàn)結(jié)果如表11所示。
表11 不同風(fēng)格語(yǔ)料下模型分詞性能對(duì)比(%)
在魯棒性測(cè)試實(shí)驗(yàn)中,兩種融合詞典信息的LSTM 模型表現(xiàn)均優(yōu)于BERT 類模型,其中Lattice-LSTM 的分詞效果最佳,其F 值達(dá)到91.67%,其特有的格子結(jié)構(gòu)能有效兼顧登錄詞與未登錄詞,這一實(shí)驗(yàn)表明詞典融合策略的有效性更多地體現(xiàn)在對(duì)陌生語(yǔ)料的新詞發(fā)現(xiàn)上。該實(shí)驗(yàn)也從側(cè)面說明并非結(jié)構(gòu)復(fù)雜、算力消耗大的模型性能一定會(huì)優(yōu)于結(jié)構(gòu)簡(jiǎn)單、算力消耗小的模型,在選擇模型時(shí)應(yīng)更多考慮具體任務(wù)的語(yǔ)料類型。
(1)在不添加任何人工特征的前提下,BERT模型在含有標(biāo)點(diǎn)語(yǔ)料上的分詞效果最佳,這體現(xiàn)了Transformer結(jié)構(gòu)和超大規(guī)模通用數(shù)據(jù)預(yù)訓(xùn)練的優(yōu)越性。
(2)使用《四庫(kù)全書》全文數(shù)據(jù)預(yù)訓(xùn)練的SikuBERT模型在所有的無(wú)標(biāo)點(diǎn)語(yǔ)料分詞任務(wù)上均取得了最優(yōu)結(jié)果,因此該模型更適合用于對(duì)未經(jīng)人工斷句的古籍原文進(jìn)行詞匯切分,當(dāng)前眾多的數(shù)字化古籍資源的本質(zhì)僅是對(duì)原本的古籍原文的錄入,并不包含標(biāo)點(diǎn)符號(hào)。而散佚民間的古籍孤本更是不包含標(biāo)點(diǎn)信息,SikuBERT模型可以比BERT更好地應(yīng)對(duì)這一情況,具有更高的應(yīng)用價(jià)值。
(3)結(jié)合領(lǐng)域知識(shí)的模型在模擬低資源環(huán)境和陌生語(yǔ)料的任務(wù)中均取得了較好的分詞效果,說明預(yù)訓(xùn)練和詞典融合的方法能夠有效提升模型在古文分詞任務(wù)中的泛化能力。BERT類模型受文本規(guī)模變化的影響比LSTM類的模型更小,而融合詞典信息的LSTM類模型對(duì)于陌生語(yǔ)料的新詞發(fā)現(xiàn)能力更強(qiáng),分詞效果比未加入詞典特征的BERT類模型更佳,該實(shí)驗(yàn)結(jié)論對(duì)于算力資源不充足的人文學(xué)科實(shí)驗(yàn)室或個(gè)人意義較大。
根據(jù)上述實(shí)驗(yàn)的結(jié)果,選取了SikuBERT模型用于古文智能處理平臺(tái)中自動(dòng)分詞功能的開發(fā)。單機(jī)版SikuBERT 典籍自動(dòng)處理平臺(tái)是基于python語(yǔ)言,使用pyQt5圖形界面編程實(shí)現(xiàn)的,當(dāng)前的1.0版本包含文本分類、自動(dòng)分詞、自動(dòng)斷句、實(shí)體識(shí)別和詞性標(biāo)注功能。這一項(xiàng)目的主旨在于減少數(shù)字人文工作者在文本處理上的人力消耗。在構(gòu)建分詞功能時(shí),利用《漢語(yǔ)大詞典》的分詞文本對(duì)SikuBERT 的訓(xùn)練集進(jìn)行了擴(kuò)充,提升模型對(duì)于非史籍文本分詞的準(zhǔn)確性。
通過對(duì)代碼的整合,完成了單句分詞,單文本文件分詞和多文件分詞3種功能,以適用于不同規(guī)模文本的處理。軟件中的分詞按鈕通過pyQt5的信號(hào)發(fā)送功能與作為槽函數(shù)的分詞函數(shù)相連接,分詞函數(shù)的參數(shù)如表12所示。
表12 分詞函數(shù)的參數(shù)和功能
在以上參數(shù)中,inputpath和outputpath用于接受用戶輸入的待處理文件路徑和處理后輸出的文件路徑,輸入文件中每個(gè)序列的長(zhǎng)度一般控制在512以下,對(duì)單個(gè)過長(zhǎng)的序列則自動(dòng)截?cái)酁槎鄠€(gè)子序列。軟件能以CPU和GPU兩種方式運(yùn)行,從而最大限度地利用計(jì)算資源。以下展示SikuBERT古文智能處理平臺(tái)的界面和分詞功能。
圖5是智能處理平臺(tái)的主界面,用戶單擊單文本模式和語(yǔ)料庫(kù)模式按鈕后即可跳轉(zhuǎn)至分詞界面。在單文本模式下,用戶需要在左側(cè)輸入繁體中文的典籍文本,單擊自動(dòng)分詞按鈕,即可在右側(cè)生成古籍文本分詞結(jié)果。圖6以《資治通鑒·魏紀(jì)》中的部分內(nèi)容為輸入句,可以看到在右側(cè)生成結(jié)果中,幾乎正確地切分了所有人名、地名、官職和時(shí)間表述,適用于對(duì)一般古籍的處理。當(dāng)用戶需要處理大規(guī)模文本時(shí),應(yīng)選擇語(yǔ)料庫(kù)模式進(jìn)入系統(tǒng),單擊瀏覽按鈕選取待處理文件夾和輸出文件夾,再點(diǎn)擊自動(dòng)分詞按鈕,即可自動(dòng)調(diào)用SikuBERT分詞模型以實(shí)現(xiàn)對(duì)批量文本的分詞,詳見圖7。
圖5 智能處理平臺(tái)主界面
圖6 單句自動(dòng)分詞處理
圖7 語(yǔ)料庫(kù)分詞功能
古漢語(yǔ)文本的精準(zhǔn)切分,是實(shí)現(xiàn)古籍?dāng)?shù)字人文研究的基礎(chǔ)性工作,本研究結(jié)合了《四庫(kù)全書》和《漢語(yǔ)大詞典》的語(yǔ)義信息,以LSTM和BERT兩類四種模型對(duì)史籍文本進(jìn)行了四組不同的分詞實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,BERT預(yù)訓(xùn)練模型適用于含有中文標(biāo)點(diǎn)的古文語(yǔ)料分詞任務(wù),而SikuBERT適用于不含中文標(biāo)點(diǎn)的古籍分詞和低資源情況下的分詞,兩種BERT模型在各自適用的數(shù)據(jù)集上分詞的調(diào)和平均數(shù)分別達(dá)到97.36%和95.18%,體現(xiàn)了預(yù)訓(xùn)練策略和模型架構(gòu)的優(yōu)勢(shì)。而當(dāng)模型面對(duì)風(fēng)格不同的陌生語(yǔ)料時(shí),結(jié)合詞典特征的 BiLSTM-CRF 和 Lattice-LSTM 則取得了更佳的實(shí)驗(yàn)效果。根據(jù)實(shí)驗(yàn)結(jié)論,本實(shí)驗(yàn)設(shè)計(jì)了調(diào)用SikuBERT 模型的分詞接口,解決數(shù)字人文研究者缺少簡(jiǎn)單易用的繁體中文分詞工具的問題。筆者認(rèn)為,本研究可以從如下方向加以改進(jìn):(1)采用多模態(tài)融合的方法,兼顧圖像信息與文本信息兩方面的內(nèi)容,對(duì)還未實(shí)現(xiàn)電子化僅存有古籍孤本或影印資源的文本進(jìn)行分詞,以擴(kuò)展研究廣度。(2)隨著知識(shí)圖譜在NLP任務(wù)中大規(guī)模使用,領(lǐng)域知識(shí)融合的方法越發(fā)新穎,后續(xù)研究可以考慮借助高質(zhì)量的領(lǐng)域知識(shí)圖譜來(lái)實(shí)現(xiàn)詞匯增強(qiáng),具體可以使用ERNIE[27]、K-BERT[28]等能夠融合知識(shí)圖譜的模型提升分詞性能。(3)綜合詞典信息融合和領(lǐng)域數(shù)據(jù)預(yù)訓(xùn)練兩種遷移先驗(yàn)知識(shí)的方法,加強(qiáng)模型在古籍語(yǔ)料上的新詞發(fā)現(xiàn)能力,可以采用SikuBERT 與 LEBERT[29]或 Lattice-BERT[30]等融合詞典信息的BERT 類模型相結(jié)合的方式實(shí)現(xiàn),獲得更強(qiáng)大的語(yǔ)言表征能力,從而更好的助力數(shù)字人文研究。
注釋
① https://github.com/fudannlp16/CWS_Dict.
② https://github.com/jiesutd/LatticeLSTM.
③ https://github.com/google-research/bert.
④ https://github.com/SIKU-BERT/SikuBERT.