竇宇宸 胡 勇
(四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 成都 610065)
(douyuchen_jl@163.com)
隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,我國的互聯(lián)網(wǎng)規(guī)模迅速增長,“上網(wǎng)沖浪”已經(jīng)成為我們?nèi)粘I钪蝎@取信息的重要方式,但其中海量數(shù)據(jù)也帶來了不少“信息重復(fù)”及“信息冗雜”等問題,抽取句子中的重要信息并準(zhǔn)確定位公眾關(guān)注的事件信息則尤為重要.在我們?nèi)粘=佑|到的新聞、網(wǎng)頁、微博、公眾號(hào)及常見新聞等獲取渠道中,每一篇文章甚至每一個(gè)句子都可能包含巨大的信息量,由于中文語義的復(fù)雜性及句子用詞的隨意性,使用人工方法區(qū)分關(guān)鍵信息工作量巨大.命名實(shí)體識(shí)別(name entity recognition,NER)正是解決這個(gè)問題的有效自動(dòng)化方法之一.NER指從1段自然語言文本中找出特定類型的實(shí)體(如人名、組織名稱、地點(diǎn)、時(shí)間及行為等),并標(biāo)注其位置,是信息檢索及關(guān)系抽取等工作的基礎(chǔ).前期研究人員經(jīng)常使用的統(tǒng)計(jì)模型有隱馬爾科夫模型(HMM)、支持向量機(jī)(SVM)、最大熵模型(ME)及條件隨機(jī)場(CRF)等,這類方法通常是將實(shí)體識(shí)別任務(wù)轉(zhuǎn)換為從文本輸入到特定目標(biāo)結(jié)構(gòu)的預(yù)測,使用如上的統(tǒng)計(jì)模型來構(gòu)造輸入與輸出的關(guān)聯(lián),并使用機(jī)器學(xué)習(xí)方法來學(xué)習(xí)模型的參數(shù).但是這些方法均需要人工提取特征,不僅會(huì)導(dǎo)致研究人員在標(biāo)注文本時(shí)承受龐大的工作量,也會(huì)使得提取的特征易丟失文本本身的情感信息,實(shí)體識(shí)別的效果欠佳.與傳統(tǒng)的機(jī)器學(xué)習(xí)識(shí)別方法相比,針對文本信息中語義不明確且上下文關(guān)聯(lián)不明晰的情況,命名實(shí)體識(shí)別的方案逐漸從需要大量人工提取特征的統(tǒng)計(jì)概率模型逐步轉(zhuǎn)向深度學(xué)習(xí)領(lǐng)域,深度神經(jīng)網(wǎng)絡(luò)可以自動(dòng)地從數(shù)據(jù)中提取有用的特征,將其應(yīng)用于非結(jié)構(gòu)化、模式多變的數(shù)據(jù)中具有顯著優(yōu)勢,并可以更好地解決文本特征稀疏等問題.
在中文命名實(shí)體識(shí)別領(lǐng)域,2005年,向曉雯等人[1]采用隱馬爾科夫模型進(jìn)行詞性標(biāo)注,還對上下文相關(guān)的命名實(shí)體識(shí)別作了初步嘗試.2011年,龔凌暉[2]針對現(xiàn)代漢語文本的特點(diǎn),以人名、地名及組織名為核心內(nèi)容的中文命名實(shí)體識(shí)別問題,基于LSA(潛在語義分析)實(shí)現(xiàn)對命名實(shí)體的歧義消解,實(shí)現(xiàn)了一個(gè)基于CRF的中文命名識(shí)別系統(tǒng),驗(yàn)證了用算法建立一個(gè)有效實(shí)體庫的可行性.2016年,朱丹浩等人[3]針對中文機(jī)構(gòu)名結(jié)構(gòu)復(fù)雜、罕見詞多及識(shí)別難度大問題,采用RNN重新定義了機(jī)構(gòu)名標(biāo)注的輸入與輸出,在識(shí)別機(jī)構(gòu)名實(shí)體的F1值上有一定的提升.2018年,李麗雙等人[4]采用CNN-BiLSTM-CRF的模型,利用CNN訓(xùn)練單詞形態(tài)特征的字向量,再組合語義向量輸入至BiLSTM層,該模型應(yīng)用在生物醫(yī)學(xué)語料上取得了較好的結(jié)果.2019年,黃煒等人[5]使用BiLSTM網(wǎng)絡(luò)完成語句的上下文關(guān)聯(lián)語義分析后,接入CRF層添加約束的方法應(yīng)用在涉恐信息實(shí)體識(shí)別領(lǐng)域,有效獲取涉恐人員恐怖主義機(jī)構(gòu)及暴恐實(shí)施地點(diǎn)等重要信息.2021年,范曉霞等人[6]設(shè)計(jì)了一個(gè)針對暗網(wǎng)市場文本的命名實(shí)體識(shí)別系統(tǒng),使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行字符向量化以學(xué)習(xí)單詞形態(tài)特征,將雙向長短時(shí)記憶神經(jīng)網(wǎng)絡(luò)應(yīng)用于暗網(wǎng)市場文本的命名實(shí)體識(shí)別,并采用CRF模型實(shí)現(xiàn)序列標(biāo)簽之間的約束性,目前該系統(tǒng)在暗網(wǎng)市場文本命名實(shí)體識(shí)別領(lǐng)域內(nèi)效果較佳,準(zhǔn)確率達(dá)到98.59%.
上述方法中字向量為使用已經(jīng)被大量語料訓(xùn)練完成的詞嵌入(word embedding).詞嵌入是自然語言處理領(lǐng)域早期的預(yù)訓(xùn)練技術(shù),Bengio等人[7]提出了神經(jīng)網(wǎng)絡(luò)語言模型.Mikolov等人[8]對神經(jīng)網(wǎng)絡(luò)語言模型優(yōu)化,提出Word2Vec,并提出2種語言模型——連續(xù)詞袋模型(CBOW)和Skip-gram模型.Word2Vec能捕捉詞語之間的相似性,可根據(jù)上下文預(yù)測中間的詞匯,但沒有考慮單詞的詞序問題.Pennington等人[9]提出Glove詞向量,可獲取全局信息,更容易并行化,與Word2Vec相比,在數(shù)據(jù)集較大時(shí),Glove可更快地進(jìn)行訓(xùn)練.
上述詞向量可以在一定程度上提高模型準(zhǔn)確率,但不同語境下的詞向量相同,無法解決一詞多義問題[10].同一個(gè)字或詞語在1個(gè)句子中的語義不同,例如句子“你這著真絕,讓他干著急,又無法著手應(yīng)付,心里老是懸著.”4個(gè)“著”字在客觀上表達(dá)的是不同的詞意,但在Word2Vec,Glove等字向量表示方法中,4個(gè)“著”的字向量表示完全一致,這與我們正常理解這句話的含義不同.所以準(zhǔn)確地描述當(dāng)前詞在上下文中的含義對于文本中提取字或詞的向量十分重要.由于BERT預(yù)訓(xùn)練模型采用雙向Transformer 編碼器對上下文信息都進(jìn)行了提取,融合左右2側(cè)的語境,得到一個(gè)深度雙向Transformer. BERT對單詞及上下文關(guān)系作了充分描述,能有效實(shí)現(xiàn)多義詞的消歧.所以本文選擇使用BERT預(yù)訓(xùn)練模型替代傳統(tǒng)的詞嵌入方法,接入BiLSTM以解決一詞多義的問題.楊飄等人[11]針對字多義性,使用BERT-BiGRU-CRF融合模型在MSRA語料中作的命名實(shí)體識(shí)別的效果好于目前最優(yōu)的Lattice-LSTM模型.
為解決公共安全事件的命名實(shí)體識(shí)別問題,本文使用已被大規(guī)模中文語料訓(xùn)練完成的BERT模型作為雙向長短時(shí)記憶網(wǎng)絡(luò)的輸入,獲取漢字的語義向量表示,確保在識(shí)別標(biāo)注的任務(wù)中的字向量具有多義性.在雙向長短時(shí)記憶網(wǎng)絡(luò)后接入CRF層,從而實(shí)現(xiàn)了對公共安全事件命名實(shí)體的自動(dòng)識(shí)別.實(shí)驗(yàn)表明,該方法能夠取得較好的效果,可以在一定程度上解決公共安全事件領(lǐng)域命名實(shí)體識(shí)別問題.
本文將公共安全事件的文本輸入至BERT預(yù)訓(xùn)練語言模型,獲取每個(gè)字的向量表示.將字向量序列輸入BiLSTM層用以提取特征,最后通過CRF層選擇概率最大的標(biāo)注輸出為各字的標(biāo)簽,即將BiLSTM層原本的Softmax層替換為CRF層.本文中使用的BERT-BiLSTM-CRF模型整體結(jié)構(gòu)如圖1所示,模型包含以下4個(gè)部分:預(yù)訓(xùn)練層、BiLSTM網(wǎng)絡(luò)層、特征提取層及CRF層.
圖1 BERT-BiLSTM-CRF模型結(jié)構(gòu)圖
在NER研究中的模型大多采用已預(yù)訓(xùn)練好的Word2Vec,Glove等獲取文本的詞嵌入向量表示,未使用預(yù)訓(xùn)練模型,在其研究上也能夠達(dá)到不差的效果.用稀疏向量表示文本,即所謂的詞袋模型在NLP有著悠久的歷史.正如上文中介紹的,早在 2001年就開始使用密集向量表示詞或詞嵌入.Mikolov等人[8]在2013年提出的創(chuàng)新技術(shù)是通過去除隱藏層,逼近目標(biāo),進(jìn)而使這些單詞嵌入的訓(xùn)練更加高效.雖然這些技術(shù)更新本質(zhì)上很簡單,但它們與高效的Word2Vec配合使用,才能使大規(guī)模的詞嵌入訓(xùn)練成為可能.但是使用這些詞向量忽略了詞的上下文關(guān)系,在不同場景下詞的向量表示是相同的,缺乏消歧能力.本文使用基于BERT預(yù)訓(xùn)練模型,采用BERT官方的大規(guī)模中文語料訓(xùn)練模型,可包含大多數(shù)的詞匯與場景,竭力解決一詞多義問題.
從BERT的結(jié)構(gòu)層面來看,它和GPT,ELMo一樣都采用Transformer的結(jié)構(gòu),相對于GPT來說,BERT是具有雙向Transformer的模型結(jié)構(gòu),BERT的模型結(jié)構(gòu)如圖2所示.BERT在預(yù)訓(xùn)練過程中提出了掩碼語言模型與下一條句子預(yù)測,作用分別是作上下文預(yù)測與學(xué)習(xí)語料中數(shù)據(jù)的相關(guān)性.
圖2 BERT模型結(jié)構(gòu)圖
在掩碼語言模型任務(wù)中,BERT會(huì)隨機(jī)選擇1個(gè)句子中15%的詞,用它們的上下文來作預(yù)測用以訓(xùn)練,而不是像CBOW一樣將每個(gè)詞都預(yù)測1遍,最終的loss只計(jì)算被[MASK]的15%的詞.在隨機(jī)[MASK]時(shí)將10%的單詞替換為其他單詞,10%的單詞不作替換,剩余80%被替換為[MASK].
在下一條句子預(yù)測任務(wù)的目的是讓模型理解2個(gè)句子之間的聯(lián)系,例如句子A與句子B,B有一半的概率是A的下一句,輸入這2個(gè)句子來預(yù)測B是不是A的下一句.
BERT模型的輸入為3個(gè)向量,分別為詞向量、分段向量及位置向量.詞向量指當(dāng)前詞的詞向量表示,第1個(gè)單詞是[CLS]標(biāo)識(shí);分段向量是表示當(dāng)前詞所在句子的位置向量.位置向量是表示當(dāng)前詞屬于哪個(gè)句子.樣例如圖3所示.在BERT模型中的輸入可以為單一的句子或是句子對,實(shí)際輸入是這些向量之和.將以上向量之和輸入到12層的雙向Transformer網(wǎng)絡(luò)中,最后一層Transformer結(jié)構(gòu)得到的即為BERT層輸出.
圖3 BERT輸入向量表示
自RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))提出以來,被大量運(yùn)用于NER等領(lǐng)域,具有記憶的能力,但由于RNN存在梯度消失或梯度爆炸的問題,在處理長序列的數(shù)據(jù)方面很困難,研究人員對RNN作出了一些改進(jìn),得到了RNN的另一種形態(tài),它可以捕捉長期依賴關(guān)系,即LSTM. LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示,由于它長時(shí)間的記憶能力,在自然語言處理和語音識(shí)別等領(lǐng)域應(yīng)用廣泛.
圖4 LSTM神經(jīng)元結(jié)構(gòu)圖
LSTM模型的計(jì)算過程如下:
ft=σ(Wfhht-1+Wfxxt+bf),
(1)
it=σ(Wihht-1+Wixxt+bi),
(2)
ot=σ(Wohht-1+Woxxt+bo),
(3)
ct=ittanh(Wchht-1+Wcxxt+bc)+ftct-1,
(4)
ht=ottanh(ct),
(5)
其中,對于時(shí)刻t,ht-1,xt分別表示隱層狀態(tài)及輸入詞;W表示LSTM的權(quán)重矩陣;b表示偏置;ft,it,ot分別表示LSTM的遺忘門、輸入門、輸出門,σ表示激勵(lì)函數(shù)Sigmoid,tanh表示雙曲正切函數(shù).
單向LSTM由于按文本序列輸入,無法編碼從后到前的信息,只能處理上文的信息而忽略了下文信息.繼而研究人員又提出了BiLSTM模型(如圖5所示),也就是雙向LSTM結(jié)構(gòu),對每一個(gè)訓(xùn)練序列分別訓(xùn)練一個(gè)向前LSTM和向后的LSTM網(wǎng)絡(luò).這種網(wǎng)絡(luò)的結(jié)構(gòu)可以將前后LSTM的輸出拼接成一個(gè)完整的序列,從而提供每一個(gè)序列點(diǎn)完整的上下文信息.
圖5 BiLSTM模型結(jié)構(gòu)圖
CRF是給定1組輸入隨機(jī)變量條件下另一組輸出隨機(jī)變量的條件概率分布模型,其特點(diǎn)是假設(shè)輸出隨機(jī)變量構(gòu)成馬爾科夫隨機(jī)場.廣義CRF的定義是:滿足P(Yv|X,Yω,ω≠v)=P(Yv|X,Yω,ω~v).線性鏈條件隨機(jī)場(其結(jié)構(gòu)如圖6所示)可以用于標(biāo)注問題.此時(shí)在條件概率模型P(Y|X)中,Y是輸出變量,表示標(biāo)記序列,也可稱為狀態(tài)序列;X是輸入變量,表示需要標(biāo)注的觀測序列.在模型學(xué)習(xí)時(shí),對訓(xùn)練數(shù)據(jù)集進(jìn)行正則化的極大似然估計(jì)得到條件概率模型;在預(yù)測時(shí),對給定的輸入地址序列,求出條件概率最大的地址標(biāo)注序列[12].
圖6 CRF鏈?zhǔn)浇Y(jié)構(gòu)圖
本文采用Tensorflow作為深度學(xué)習(xí)框架,數(shù)據(jù)集預(yù)處理使用Java實(shí)現(xiàn).實(shí)驗(yàn)運(yùn)行環(huán)境為Windows終端,在Windows 10 教育版64 b的操作系統(tǒng)下完成該實(shí)驗(yàn),內(nèi)存大小為16 GB,處理器型號(hào)為Intel Core i7,GPU顯卡是GTX 1060,顯存為5 GB.
本文采用的數(shù)據(jù)集是中文突發(fā)事件語料庫[13](Chinese emergency corpus, CEC)由上海大學(xué)(語義智能實(shí)驗(yàn)室)所構(gòu)建,他們從互聯(lián)網(wǎng)上收集了5類突發(fā)事件的新聞報(bào)道作為生語料,然后再對生語料進(jìn)行文本預(yù)處理、文本分析、事件標(biāo)注以及一致性檢查等處理,最后將標(biāo)注結(jié)果保存到語料庫中,CEC合計(jì)332篇.CEC 采用了XML語言作為標(biāo)注格式,其中包含了6個(gè)重要的標(biāo)記:Event,Denoter,Time,Location,Participant,Object,CEC語料庫的規(guī)模雖然偏小,但是對事件和事件要素的標(biāo)注卻最為全面.
本文使用該數(shù)據(jù)集標(biāo)記的Denoter,Time,Location,Participant作為本文的主要標(biāo)記,記為ACT,TIME,LOC,PER,分別表示行為、時(shí)間、地點(diǎn)及參與者.數(shù)據(jù)的統(tǒng)計(jì)信息及標(biāo)記的數(shù)量等如表1所示.數(shù)據(jù)標(biāo)注示例如表2所示.
表1 數(shù)據(jù)集分布
表2 數(shù)據(jù)標(biāo)注示例
本實(shí)驗(yàn)分為4個(gè)部分,分別為數(shù)據(jù)預(yù)處理、數(shù)據(jù)預(yù)訓(xùn)練、輸入BiLSTM層和輸入CRF層,一共332篇文章,本文將數(shù)據(jù)集按7∶2∶1的比例隨機(jī)劃分,分別為訓(xùn)練集、測試集和驗(yàn)證集.
2.3.1 數(shù)據(jù)預(yù)處理
本文的數(shù)據(jù)集采用BIO序列標(biāo)注法,即將每個(gè)元素標(biāo)注為“B-XXX”,“I-XXX”,“O”,其中,“B-XXX”表示此元素所在的標(biāo)注序列中屬于XXX類型并且是這個(gè)標(biāo)注序列的開頭,“I-XXX”則表示此元素所在的標(biāo)注序列中屬于XXX類型并且在這個(gè)序列標(biāo)注的中間部分.由于CEC語料庫使用XML語言進(jìn)行標(biāo)記,獲取其 Denoter,Time,Location,Participant標(biāo)簽作為序列標(biāo)注的特征,分別提取為ACT,TIME,LOC,PER.由于該語料庫已經(jīng)被預(yù)處理過1次,不需要再進(jìn)行停用詞去除等操作.
2.3.2 數(shù)據(jù)預(yù)訓(xùn)練
本文使用Google大規(guī)模中文語料訓(xùn)練好的模型[14],調(diào)整運(yùn)行batch_size并設(shè)置為16,將該模型載入BERT,再將BERT作為入口,輸入作為預(yù)處理的訓(xùn)練集、測試集及驗(yàn)證集.
2.3.3 BiLSTM層
將預(yù)訓(xùn)練層輸出的每個(gè)字的字向量輸入BiLSTM層,提取文本特征.
2.3.4 CRF層
將BiLSTM層提取的特征的輸出放入CRF層,經(jīng)過序列標(biāo)注后得到最終結(jié)果.實(shí)驗(yàn)具體參數(shù)見表3所示:
表3 超參數(shù)設(shè)置
2.4.1 評價(jià)標(biāo)準(zhǔn)
本文采用常用的NER評價(jià)指標(biāo)[15]來衡量實(shí)驗(yàn)結(jié)果:精確率P(precision)、召回率R(recall)和F1(F-measure)值.
(6)
(7)
(8)
2.4.2 實(shí)驗(yàn)結(jié)果及分析
為了證明本文方法的有效性,實(shí)驗(yàn)首先要證明BERT預(yù)訓(xùn)練模型是否能夠消歧并解決一詞多義的問題,本文使用BERT與其他2種常用的詞嵌入模型作對比實(shí)驗(yàn).目前常用Glove與Word2Vec獲取預(yù)訓(xùn)練詞向量,故分別使用Word2Vec和Glove與本模型對比,以獲取詞向量.將通過上述3種方法獲取的詞向量再輸入到BiLSTM-CRF中進(jìn)行實(shí)驗(yàn),測試集實(shí)驗(yàn)結(jié)果如表4所示:
表4 不同預(yù)訓(xùn)練模型性能
從表4看出,常用的Word2Vec與Glove模型分別得到了0.691,0.703的F1值,不難看出這2種模型由于欠缺語義上下文的相關(guān)性分析,對于任務(wù)作業(yè)沒有明顯的提升.而本文使用的BERT模型在作業(yè)中的F1值達(dá)到了0.859,證明了具有消歧作用的BERT模型在該任務(wù)上具有更好的性能,克服了傳統(tǒng)的一詞多義問題.
其次,為了證明本文使用融合模型的性能,對CRF,BiLSTM,BiLSTM-CRF,BERT-BiLSTM-CRF這4種方法的總體精確率、召回率及F1值作對比,如表5所示:
表5 模型整體序列標(biāo)注性能
從表5可知,上述4種方法得到的F1值分別為0.659,0.703,0.763,0.859.其中,本文使用的BERT-BiLSTM-CRF模型的3個(gè)指標(biāo)均最高,其次為常用的BiLSTM-CRF方法,各方面性能與本文方法相差10%,說明了預(yù)訓(xùn)練模型BERT消歧的有效性.CRF與BiLSTM方法相差5%左右,說明BiLSTM在處理文本關(guān)系上的性能優(yōu)于CRF模型.最終,可以得出結(jié)論:本文使用的BERT-BiLSTM-CRF模型在對公共安全事件命名實(shí)體識(shí)別整體性能優(yōu)于其他3種方法.
最后選取本文模型與其中表現(xiàn)較好的BiLSTM-CRF模型對公共安全事件各個(gè)序列標(biāo)注的F1值作細(xì)化對比,結(jié)果如表6所示:
表6 BERT-BiLSTM-CRF與BiLSTM-CRF模型LOC標(biāo)簽F1值對比
從表6可看出,2種模型都對LOC(位置)標(biāo)簽的序列標(biāo)注的誤差相對其他標(biāo)簽較大,本文也通過多次實(shí)驗(yàn)得出每次訓(xùn)練得到的LOC標(biāo)簽的F1值均高于75%,本文模型在LOC識(shí)別的方面遠(yuǎn)高于另一模型.在PER(參與者)的標(biāo)注序列中,顯然本文使用的模型優(yōu)于另一模型,高于其13%左右,歸因于BiLSTM-CRF所使用的詞嵌入模型缺少上下文分析,未能解決一詞多義的問題.在ACT(行為)和TIME(時(shí)間)標(biāo)簽的序列標(biāo)注中,上述模型均表現(xiàn)較好,F(xiàn)1值均達(dá)到80%以上.
基于上述對比實(shí)驗(yàn)可知,本文使用的BERT-BiLSTM-CRF模型可獲得更優(yōu)的效果.在BiLSTM-CRF模型標(biāo)注的基礎(chǔ)之上,使用BERT預(yù)訓(xùn)練模型提取特征向量,對多義詞進(jìn)行消歧,解決相同字詞在安全事件領(lǐng)域的歧義問題,效果優(yōu)于其他神經(jīng)網(wǎng)絡(luò)模型及機(jī)器學(xué)習(xí)方法.
本文對公共安全事件文本中的命名實(shí)體進(jìn)行研究,針對公安全事件文本冗雜的特性及中文字詞的多義性,在原有研究的基礎(chǔ)上進(jìn)行改進(jìn).在經(jīng)過BiLSTM-CRF模型標(biāo)注的基礎(chǔ)上,加入BERT預(yù)訓(xùn)練模型,提高了實(shí)體識(shí)別的效果.使用BERT預(yù)訓(xùn)練模型獲取詞向量,解決了一詞多義的問題,使用BiLSTM模型解決了特定領(lǐng)域嚴(yán)重依賴人工特征的問題.經(jīng)過對比實(shí)驗(yàn)表明,本文模型具有較好的準(zhǔn)確性,與其他模型相比有提升,F(xiàn)1值達(dá)到85%以上.由于實(shí)驗(yàn)的數(shù)據(jù)集規(guī)模較小,接下來將在增加語料的基礎(chǔ)上對方法繼續(xù)優(yōu)化,進(jìn)一步找出安全事件領(lǐng)域中命名實(shí)體之間的關(guān)系,并創(chuàng)建能被輿情分析或應(yīng)急響應(yīng)系統(tǒng)使用的安全事件序列標(biāo)注的數(shù)據(jù)集是下一步要研究的重點(diǎn).