蔣 瀚
(中石化安全工程研究院有限公司,山東青島 266104)
自然語言處理(NLP)是計算機科學(xué)領(lǐng)域與人工智能領(lǐng)域的重要研究方向之一,主要圍繞計算機與人之間使用人類語言進行有效通信的理論和方法展開研究[1],可實現(xiàn)對文檔數(shù)據(jù)的深度挖掘和高效利用[2,3]。分詞庫作為自然語言分析處理技術(shù)的基礎(chǔ),其設(shè)計的合理性將影響整個分詞系統(tǒng)的性能[4]。其中,專業(yè)分詞庫涵蓋了該專業(yè)領(lǐng)域的專有名詞詞匯、詞性、定義、同義詞等信息,以其對專業(yè)領(lǐng)域較強的適應(yīng)性,能夠?qū)崿F(xiàn)檢索概念在數(shù)據(jù)庫中最大限度的匹配,為專業(yè)領(lǐng)域文本挖掘與分析、行業(yè)領(lǐng)域知識圖譜的建設(shè)[5,6]提供重要的大數(shù)據(jù)資源。
目前,醫(yī)學(xué)、電氣等領(lǐng)域已有專業(yè)分詞庫構(gòu)建的研究[7,8],主要通過對現(xiàn)有專業(yè)數(shù)據(jù)庫進行字段篩選與組合實現(xiàn),而針對?;钒踩I(lǐng)域的分詞庫研究尚無有效文獻(xiàn)支撐。因此,需要從以下角度開展研究:①對所收集到的非結(jié)構(gòu)化文本數(shù)據(jù)進行統(tǒng)一的預(yù)處理,從而提高分詞準(zhǔn)確率;②危化品安全專業(yè)術(shù)語具有多樣性,例如組織機構(gòu)全稱和簡稱、化學(xué)品學(xué)名和俗名等,亟需針對性地設(shè)計詞條結(jié)構(gòu);③設(shè)計合理的索引方式對詞條進行組織,以適應(yīng)現(xiàn)有詞匯含義的變化及新專業(yè)詞匯的加入[7],同時提高詞條在專業(yè)領(lǐng)域內(nèi)開展分析的針對性。
基于上述分析,以危化品領(lǐng)域文本資料為基礎(chǔ),采用結(jié)合機器學(xué)習(xí)分詞結(jié)果與人工判讀的方法進行新詞提取,開展分詞庫詞條和詞表構(gòu)建,研究詞表、字?jǐn)?shù)、詞條三級樹狀結(jié)構(gòu)的索引與編碼方法,為面向危化品安全領(lǐng)域的自然語言處理技術(shù)奠定基礎(chǔ)。
作為專業(yè)詞庫的來源,文本數(shù)據(jù)采集的廣泛性、全面性至關(guān)重要。?;穼I(yè)的文本數(shù)據(jù)主要有兩個來源:
a) 從?;奉I(lǐng)域相關(guān)信息系統(tǒng)中獲取的文本數(shù)據(jù),經(jīng)收集整理、爬蟲程序爬取互聯(lián)網(wǎng)資源、文本批量去重及人工篩查4個處理環(huán)節(jié),形成了結(jié)構(gòu)化的字典表信息,能夠直接作為詞條加入到詞庫中,構(gòu)成詞庫的基礎(chǔ)。
b) 從?;菲髽I(yè)登記信息、?;肥鹿收{(diào)查報告/事故詳情等資源中獲取非結(jié)構(gòu)化的文檔數(shù)據(jù),需要通過文本預(yù)處理以挖掘?qū)I(yè)詞匯。對文本的預(yù)處理包括以下步驟:①將收集到的PDF、doc以及docx文檔統(tǒng)一轉(zhuǎn)換為UTF-8編碼的文本文檔,以便于計算機程序識別和分析;②去除文本長度小于所設(shè)置閾值的文檔;③去除標(biāo)點符號與“了”、“之”、“也”等漢語中沒有實際含義的停用詞,以達(dá)到減少噪聲的效果。
傳統(tǒng)的人工構(gòu)建詞庫方法工作量大、主觀性強,而單純采用計算機算法則難以保證詞庫的專業(yè)性和可靠性[9],因此采取以機器學(xué)習(xí)算法為主進行文本分詞、輔以人工篩選的方式進行?;穼I(yè)語料提取。
專業(yè)詞匯的獲取流程主要有2種。
a) 直接從其他系統(tǒng)的結(jié)構(gòu)化表單數(shù)據(jù)中提取?;钒踩嚓P(guān)專業(yè)詞匯,如職業(yè)病、機械傷害、高空墜物等。所獲取的專業(yè)詞匯經(jīng)添加詞性項、初始化詞頻項后,可直接構(gòu)成詞條。
b) 應(yīng)用THULAC[10]等預(yù)訓(xùn)練分詞算法,將預(yù)處理后的文檔數(shù)據(jù)進行分詞,產(chǎn)生分詞詞匯,再由人工篩選出?;废嚓P(guān)專業(yè)詞匯加入詞庫中。為減少分詞詞匯與已有專業(yè)詞匯的重復(fù)錄入,可將已有的專業(yè)詞匯作為用戶附加詞典加入分詞工具中輔助分詞。
詞庫的架構(gòu)設(shè)計主要包括詞條分類方法與組織形式的制定、各詞表及對應(yīng)詞條索引模式研發(fā)、詞庫中詞表調(diào)用機制的開發(fā)3方面內(nèi)容。通過建立領(lǐng)域覆蓋完善、分類方式合理、索引效率較高、調(diào)用邏輯正確的詞庫,能夠有針對性的組合詞表形成自定義詞典用于文本分析,提升靈活性及基礎(chǔ)數(shù)據(jù)的價值。
詞庫主要由詞表與詞條構(gòu)成,結(jié)構(gòu)如圖1所示。詞表將詞庫劃分為代表不同實體含義的若干類別。詞表由若干詞條構(gòu)成,并以其所包含的詞條的實體含義命名。
圖1 專業(yè)詞庫的結(jié)構(gòu)
詞條為詞庫的最小數(shù)據(jù)單元,包括專業(yè)詞、同義詞、詞性和詞頻4個屬性。其中,專業(yè)詞項即與危化品安全相關(guān)的詞匯本身,同義詞項包括專業(yè)詞的簡稱及同義詞匯,詞頻項統(tǒng)計基于本專業(yè)詞庫開發(fā)的自然語言處理應(yīng)用所識別的詞匯出現(xiàn)次數(shù),詞性項為根據(jù)專業(yè)詞的特點劃分的詞類。
將收集的詞條按其在?;钒踩I(lǐng)域中所具有的實體含義進行分類。專業(yè)詞庫包含的詞表為固定裝置名稱、機關(guān)處室全/簡稱、化工企業(yè)板塊、人員公職、員工名稱、中國行政區(qū)劃、組織機構(gòu)全/簡稱、事故類型等31類。
對形成的詞表進行編號,然后對各個詞表中的專業(yè)詞匯按字?jǐn)?shù)進行排序,形成詞庫標(biāo)識樹如圖2所示。標(biāo)識樹的根結(jié)點不參與特征向量的構(gòu)成,可任意定義。詞庫中所有的詞表作為標(biāo)識樹的第一層節(jié)點,詞匯的字?jǐn)?shù)作為標(biāo)識樹的第二層節(jié)點,所有詞匯作為葉子節(jié)點。
圖2 詞庫標(biāo)識樹
詞庫的特征向量索引由詞庫標(biāo)識樹得來。由標(biāo)識樹可構(gòu)建詞庫的特征向量矩陣W,記為:
W=k*(k+m*n+m)
(1)
式中:k——詞庫中全部詞條的數(shù)量;
m——詞庫中詞表的數(shù)量;
n——詞庫中最長詞匯的字?jǐn)?shù)。
構(gòu)建詞條特征向量的策略為,對于某葉子節(jié)點,逐層向上搜索至根節(jié)點,將該葉子節(jié)點與經(jīng)過的非葉子節(jié)點在向量對應(yīng)列的值均寫為1,其余列的值全部寫為0,即可構(gòu)成該詞條的特征向量。按同樣的方式,可將詞庫中所有詞條的特征向量求出。將求得的特征向量堆積,每個詞條的特征向量占一行,即可構(gòu)成詞庫的特征向量矩陣W。
由于詞條數(shù)量龐大,通過上述方法生成的特征向量維數(shù)(行*列數(shù))很高,因此需要建立壓縮與還原機制加快存取過程。對于特征向量為Aw(m1,m2,m3…)的詞條w,壓縮后詞條的索引值Iw(n1,n2,n3)可由公式(2)得出:
(2)
例如,對于特征向量為M的詞條a,由根節(jié)點出發(fā)搜索至a所經(jīng)過的節(jié)點均已在a的特征向量中寫為1,其余值均為0,如表1所示。詞條a的索引值的含義則為,從左開始特征向量中所有非0數(shù)值的數(shù)位,使用公式(2)可求得Ia為(1,2,5)。反之,根據(jù)索引值的含義,可快速還原出詞條的特征向量。
表1 詞條a的特征向量M
根據(jù)建立的詞庫標(biāo)識樹,可以生成各個專業(yè)詞條的特征向量,如圖3所示。依據(jù)特征向量矩陣及計算公式,可以計算出詞條的索引值分別為:爆炸(6,8,9),著火(6,8,10),泄漏(6,8,11),高空墜物(6,13,14),交通事故(6,13,15),自然災(zāi)害(6,13,16),非計劃停工(6,17,18)。
圖3 專業(yè)詞條的特征向量
jieba是一個中文分詞工具,其整體工作流程為:首先,將原始詞典與用戶自定義詞典結(jié)合,生成Trie樹,同時將每個詞的出現(xiàn)次數(shù)轉(zhuǎn)換為頻率[11]。Trie樹是一種前綴樹結(jié)構(gòu),根據(jù)詞語中漢字出現(xiàn)的順序進行索引,其優(yōu)勢是檢索速度較快。其次,將待分詞的句子置于Trie樹中查詢,生成所有可能的句子切分,并采用有向無環(huán)圖(DAG)記錄句子中詞語的開始位置和所有可能的結(jié)束位置。再次,確定句子中切分出的詞語的出現(xiàn)頻率,對于詞典中已有記錄的詞語,則采用詞典中最小的頻率值作為該詞的頻率。最后,采用動態(tài)規(guī)劃,對句子從右往左反向計算最大概率得到最大概率路徑,從而得到最大概率的切分組合。
對于未記錄在詞典中的詞,采用基于漢字成詞能力的隱馬爾科夫(HMM)模型[12]進行新詞發(fā)現(xiàn)。HMM屬于生成模型的有向概率圖模型,通過聯(lián)合概率建模:
(3)
式中:t——當(dāng)前時刻;
S——狀態(tài)序列;
O——觀測序列。
HMM的解碼問題為:
(4)
(5)
則用于HMM解碼問題的Viterbi算法遞推式為:
(6)
jieba分詞模型將每一個字表示為B/M/E/S,分別代表出現(xiàn)在詞頭、詞中、詞尾以及單字成詞。將B/M/E/S作為HMM的隱藏狀態(tài),連續(xù)的各個單字作為觀測狀態(tài),其任務(wù)即為利用觀測狀態(tài)預(yù)測隱藏狀態(tài),采用Viterbi算法對HMM模型進行求解。
Viterbi動態(tài)規(guī)劃算法的基本思想是,如果最佳路徑經(jīng)過點ε,則起始點到ε的路徑一定是最佳路徑[13]。假設(shè)從起始點到結(jié)束點經(jīng)過n個時刻,整個過程可以劃分為k個狀態(tài),則最佳路徑一定經(jīng)過起始點到時刻n中k個狀態(tài)最短路徑的點。則t時刻隱藏狀態(tài)i所有可能的狀態(tài)轉(zhuǎn)移路徑i1到i2的狀態(tài)最大值為:
δt(i)=maxxi1,i2,…,it-1
P(it=i1,i2,…,it-1,ot,ot-1,…,o1|(A,B,π))
(7)
式中:A——HMM的轉(zhuǎn)移概率矩陣;
B——HMM的觀測概率矩陣;
π——HMM的初始狀態(tài)概率向量。
根據(jù)公式(7)可由初始時刻依次向后計算出每一個時刻的最大概率隱藏狀態(tài),進而得到使最終時刻聯(lián)合概率最大的路徑。
結(jié)合來源于信息系統(tǒng)的結(jié)構(gòu)化文本數(shù)據(jù)及專業(yè)文檔的非結(jié)構(gòu)化文本數(shù)據(jù)兩方面數(shù)據(jù),危化品專業(yè)分詞庫總計收錄161 262個?;钒踩珜I(yè)詞匯,根據(jù)其實體含義被分為31個詞表。詞庫詞表的統(tǒng)計明細(xì)如表2所示。
表2 詞庫詞匯數(shù)量統(tǒng)計明細(xì)
基于目前形成的專業(yè)分詞庫,抽取其中的組織機構(gòu)全/簡稱、危險化學(xué)品目錄、事故簡報等詞條組合形成用戶自定義詞典,導(dǎo)入jieba模型對預(yù)留的驗證集數(shù)據(jù)進行分詞。在未加入專業(yè)分詞庫時,如聚氯乙烯、氯乙烯氣柜、危險化學(xué)品、危險化學(xué)品重大危險源、企業(yè)名稱等詞匯均無法被正確切分。在加入專業(yè)分詞庫后,除部分復(fù)合型詞匯,例如危險化學(xué)品重大危險源等,其他專業(yè)詞匯均可被正確切分。可知,專業(yè)詞庫的加入能夠有效提升專業(yè)領(lǐng)域文本的分詞效果。
為進一步評估文本分詞效果,建立定量評估指標(biāo)包括準(zhǔn)確率P、召回率R和F值。其中,P為算法正確識別的詞數(shù)與分詞得到的總詞數(shù)的比值,R為算法正確識別的詞數(shù)與實際詞數(shù)的比值,F(xiàn)值為準(zhǔn)確率和召回率的調(diào)和平均值,其計算公式如下:
(8)
假設(shè)人工分詞的結(jié)果完全正確,將未使用專業(yè)詞庫的分詞結(jié)果、導(dǎo)入專業(yè)詞庫的分詞結(jié)果分別與人工分詞的結(jié)果相比較,引入混淆矩陣分別計算準(zhǔn)確率P、召回率R及F值,分詞效果的評估結(jié)果如表3所示。與未加入專業(yè)詞庫的分詞結(jié)果相比,導(dǎo)入專業(yè)詞庫能夠使得分詞的準(zhǔn)確率P提升23%,召回率R提升33.9%,F(xiàn)值提升29%。
表3 分詞結(jié)果的混淆矩陣評估結(jié)果
通過整理獲取大量的?;肺谋緮?shù)據(jù)庫,采用基于機器學(xué)習(xí)分詞結(jié)果與人工篩選整理相結(jié)合的方式提取專業(yè)語料,設(shè)計?;钒踩I(lǐng)域?qū)I(yè)詞庫的架構(gòu)、內(nèi)容和組織方式,形成了收錄31個詞表約16萬詞的專業(yè)分詞庫,同時構(gòu)建了?;钒踩I(lǐng)域?qū)I(yè)詞庫的詞向量計算與壓縮方式。實驗驗證表明,所構(gòu)建分詞庫能夠提升?;奉I(lǐng)域文本的分詞效果,準(zhǔn)確率、召回率與F值分別達(dá)到80.2%、79.7%及79.9%。雖然初步構(gòu)建了?;钒踩I(lǐng)域內(nèi)專業(yè)詞庫,但從應(yīng)用效果來看,詞庫的詞匯數(shù)量、覆蓋范圍仍有提升空間。詞庫的建設(shè)是一個長期積累的過程,后續(xù)研究中將通過文本訓(xùn)練數(shù)據(jù)的豐富、詞庫應(yīng)用過程中的錯誤反饋收集來不斷進行詞庫的更新和完善。