蘭海波,宋瑛瑛,曹之玉,朱小祥,沈晨笛,王 然
(中國氣象局公共氣象服務(wù)中心,北京 100081)
氣象災(zāi)害是自然災(zāi)害中最為常見且影響十分嚴重的災(zāi)害。我國氣象災(zāi)害造成的損失已占自然災(zāi)害造成損失的70%以上。為防御和減輕氣象災(zāi)害帶來的危害,保護國家和人員生命財產(chǎn)安全,氣象部門所屬氣象臺向政府部門和社會公眾發(fā)布氣象災(zāi)害預(yù)警信息[1]。氣象災(zāi)害預(yù)警信息在農(nóng)牧業(yè)[2]、海洋[3]、地質(zhì)災(zāi)害[4]等都發(fā)揮了重要的作用,傳播效能在一定程度上決定了氣象災(zāi)害防御水平[5]。
氣象災(zāi)害預(yù)警信息,通過計算機系統(tǒng)實現(xiàn)了信息的制作、錄入、審核、發(fā)布等環(huán)節(jié),制定了23類質(zhì)量控制策略,采用自動化規(guī)則性對照檢查和人工復(fù)核的方式,保障了對公眾發(fā)布預(yù)警的準確性[6]。自動化規(guī)則性對照檢查并不能有效地核驗識別預(yù)警文本存在的錯別字、冗余字、缺失字、字序顛倒等文本錯誤,而人工檢查存在審核效率低下的問題。預(yù)警信息正文包含大概100多字,仔細完整檢查需要1分鐘的時間,嚴重影響了預(yù)警信息發(fā)布的時效性。2018年唐山市氣象臺發(fā)布雷電黃色預(yù)警信號,預(yù)警描述文本中錯將“強降水”拼寫為“強僵尸”,引發(fā)眾多媒體熱議。
文本質(zhì)量控制檢測模型,一般是先對文本進行分詞,再用語言模型對分割的部分進行錯誤檢測,主要的不足之處在于沒有考慮氣象災(zāi)害文本的專業(yè)特性。筆者在統(tǒng)計了2017—2020年全國氣象歷史災(zāi)害預(yù)警信息的基礎(chǔ)上,對預(yù)警信息的特征進行分析,基于多模式融合分詞方法,建立了一種以預(yù)警專業(yè)語料庫為基礎(chǔ)的氣象預(yù)警文本分詞方法。利用該方法研發(fā)了預(yù)警信息文本質(zhì)量控制檢測模型,識別預(yù)警文本中存在的文本錯誤,輔助提高人工預(yù)警審核效率。
氣象預(yù)警信息是按照國際通用警報協(xié)議CAP (common alerting protocol)進行數(shù)據(jù)格式編碼[7]。其中,預(yù)警描述文本是直接對政府部門和公眾進行發(fā)布的內(nèi)容,包含了發(fā)布單位、發(fā)布時間、預(yù)警信息類型、預(yù)警信息等級、災(zāi)害因素、影響時間、影響區(qū)域、災(zāi)害影響、防御指南等內(nèi)容的描述信息?;靖袷綖椤癤氣象臺X年X月X時X分發(fā)布X類型X級別預(yù)警信號:預(yù)計,X日X時至X日X時,將會對A地區(qū)、B地區(qū)、C地區(qū)等造成XXX影響,請注意防范”。預(yù)警文本示例為“北京市氣象臺2021年10月29日16時45分發(fā)布大霧黃色預(yù)警信號:預(yù)計,29日20時至30日09時,本市通州、大興、平谷、順義、朝陽、豐臺、東城、西城、石景山、密云大部、海淀大部、懷柔東南部、房山東部、門頭溝東部和昌平東部有霧,能見度小于1 000 m,部分地區(qū)小于500 m,請注意防范。”
通過文本示例和格式要求,可以看出氣象預(yù)警信息文本有一定的領(lǐng)域?qū)I(yè)特性,以地名、組織機構(gòu)名稱、時間、災(zāi)害類型、災(zāi)害級別、影響描述、防御常見措施、計量單位和專有名詞等為主要文本構(gòu)成,而且具有特定的格式框架。這些專業(yè)特性成為氣象預(yù)警信息文本質(zhì)量檢測的關(guān)鍵點。
文本質(zhì)量檢測主要是精準確定出文本中出現(xiàn)的錯誤類型和錯誤位置,及時發(fā)現(xiàn)得到預(yù)防性處理。氣象預(yù)警信息文本質(zhì)量檢測的關(guān)鍵和難點,是對專業(yè)特性名詞的準確分詞。統(tǒng)計總結(jié)2017—2020年全國氣象歷史災(zāi)害預(yù)警信息發(fā)現(xiàn),預(yù)警描述文本中的錯誤類型涉及錯別字、冗余字、缺失字、多詞四大類。
近年來,隨著互聯(lián)網(wǎng)和高性能計算機的發(fā)展,自然語言處理領(lǐng)域在情感分析[8]、信息抽取[9]、機器翻譯[10]等文本處理方面有了新的進展和應(yīng)用。漢語與英語不同,不是以詞出現(xiàn),而是通過字與字的組合呈現(xiàn)出不同的含義。中文分詞是進行自然語言處理的基礎(chǔ)。
目前中文分詞算法和工具應(yīng)用都比較成熟,這些自然語言處理工具為預(yù)警描述文本檢查提供了技術(shù)基礎(chǔ)。場景不同,目標不同[11],工具的選擇也不同。根據(jù)氣象預(yù)警信息文本特征和質(zhì)量檢測應(yīng)用場景,綜合考慮處理速度、準確率、社區(qū)活躍度、適應(yīng)范圍、更新頻率和語料結(jié)果,JIEBA、北京大學(xué)PKUSEG分詞可供選擇使用[12]。JIEBA分詞處理速度最快,應(yīng)用最廣泛。在預(yù)警文本分詞領(lǐng)域,北京大學(xué)PKUSEG分詞在準確率、召回率、F評分測試指標上評價最高,筆者使用單一分詞工具PKUSEG分詞作為多模式融合分詞方法的參照對象。氣象預(yù)警信息文本的中文分詞,直接應(yīng)用單一通用分詞工具存在兩方面的問題:①由于氣象預(yù)警信息文本的專業(yè)特性及分詞工具對地名、組織機構(gòu)名稱、時間、災(zāi)害類型、災(zāi)害級別、影響描述、防御常見措施、計量單位和專有名詞等新詞識別的準確率、召回率和F評分會降低,對整體句子的語義理解將產(chǎn)生負貢獻。在預(yù)警文本特征分析中,地名是用來描述預(yù)警影響范圍的重要實體。使用單一分詞工具對31個省名稱、3 185個市縣名稱、40 446個鄉(xiāng)鎮(zhèn)名稱進行切分,得到的地名識別準確率、召回率、F評分指標的平均評分,如表1所示。從表1可以看出,地名隨行政級別的降低,分詞的評價指標得分下降得很明顯。②分詞工具在解決歧義問題的方案中,索引時使用細粒度的分詞以保證召回,查詢時使用粗粒度的分詞以保證精度。分詞結(jié)果的多個短詞對整體句子的語義理解比一個長詞的貢獻低。例如,使用分詞工具切分詞“森林火險氣象等級”,會被切分為“森林/火險/氣象/等級”。一個長詞對整體句子理解的貢獻比多個短詞的貢獻要高[13]。因此,我們期望“森林火險氣象等級”是作為一個詞被切分出來。
表1 利用單一分詞工具拆分地名的準確率、召回率、F評分
為了解決上述問題,筆者設(shè)計了一種多模式融合分詞方法。首先通過雙向最大匹配[14]的方法,根據(jù)自建命名實體庫將命名實體切分出來,只有正向最大匹配和逆向最大匹配切分出來的實體一致時才進行切分。命名實體庫主要包括地名、組織機構(gòu)名稱、時間、計量單位、專業(yè)名稱,如表2所示。其次,同時使用JIEBA分詞和PKUSEG分詞兩種分詞工具將句子進行切分,并將分詞結(jié)果進行對比,如果兩個分詞結(jié)果相同,則返回;否則判定為較少單字或較多長字的分詞結(jié)果。
表2 命名實體庫示例
分詞的準確率Pre、召回率Recall、F評分是評價分詞方法的幾種檢驗方法,如式(1)~式(3)所示。
(1)
(2)
(3)
式中:Nr為提取出的正確信息條數(shù);NS為提取出的信息條數(shù);Np為樣本中的信息條數(shù)。
以某省2020年發(fā)布預(yù)警信息中隨機采樣50條省級預(yù)警、50條市級預(yù)警、50條縣級預(yù)警作為中文分詞性能測試數(shù)據(jù)來源,選擇PKUSEG分詞作為單一分詞工具為對比對象,分別計算分詞的準確率、召回率、F評分。對比測試結(jié)果顯示,使用多模式分詞方法的準確率、召回率和F評分在省級發(fā)布單位的預(yù)警文本、市級發(fā)布單位的預(yù)警文本、縣級發(fā)布單位的預(yù)警文本中均有提升。省級預(yù)警文本的分詞準確率由80.66%提升至94.94%,市級預(yù)警文本的分詞準確率由82.08%提升至95.41%,縣級文本的分詞準確率由82.77%提升至95.14%,平均準確率提升了13.33%。同樣,計算分詞的平均召回率和平均F評分,在省、市、縣三級預(yù)警文本中也均有提升,分別為6.76%和10.24%,如圖1所示。
圖1 多模式融合分詞方法與單一分詞方法評分對比
氣象災(zāi)害預(yù)警文本具有較高的相似度,甚至很多文本除日期、發(fā)布單位、影響范圍(地名)外,其他信息是100%一致的。基于此,設(shè)計了字序列組合預(yù)警文本庫,字序列組合按以下步驟對歷史預(yù)警文本進行抽取、清洗:①對句子按分隔符切分成多個子句;②將每個子句中每個單字wi依次作為組合首字,向右順序按照預(yù)設(shè)組合長度n進行切字,組合為wiwi+1wi+n-1;③組合長度依次設(shè)為n-m(m=1,n=2),重復(fù)步驟②;④單字由停頓詞組成,包括物理單位(米、級),連接副詞(和、將),助詞(的),動詞(對、有)等;⑤清洗過濾重復(fù)詞。待檢驗預(yù)警文本按字序列組合方法切字,字序列組合預(yù)警文本庫,如圖2所示。按圖中流程進行全匹配,考慮到模型運行性能適宜性,以及歷史預(yù)警文本庫中非專業(yè)特性名詞大都為2個字組成,故設(shè)置n=3。
圖2 字序列組合模型處理流程
以國家預(yù)警信息發(fā)布中心2021年全國預(yù)警庫作為檢驗樣本,從中隨機抽取正確樣本400條,人工制作錯誤樣本400條。對字序列組合檢驗?zāi)P妥鰷蚀_性檢驗分析,結(jié)果如表3所示。由表3可知,正確樣本判斷為正確、錯誤樣本判斷為錯誤的準確率=(393+82)/(400+400)=59.38%。
表3 字序列組合檢驗?zāi)P蜋z驗結(jié)果
其中,正確樣本判斷為正確的檢驗準確率=393/400=98.25%;錯誤樣本被誤判斷為正確的漏警率=318/400=79.5%。盡管字序列組合模型的準確率(59.38%)并不高,但對正確樣本的檢驗準確率卻非常高,達98.25%。這主要是因為預(yù)警文本制作具有一定的模板式和規(guī)律性,大量的預(yù)警描述文本是由“制作單位+發(fā)布(解除)時間+預(yù)警類型+預(yù)警級別+影響范圍+提示(指導(dǎo))信息”組成,這些信息都有標準或規(guī)范可以遵循,排除日期、字符后,有大量的重復(fù)信息,通過切分排列組合達到完全一致的可能性非常高。同時,樣本檢驗的漏警率較高,主要是因為序列組合的方法對缺失字、字序顛倒的檢出率非常低。隨預(yù)警文本內(nèi)容的日益豐富,提示(指導(dǎo))性的內(nèi)容越來越多元化,字序列組合檢驗?zāi)P偷穆┚室矔絹碓礁摺?/p>
N-gram在自然語言處理中是一種簡單易理解的概率統(tǒng)計模型,根據(jù)前N-1個對象來預(yù)測第N個對象,即句子中的前N-1個單詞和該單詞之間有一個概率,可以用來判斷句子是否正確。N-gram模型基于馬爾可夫假設(shè),假設(shè)每次出現(xiàn)的概率僅與前面的N-1個字符相關(guān)。假設(shè)一個句子s由i個詞構(gòu)成,則其出現(xiàn)的概率可表示為:
p(s)=p(w1w2…wi)=
p(w1)p(w2∣w1)p(w3∣w1,w2)…
p(wi∣w1,w2,…,wi-1)
(4)
式中:p(s)為句子s在語料庫中出現(xiàn)的概率;p(wi|w1,w2,…,wi-1)為句子s在前i-1個詞為w1,w2,…,wi-1的情況下,第i個詞為wi的概率。N-gram在惡意信息檢測[15]、主題識別[16]等方面有很多示范應(yīng)用。N-gram語料庫規(guī)模越大,做出的模型結(jié)果才更有用[17]。對于N的選擇,考慮到氣象預(yù)警信息文本是短文本,并且短句之間的聯(lián)系并不深,因此構(gòu)建Bi-gram模型足夠解決需要,這意味著當前字詞的條件概率取決于從前1個字詞到該字詞的轉(zhuǎn)換概率,則式(4)可以近似表示為:
(5)
筆者依據(jù)氣象預(yù)警信息文本特征分析和多模式融合分詞方法,結(jié)合自建命名實體庫,創(chuàng)建了預(yù)警專業(yè)語料庫。預(yù)警專業(yè)語料庫是按照N-gram模型運行默認語料庫格式進行擴充增加中文分詞。再利用多模式融合分詞方法對檢驗預(yù)警描述文本分詞,得到詞序列,將多個連續(xù)地面標記為“AD”,將數(shù)字定義為“D”,經(jīng)歸一處理后得到詞序列,將前文中預(yù)警描述處理得到如下詞序列:“北京市氣象臺D年D月D日D時D分發(fā)布大霧黃色預(yù)警信號預(yù)計D日D時至D日D時AD有霧能見度小于D米AD小于D米請注意防范”。計算“AD有霧能見度小于D米”句子評分,部分選擇計算過程如圖3所示,句子評分結(jié)果為-21.408 8,比原值-52.861 2提升了59.5%??梢娞幚砗蟮脑~序列對計算機來說更易理解的。
圖3 Bi-gram選擇計算過程
歷史氣象預(yù)警信息文本2個詞之間的平均評分值為-4,使用并列歸一方法的N-gram檢驗?zāi)P偷臋z驗規(guī)則為:判斷每個詞與詞之間的評分值,如果值小于-4,則認為句子理解存疑。唐山市氣象臺2018年08月11日14時53分發(fā)布雷電黃色預(yù)警信號:目前我市北部地區(qū)已經(jīng)出現(xiàn)雷電,預(yù)計未來六小時中北部大部分地區(qū)仍有雷電活動,雷雨時可能伴有短時強僵尸,大風(fēng)等強對流天氣,請有關(guān)單位和人員做好防范準備。使用N-gram模型對該雷電黃色預(yù)警信號文本進行檢驗,發(fā)現(xiàn)“強”和“僵尸”兩個詞之間的評分值為-100。
同樣以2021年全國預(yù)警庫為本樣,對N-gram模型做準確性檢驗分析,檢驗結(jié)果如表4所示。
表4 N-gram檢驗?zāi)P蜋z驗結(jié)果
根據(jù)表4可以得到模型檢驗的準確率=(296+366)/(400+400)=82.75%,漏警率=34/400=8.5%。對比分析表3和表4的結(jié)果,可見N-gram模型檢驗錯誤句子的檢出率更高,對詞與詞之間的邏輯關(guān)聯(lián)關(guān)系要求更嚴格,在錯別字詞、缺失字、冗余字、詞序顛倒的檢出上均有較好的表現(xiàn)。與字序列組合模型相比,漏警率由79.5%減少至8.5%。但由于2017—2020年預(yù)警描述文本范圍較小,重復(fù)詞語較多,當出現(xiàn)未出現(xiàn)詞時,即便是正確樣本也會被認為是錯誤。
為解決上述問題,提出了多級檢驗的方式,除將2017—2020年歷史預(yù)警描述文本整理成預(yù)警專業(yè)語料庫外,引入了人民日報語料庫,擴大了詞庫的范圍。預(yù)警信息描述文本來自國家預(yù)警信息發(fā)布中心2017—2020年歷史預(yù)警庫。地名信息來自民政部網(wǎng)“2012年中華人民共和國縣以下行政區(qū)劃代碼及統(tǒng)計代碼”。正確檢驗預(yù)警信息描述文本來自國家預(yù)警信息發(fā)布中心2021年預(yù)警庫。多級檢驗?zāi)P鸵灶A(yù)警專業(yè)語料庫為主,輔以人民日報語料庫,以歸一化N-gram檢驗?zāi)P蜑橹?輔以字序列組合檢驗?zāi)P?其檢驗邏輯關(guān)系如圖4所示。
圖4 多級檢驗?zāi)P土鞒虉D
多級檢驗?zāi)P蜋z驗結(jié)果如表5所示。
表5 多級檢驗?zāi)P蜋z驗結(jié)果
由表5結(jié)果可以得到模型檢驗的準確率=(379+366)/(400+400)=93.13%,漏警率=34/400=8.5%。多級檢驗?zāi)P驼狭俗中蛄薪M合檢驗?zāi)P秃蜌w一化N-gram檢驗?zāi)P偷膬?yōu)勢,大大提高了樣本整體的準確率,降低了漏警率。
使用JAVA語言將多級檢驗?zāi)P头庋b成API服務(wù)接口,嵌入國家突發(fā)事件預(yù)警信息監(jiān)控系統(tǒng)中應(yīng)用。接口示例:輸入為預(yù)警描述文本;接口為http://127.0.0.1:5896/sentcheck?sentence=預(yù)警描述文本;返回值為正確(0);錯誤為質(zhì)疑詞的首字。
截止到2021年12月,共檢測了34條語義錯誤類預(yù)警內(nèi)容錯誤,占錯誤攔截總數(shù)的85.2%,大大提高了錯誤檢出率,并減少了人為審核的工作量。當前模型所不能識別的錯誤類型,也在系統(tǒng)應(yīng)用工作過程中做了積累和通過其他方式解決了業(yè)務(wù)應(yīng)用中的實際問題。雖然多級檢驗?zāi)P偷腻e誤樣本被誤判斷為正確的漏警率為8.5%,但在實際應(yīng)用中暫未出現(xiàn)錯誤未被檢測出來的情況。由于漏警率是在特定的人為制作的錯誤樣本測試數(shù)據(jù)樣本上的結(jié)果,模型應(yīng)用的過程中,會進行自學(xué)習(xí)訓(xùn)練樣本,進而改變模型精準度。多級檢驗?zāi)P驮跇I(yè)務(wù)應(yīng)用系統(tǒng)中,主要實現(xiàn)文本錯誤的定位和錯誤類型的提示,示例如圖5所示。
圖5 國家突發(fā)事件預(yù)警信息監(jiān)控系統(tǒng)提示錯誤信息
(1)結(jié)合氣象預(yù)警描述文本的特征分析,提出了一種多模式融合分詞方法,并創(chuàng)建了預(yù)警專業(yè)語料庫,建立了以歸一化N-gram檢驗?zāi)P蜑橹?以字序列組合檢驗?zāi)P蜑檩o的多級檢驗?zāi)P汀?/p>
(2)對比試驗顯示,多級檢驗?zāi)P偷臏蚀_率有所提升,漏警率有所下降,在實際應(yīng)用中取得了較好的效果。
(3)在應(yīng)用中發(fā)現(xiàn)分詞對預(yù)警專有語料庫的依賴性高,當?shù)孛辉谡Z料詞庫表中,如縮寫詞、分詞會產(chǎn)生錯誤,從而導(dǎo)致檢驗失敗。針對這個問題,未來將通過建立地名和縮寫詞之間的標簽關(guān)系圖譜的方式,繼續(xù)優(yōu)化分詞方法的研究。