林立濤,王東波,劉江峰,李 斌,馮敏萱
動物是地球生命共同體不可或缺的組成成員,與人類文明發(fā)展緊密相連[1]。我國海量古籍文獻有大量動物記載,蘊含豐富的動物知識有待挖掘。長期以來,對古籍中動物的探究主要采用文獻引證等定性研究方法,探究內(nèi)容包括動物形象[2]、動物寓言或寓意等[3-7]。古籍數(shù)字化文本的積累和自然語言處理技術的發(fā)展,特別是命名實體識別技術的進步,為深入推進古籍特定領域數(shù)字人文研究提供了有力的技術支撐。
命名實體識別是實現(xiàn)知識結構化組織的前提,也是數(shù)字人文研究的基礎工作之一,典籍數(shù)字人文研究不斷深入,已經(jīng)使得人名、地名、機構名、時間詞等通用命名實體的識別難以滿足需要。開展典籍領域化命名實體識別研究,對于深化典籍數(shù)字人文研究,挖掘古籍時代價值,深入推進中華優(yōu)秀傳統(tǒng)文化創(chuàng)造性轉(zhuǎn)化、創(chuàng)新性發(fā)展,促進新時代中國特色社會主義文化建設具有重要意義。
本研究立足典籍動物這一領域,利用SikuBERT等多種模型構建動物命名實體自動識別模型,并進行性能測試對比,使用最優(yōu)模型對《史記》動物命名實體進行識別。本研究不僅為深度挖掘和組織典籍中動物知識提供有效方法,同時對構建面向其他領域命名實體識別模型具有借鑒意義。
數(shù)字人文是信息技術與人文科學交叉、融合的研究領域[8],主要采用文本挖掘、社會網(wǎng)絡分析、統(tǒng)計計量、數(shù)據(jù)可視化等方法解決人文科學問題。公認的數(shù)字人文實踐肇始于1949年羅伯托·布薩用計算機輔助編制《托馬斯著作索引》。國內(nèi)公認最早數(shù)字人文實踐屬陳炳藻使用詞頻統(tǒng)計方法解決《紅樓夢》前80回與后40回作者之謎。數(shù)字人文正成為人文社會科學創(chuàng)新的重要方向。
命名實體識別是數(shù)字人文研究的技術支撐[9],目的是從文本中識別出有特定含義的詞語及類型。識別方法可以分為三大類,分別是基于規(guī)則的方法、基于統(tǒng)計機器學習的方法和基于深度學習的方法?;谝?guī)則的方法是指由人工構建有限的規(guī)則,輔以計算機對規(guī)則進行完善,再從文本中匹配符合規(guī)則的字符串,達到識別的目的。該類方法對構建的規(guī)則有嚴格要求,且具有較強的語料導向性,導致規(guī)則遷移性較差,逐漸被其他兩類方法取代?;诮y(tǒng)計機器學習的方法是選擇合適的機器學習模型,同時對已標注語料開展相應的特征工程[10],然后使用一部分語料對模型進行訓練,再使用訓練得到的模型對目標語料進行命名實體識別。常用的機器學習模型有隱馬爾可夫模型(HMM)[11-12]、最大熵模型(ME)[13]、支持向量機模型(SVM)[14]和條件隨機場模型(CRF)[15]?;谏疃葘W習的方法是指使用以神經(jīng)網(wǎng)絡為架構的深度學習模型,利用已標注語料對模型進行訓練并更新神經(jīng)網(wǎng)絡的參數(shù),然后應用于目標語料命名實體識別。循環(huán)神經(jīng)網(wǎng)絡模型(RNN)、門控循環(huán)單元(GRU)、長短時神經(jīng)記憶網(wǎng)絡模型(LSTM)和預訓練語言模型BERT是當前較為主流的深度學習模型。此外,還有由不同類型模型結合形成的聯(lián)合模型,如Bi-GRU、Bi-LSTM、Bi-LSTM-CRF,其相較于單一模型,識別性能又有提升。
近年來,預訓練語言模型BERT(Bidirectional Encoder Representation from Transformers)[16]成為自然語言處理的主流模型,還出現(xiàn)了多種基于BERT 發(fā)展而來的預訓練語言模型,面向漢語的主要有BERT-base-Chinese[16]、Chinese-RoBERTa-wwm-ext[17]、 Guwen-BERT-base①、SikuBERT和SikuRoBERTa[18]等5種。BERT-base-Chinese是谷歌利用中文維基百科數(shù)據(jù)訓練而成,面對中文自然語言處理任務具有較好的通用性。guwenBERT-base、SikuBERT和SikuRoBERTa等3種預訓練模型專門針對古代漢語自然語言處理任務。Guwen-BERT-base是北京理工大學基于Chinese-Ro-BERTa-wwm-ext用簡體漢字版《殆知閣》語料繼續(xù)訓練得到。SikuBERT和SikuRoBERTa是南京農(nóng)業(yè)大學分別基于BERT-base-Chinese和Chinese-RoBERTa-wwm-ext 利用文淵閣繁體字版《四庫全書》語料繼續(xù)訓練而成。已有研究表明,SikuBERT、SikuRoBERTa相較于另外3種模型在古文自動分詞、斷句標點、詞性標注和命名實體識別上具有更好性能[18]。
古籍命名實體識別模型研究不斷深入,在通用命名實體識別方面,黃水清等[19]利用先秦古漢語語料,對比分析了條件隨機場模型和最大熵模型在地名識別任務上的效果,發(fā)現(xiàn)條件隨機場模型優(yōu)于最大熵模型,并構建了調(diào)和平均值為90.94%的條件隨機場模型,將其應用于《國語》中地名的識別。杜悅等[20]基于7種深度學習模型,使用先秦典籍中的人名、地名以及時間詞進行識別模型構建研究,結果表明基于Bi-LSTMCRF模型經(jīng)訓練得到的識別模型效能最優(yōu),調(diào)和平均值達到86.59%。在動植物命名實體識別方面,崔競烽等[21]基于Bi-LSTM、Bi-LSTM-CRF等深度學習模型和BERT模型分別對中國古典詩詞中的菊花命名實體進行了識別模型構建研究,發(fā)現(xiàn)基于BERT模型的命名實體識別最優(yōu),調(diào)和平均值達到91.60%,高于其他模型。李娜[22]基于CRF 模型構建多元特征模板,對《方志物產(chǎn)》中的多種類型命名實體進了識別研究,對別名、地名、引用書的識別取得了較好的效果,但是對人名和用途名的識別表現(xiàn)不佳。徐晨飛等[23]基于Bi-RNN、Bi-LSTM、Bi-LSTM-CRF、BERT模型對《方志物產(chǎn)》中的產(chǎn)物別名、人物、產(chǎn)地、引書四種命名實體進行了識別研究,發(fā)現(xiàn)Bi-LSTM-CRF對引書命名實體的識別效果最優(yōu),而BERT對人物命名實體的識別效果最優(yōu)。
CRF 模型、Bi-LSTM-CRF 模型、基于BERT發(fā)展而來的預訓練模型在命名實體識別上具有優(yōu)勢,而SikuBERT、SikuRoBERTa相較于BERT-base-Chinese、 GuwenBERT-base、Chinese-RoBERTa-wwm-ext等3種預訓練語言模型更適用于古文領域的命名實體識別任務。本研究基于5 種BERT 發(fā)展而來預訓練模型及CRF、Bi-LSTM-CRF 模型,利用 25 部經(jīng)動物命名實體人工標注的先秦典籍語料進行訓練,構建古籍動物命名實體識別模型,并對識別性能進行測試對比,選用最優(yōu)模型對《史記》動物命名實體進行識別,研究框架見圖1。
圖1 研究框架
本研究使用的語料是由南京師范大學語言科技研究所經(jīng)人工標注和機器輔助校對構建的先秦典籍語料庫,包含《儀禮》《公羊傳》《呂氏春秋》《吳子》《周易》《周禮》《商君書》《國語》《墨子》《孫子兵法》《孝經(jīng)》《孟子》《尚書》《左傳》《莊子》《晏子春秋》《楚辭》《禮記》《管子》《老子》《荀子》《論語》《詩經(jīng)》《谷梁傳》《韓非子》等25部繁體中文古籍,所有句子已完成了分詞和詞性標注,去除標點符號后,總詞數(shù)為1,551,944個,共含116,348個句子,平均每個句子含13.34個詞?;谏鲜稣Z料數(shù)據(jù),組織5名信息管理與信息系統(tǒng)專業(yè)具有標注經(jīng)驗的本科生,對其中的動物命名實體進行標注,標注工作采用二人二組校對、一人終審討論的模式。采用“【】”為標注符號,標注后語料句子樣式如:“之/r子/n于歸/v,/w言/i秣/v其/r【駒】/n。/w”。
(1)動物命名實體分布。25部先秦典籍中動物命名實體(以下簡稱“動物詞”)總計7,912個,占全部語料總詞數(shù)的0.51%,平均每部古籍含動物詞316.48個。全部語料中不重復動物詞535個,平均每個動物詞出現(xiàn)14.79次。表1為各部古籍中動物詞的數(shù)量情況。
(2)各頻次段不重復動物詞數(shù)量。25部先秦典籍中出現(xiàn)次數(shù)10及以下的不重復動物詞達446個(占比83.36%),其中出現(xiàn)次數(shù)為1-2次的不重復動物詞達295種(占比55.14%)。出現(xiàn)次數(shù)超過100的不重復動物詞17個(占比3.18%)??傮w來看,動物詞分布整體呈現(xiàn)少量不重復動物詞高頻出現(xiàn),大量不重復動物詞低頻出現(xiàn)的特征(見表2)。
表2 按出現(xiàn)頻次段統(tǒng)計的不重復動物詞個數(shù)及占比
(3)不同字數(shù)的動物詞頻次。將某個動物詞所包含的字數(shù)定義為動物詞的長度,動物詞長度均為1 或2。長度為1 的稱單字動物詞,共257 種,總詞頻為7,165,頻次在100 次及以上的17個不重復動物詞均為單字動物詞。長度為2 的稱雙字動物詞,共計278 種,最高頻次為37,總詞頻為747。單字動物詞頻次明顯高于雙字動物詞,這與先秦典籍文言文用詞習慣有關。頻次排名前10的單字動物詞和雙字動物詞詳見表3。
表3 頻次前10的單字動物詞和雙字動物詞
本研究依據(jù)動物詞標注符“【】”,采用4詞位標記集對語料進行機器標記。標記集可表示為R={B-A,E-A,S-A,O},其中“B-A”表示動物詞的開始字符,“E-A”表示動物詞的結尾字符,“S-A”表示單字動物詞,“O”表示所有非構成動物詞的字符。完成標記后,刪除所有分詞符、詞性標記和動物詞標注符“【】”。最終輸入模型訓練用的語料格式如:“蟄B-A蟲E-A咸O動O蘇O,O開O戶O始O出O。O”。
訓練與測試使用的環(huán)境為操作系統(tǒng):CentOS 3.10;CPU:4顆Intel(R)Xeon(R)CPU E5-2650 v4@2.20GHz;內(nèi)存:256G;GPU:6塊Tesla P40;顯存:24G。訓練和測試CRF模型采用的軟件為CRF++0.58。深度學習模型Bi-LSTM-CRF 和 5 種 BERT 模型均基于 Pytoch 框架搭建。
上文分析表明,動物詞的長度均為1 或2,因而本研究構建的CRF模型的特征模板窗口大小為3,即對每個字的考察范圍固定為當前字的前后各一個字。由于BERT-base-Chinese、Chinese-RoBERTa-wwm-ext、 SikuBERT、SikuRoBERTa 和 GuwenBERT-base 的代碼均采用相同架構,因此使用相同的超參數(shù),最終模型的主要超參數(shù)設置見表4。
表4 深度學習模型的主要超參數(shù)設置
本研究采用準確率(Precision,P)、召回率(Recall,R)以及調(diào)和平均值(F1)來衡量各個模型的命名實體識別效果。計算公式如下:
訓練測試采用十折交叉策略,即將語料隨機分成大致相當?shù)?0份,依次取其中的1份留作測試語料,合并其余9份作為訓練語料。為便于對各模型測試性能的比較評析,所有不同模型進行訓練測試用的10份語料相同。每種模型將進行10次訓練和10次測試,得到10組測試結果。表1數(shù)據(jù)表明,25部古籍中動物詞分布并不均衡,為保證每一份語料中動物詞大致均衡,本研究對4詞位標記后的所有語料以句子為單位進行隨機重組。經(jīng)對各模型的10 組測試結果計算均值,結果見表5。
表5 十折交叉訓練測試結果
測試結果表明,基于SikuBERT、SikuRo-BERTa、BERT-base-Chinese 預訓練模型和CRF構建的識別模型,識別效果相對較好,調(diào)和平均值(F1)均達到80%以上。其中又以Siku-BERT為最優(yōu),其10次測試調(diào)和平均值(F1)的平均值為85.46%,其中最高一次為86.29%,具體數(shù)據(jù)見表6。
表6 SikuBERT模型的動物詞識別測試結果
將識別結果與人工標注結果進行對比,各模型表現(xiàn)出不同的識別性能??傮w而言,模型識別性能受到語料特征、各模型算法原理和預訓練語言模型的領域特征強度影響。在語料特征方面,兩個原因可能影響所有模型的測試識別效果。一是動物詞人工標注質(zhì)量。標注人員的文言文閱讀理解能力水平參差,可能導致動物詞漏標或誤標。二是古漢語文法的特殊性。語料中存在較多通假字和同義字(詞),還存在一詞多義現(xiàn)象,都會增加深度學習模型正確理解文本內(nèi)容的難度。例如,“騶虞”一詞具有3種含義,表示義獸、古代管理鳥獸的官或古樂曲名;“鳳凰”有時又寫作“鳳皇”;“燕”古又同“飲宴”的“宴”。在模型的算法原理方面,并非結構復雜、算力資源消耗更大的模型勢必具有更好的效果。面向特定語料時,結構簡單、算力資源消耗小的模型同樣具有良好的表現(xiàn),命名實體識別模型應針對具體領域任務做相應選擇。在預訓練語言模型的領域特征強度方面,具有較強古文領域特色且面向繁體漢語的SikuBERT模型具有明顯優(yōu)勢。
(1)CRF模型。條件隨機場(CRF)模型[24]是一種無向圖模型,其結合最大熵模型和隱馬爾可夫模型的特點,具有表達長距離依賴性和交疊性特征的能力,能較好地解決標注(分類)偏置等問題的優(yōu)點,對特征進行全局歸一化能求得最優(yōu)解。在應用于分詞、詞性標注和命名實體識別等序列標注任務時具有很好的效果。在測試實驗中,CRF模型呈現(xiàn)出相對較高的準確率,但召回率較低,綜合表現(xiàn)尚可。從具體的識別結果來看,CRF將非動物詞字符、雙字動物詞的起始字符,錯誤識別為單字動物詞的頻率是7種模型中最低的。但也過多的將雙字動物詞錯誤識別為單字動物詞,導致召回率偏低。例如輸出測試識別結果“征O鳥S-A厲O疾O。O”,把“征鳥”這個雙字動物詞識別成了單字動物詞。分析原因主要是在訓練語料中既有“鳥”這樣的單字動物詞也有“征鳥”“海鳥”“鷙鳥”這樣的雙字動物詞,而“鳥”這樣的單字動物詞頻率遠高于“海鳥”“黃鳥”“鷙鳥”這些雙字動物詞??梢姡珻RF模型對這些差別進行準確區(qū)分的能力還有些欠缺。
(2)Bi-LSTM-CRF模型。雙向長短時記憶條件隨機場(Bi-LSTM-CRF)模型是由長短時記憶網(wǎng)絡模型(LSTM,Long Short-Term Memory)[25]和條件隨機場模型(CRF)結合發(fā)展而來。單向LSTM利用上文的信息對當前位置的輸出隨機變量進行預測,雙向LSTM(Bi-LSTM)[26]在LSTM的基礎上增加了從右向左進行預測的并行層,使得模型在進行預測時可以同時考慮當前位置上文和下文的信息,有效提高模型的效果。Bi-LSTM-CRF 在Bi-LSTM 的基礎上將輸出層的softmax函數(shù)替換為CRF,利用CRF對全局范圍統(tǒng)計歸一化的條件態(tài)轉(zhuǎn)移概率的計算,提取出實體標簽之間的依賴關系[27],使得最終預測出的標簽序列滿足一定的約束規(guī)則。
在測試實驗中,Bi-LSTM-CRF模型綜合表現(xiàn)不如CRF,導致這一現(xiàn)象的可能原因是所使用的先秦典籍語料的每個句子平均詞數(shù)較少,因而Bi-LSTM-CRF模型無法發(fā)揮其捕獲較長文本的長距離依賴優(yōu)勢。同時,古文行文精煉,駢偶句多,存在許多具有固定結構的短語和詞組,這使得基于概率統(tǒng)計的CRF 模型反而比結合了Bi-LSTM的模型更加適用。Bi-LISTM-CRF常見錯誤類似CRF模型,即將雙字動物詞的后一個字識別為單字動物詞,例如輸出測試識別結果“天O龜E-A曰O靈O屬O,O地O龜E-A曰O繹O屬O,O”,把“天龜”和“地龜”這兩個雙字動物詞識別成了單字動物詞。相較于其他6 種模型,Bi-LSTM-CRF的這種錯誤頻率最高。
(3)BERT系列模型。BERT-base-Chinese在由Google構建過程中,采用了掩碼語言模型任務(MLM)和下一句預測任務(NSP),前者使得模型能夠更好地根據(jù)語境對詞匯進行預測,后者旨在讓模型更充分地學習到上下文的關系。SikuBERT在由BERT-base-Chinese 繼續(xù)訓練過程中僅保留了掩碼語言模型任務,移除了對性能提升不明顯的下一句預測任務。
在測試實驗中,SikuBERT和SikuRoBERTa分別相較于它們的基礎模型BERT-base-Chinese 和 Chinese-RoBERTa-wwm-ext 的性能,都有大幅度提升,這表明利用《四庫全書》語料進行繼續(xù)訓練取得了明顯的成效。其中SikuBERT 表現(xiàn)最優(yōu),且體現(xiàn)出較好的泛化能力,其可以結合上下文對動物詞進行正確的預測,如一次測試中輸出動物詞識別結果有:“游O環(huán)O脅O驅(qū)O,O陰O靷O鋈O續(xù)O,O文O茵O暢O轂O,O駕O我O騏B-A馵E-A。O”和“玄B-A蝯E-A失O于O潛O林O兮O,O獨 O 偏 O 棄 O 而 O 遠 O 放 O。O”,而“騏馵”“玄蝯”這兩個詞并未曾在本次訓練語料中出現(xiàn)。SikuRoBERTa 表現(xiàn)略微遜色于SikuBERT,可能是因為其基礎模型使用了全詞遮罩技術,在預訓練階段注重對詞的編碼,而SikuBERT的基礎模型則注重對字的編碼。由于漢語單字成詞的現(xiàn)象普遍,以字為承載語義基本單位的頻率較高,因而SikuBERT 訓練后具有較好的識別效果。而GuwenBERT-base是基于簡體中文語料訓練而來,其在繁體中文語料上的表現(xiàn)不佳。
本研究將基于SikuBERT構建的古籍動物詞識別模型應用于漢字繁體版數(shù)字化《史記》文本的動物詞識別,以驗證模型實用性,也為基于《史記》的動物知識挖掘提供研究材料。以《史記·司馬相如列傳》的一段話為例,動物詞識別結果輸出為:“其O獸S-A則O?O旄O貘B-A嫠E-A,O沈B-A牛E-A麈B-A麋S-A,O赤O首O圜O題O,O窮O奇O象S-A犀O”??梢娔P涂梢哉_識別出其中常見的動物詞“獸”和“象”,并且還正確識別出了“貘嫠”“沈?!钡任丛?5部先秦典籍中出現(xiàn)的詞,再一次體現(xiàn)出SikuBERT較好的泛化能力,可以結合上下文對動物詞進行正確的預測。對識別結果對照原文進行核對和統(tǒng)計計量,共識別出詞數(shù)1,864個,其中正確動物詞1,707個,識別準確率達到91.6%,共有不重復動物詞335個,動物詞長度為1-3,其中不重復單字動物詞140個,不重復雙字動物詞189個,不重復三字動物詞6個。表7列舉了頻次最高的前10個單字動物詞和雙字動物詞。從表7中可見,單字動物詞頻次顯著高于雙字動物詞頻次,最高頻次單字動物詞為“馬”,最高頻次雙字動物詞為“鳳皇(鳳凰)”。
表7 《史記》記載頻次前10的動物詞
經(jīng)對比《史記》和25 部先秦典籍動物詞,存在兩方面相似特征。一是單雙字動物詞頻次特征相似。即單字動物詞頻次顯著高于雙字動物詞。二是高頻次動物詞的種類構成相似。10個最高頻次單字動物詞有7個相同:“馬”“?!薄矮F”“羊”“龍”“魚”“鳥”。
本研究未對《史記》進行動物詞標注計量。因此,不能計算模型識別結果的召回率和調(diào)和平均值。但是《史記》與先秦典籍所使用的文字和語言表達方式十分接近,且《史記》記載的大量內(nèi)容在歷史時期上都屬先秦時期。所以,上述兩方面的相似特征可以從側面印證針對《史記》中動物詞的識別任務,該模型是有效的,其比較高的識別準確率可能與訓練用語料規(guī)模比《史記》語料規(guī)模大得多有關。同時也可以從側面印證該模型對《史記》中動物詞識別得到的結果是合理的,該結果可以作為進一步深入挖掘《史記》記載動物的種類、功用等知識的材料。
從人文角度看,《史記》動物詞頻次高低反映了動物詞所指代的動物與西漢以前人們生產(chǎn)生活聯(lián)系的密切度,本研究獲得的結果與歷代對《史記》研究積累的認識總體一致。如“馬”,最晚在商代已經(jīng)有馬[28],在戰(zhàn)國時期開始有騎兵[29]?!榜R”在古代社會中具有極其重要的影響力和地位,如《史記》中“馬”所在的句子“優(yōu)孟曰:馬者王之所愛也,以楚國堂堂之大,何求不得,而以大夫禮葬之,薄,請以人君禮葬之”,背后的故事體現(xiàn)出古人對馬的珍視程度。還有“是年,晉公子重耳過宋,襄公以傷于楚,欲得晉援,厚禮重耳以馬二十乘”“范睢歸取大車駟馬,為須賈御之,入秦相府”“今匈奴負戎馬之足,懷禽獸之心,遷徙鳥舉,難得而制也”,分別表明馬還作為外交禮品以及乘騎工具用于交通、戰(zhàn)爭,因此還出現(xiàn)“千里馬”“乘馬”“戰(zhàn)馬”“戎馬”等詞?!榜R”在古代還被剝削階級上層作為祭祀殉葬物品。與“馬”類似,“?!币彩桥c古人生產(chǎn)、生活關系密切的動物。春秋時期已經(jīng)有人用牛耕作,到戰(zhàn)國時期,開始使用鐵犁等農(nóng)具,牛耕效率明顯提升?!妒酚洝分小芭!彼诘木渥佑小凹廊找耘?,祭月以羊彘特”“牛者,耕植種萬物也”“……自天子不能具鈞駟,而將相或乘牛車,齊民無藏蓋”,分別反映牛作為祭祀用品、耕作動力、用來拉車等多種用途。
本研究利用先秦典籍動物命名實體語料庫,使用多種模型構建了多個典籍動物命名實體自動識別模型,通過對比分析,驗證了預訓練語言模型SikuBERT針對典籍中動物這一細分知識領域開展自然語言處理任務的優(yōu)勢,為典籍文獻中動物命名實體自動識別提供了有效方法。但相比數(shù)字人文研究追求準確、詳盡識別命名實體的目標還有距離。進一步提升SikuBERT模型性能的措施可以從以下方面展開:一是檢查25部古籍動物詞的標注準確性,提高標注質(zhì)量,特別是要詳盡、準確標注;二是適當擴大語料庫規(guī)模,使模型能夠在訓練過程中充分學習到更多動物詞及其上下文的特征。此外,還可嘗試構建融合CRF的SikuBERT模型,使得模型對命名實體識別結果的標簽轉(zhuǎn)移具有約束能力,或嘗試構建融入領域詞典的深度學習模型,以期取得更好的識別效果。
注釋
①訪問地址:https://github.com/Ethan-yt/guwenbert.