宋國民,張三強(qiáng),2,賈奮勵(lì)
(1.信息工程大學(xué),河南 鄭州 450001; 2.69340部隊(duì),新疆 伊犁 835000)
隨著互聯(lián)網(wǎng)技術(shù)、信息技術(shù)的飛速發(fā)展,人類正逐漸步入信息社會(huì)。如何快速、自動(dòng)地從各類紛繁復(fù)雜的媒體數(shù)據(jù)中獲取用戶關(guān)注的信息,已成為人類有效利用海量數(shù)據(jù)的關(guān)鍵。信息抽取(Information Extraction)作為從文本中自動(dòng)獲取信息的一種重要手段[1],已成為自然語言處理領(lǐng)域的重要研究內(nèi)容。它是指從自然語言文本中識別并抽取出用戶感興趣的信息[2],多以結(jié)構(gòu)化的形式對抽取結(jié)果進(jìn)行描述和存儲(chǔ),以便用戶查詢和分析使用。信息抽取利用自然語言處理技術(shù),通過對文本進(jìn)行一系列處理,從中抽取出相關(guān)信息。信息抽取是與領(lǐng)域密切相關(guān)的,只能抽取系統(tǒng)預(yù)先定義的有限種類的信息[3]。
時(shí)間信息抽取是事件信息抽取的一項(xiàng)重要工作,在時(shí)空泛在信息、地理空間情報(bào)等信息獲取與處理、關(guān)聯(lián)、聚合和內(nèi)容服務(wù)中具有重要作用。其作為信息抽取的一個(gè)重要研究內(nèi)容,一直受到國內(nèi)外學(xué)者的關(guān)注。常用抽取方法主要有基于規(guī)則匹配的方法和基于機(jī)器學(xué)習(xí)的方法兩種[3-9]。基于規(guī)則匹配的方法是指在掌握各種時(shí)間信息表達(dá)規(guī)律的基礎(chǔ)上,通過人工或半自動(dòng)方式編制時(shí)間信息抽取規(guī)則,并基于這些規(guī)則實(shí)現(xiàn)時(shí)間信息的抽取。這種方法使用簡便,易于理解和擴(kuò)展,且抽取效率及準(zhǔn)確率很高,但這些規(guī)則往往只面向特定語言和文本形式,人工工作量較大;基于機(jī)器學(xué)習(xí)的方法是指通過對標(biāo)注時(shí)間信息的語料庫的學(xué)習(xí),訓(xùn)練各種機(jī)器學(xué)習(xí)模型,并基于該訓(xùn)練模型實(shí)現(xiàn)時(shí)間信息的抽取。這種方法可以充分利用語料庫中己標(biāo)注的上下文信息,獲得較高的召回率,但該方法過分依賴標(biāo)注語料的質(zhì)量,受訓(xùn)練語料的范圍和規(guī)模限制。
本文在分析時(shí)間信息抽取常用方法特點(diǎn)的基礎(chǔ)上,提出利用GATE軟件(General Architecture for Text Engineering)進(jìn)行中文文本的時(shí)間信息抽取。介紹GATE的基本框架及各部分的功能作用;分析GATE用于中文時(shí)間信息抽取存在的不足,提出具體的改進(jìn)措施;圍繞基于GATE進(jìn)行時(shí)間信息抽取的主要步驟,具體闡述各項(xiàng)改進(jìn)內(nèi)容;利用已標(biāo)注時(shí)間信息的實(shí)驗(yàn)數(shù)據(jù),對中文時(shí)間信息抽取進(jìn)行實(shí)踐檢驗(yàn),并對實(shí)驗(yàn)結(jié)果進(jìn)行分析和總結(jié)。
GATE是英國謝菲爾德大學(xué)于1995年開始開發(fā)的、基于JAVA的、開源的自然語言處理框架,現(xiàn)已廣泛應(yīng)用于多語言信息抽取。其作為一個(gè)自然語言處理框架,將其框架內(nèi)所有的自然語言處理資源劃分為不同功能類型組件。CREOLE(Collection of REusable Objects for Language Engineering)作為GATE的核心組件之一,將可重用的處理資源進(jìn)行了組合。CREOLE組件主要有三種樣式:語言資源組件(Language Resources,LRs)、處理資源組件(Processing Resources,PRs)和可視化資源組件(Visual Resources,VRs)。語言資源組件是指與信息抽取有關(guān)的各種資源,如語料庫、文檔、詞表和本體等;處理資源組件是指信息抽取過程中的不同數(shù)據(jù)處理模塊,如分詞模塊、分句模塊、詞性標(biāo)注模塊和命名實(shí)體識別模塊等;可視化資源組件是指構(gòu)成GATE可視化操作界面的各種資源。
GATE除了提供CREOLE組件之外,還提供了一些專項(xiàng)功能組件,如用于英文信息抽取的ANNIE(A Nearly-New Information Extraction system)組件,用于建立信息抽取規(guī)則庫的語法工具JAPE(a Java Annotation Patterns Engine)組件,用于支持不同語言文本(如中文、法語、德語、印度語,等等)信息抽取的組件。ANNIE是一個(gè)基于規(guī)則的、用于英文文本資源信息抽取和實(shí)體標(biāo)識的組件,使用JAPE語言及其它處理資源來實(shí)現(xiàn)各種不同的信息抽取任務(wù)。其按照分詞(tokeniser)、詞表查詢(gazetteer lookup)、分句(sentence splitter)、詞性標(biāo)注(POS tagger)、語義標(biāo)注(semantic tagger)、命名實(shí)體識別(named entity recognition)、共指消解(ortho matcher)等信息處理順序,實(shí)現(xiàn)英文文本的信息抽取[10]。JAPE是GATE的信息抽取規(guī)則定義語言。可結(jié)合不同語言特點(diǎn)編寫JAPE規(guī)則,利用GATE自帶的編譯器,將其編譯成可實(shí)現(xiàn)命名實(shí)體識別的數(shù)據(jù)處理模塊。一個(gè)JAPE文件由若干條語法句子組成,每條語法句子又由一條或若干條規(guī)則構(gòu)成。
GATE提供了中文信息抽取組件,用于中文文本信息的處理和抽取。但直接利用該組件進(jìn)行中文時(shí)間信息抽取,其抽取效果并不理想,主要表現(xiàn)在:①對中文文本分詞處理不夠?qū)I(yè),無法實(shí)現(xiàn)真正意義上的中文分詞;②中文時(shí)間領(lǐng)域詞表不夠完善,其定義的時(shí)間類型不完整,收集的時(shí)間詞匯數(shù)量較少;③基于英文語法特點(diǎn)編寫的JAPE規(guī)則沒有結(jié)合中文時(shí)間表達(dá)特點(diǎn)進(jìn)行改造,不能有效支持中文時(shí)間信息的識別和抽取。
為此,利用GATE進(jìn)行中文時(shí)間信息抽取,需要針對以上三個(gè)方面問題分別開展工作:①引入優(yōu)秀的中文分詞軟件,解決中文文本分詞不專業(yè)的問題;②梳理中文時(shí)間類型,收集中文時(shí)間詞匯,形成專業(yè)、完備的中文時(shí)間領(lǐng)域詞表;③圍繞擴(kuò)展后的中文時(shí)間領(lǐng)域詞表,結(jié)合中文時(shí)間表達(dá)特點(diǎn),重新編寫JAPE抽取規(guī)則,提高中文時(shí)間的識別和抽取準(zhǔn)確率。
基于GATE 的中文時(shí)間信息抽取流程如圖1所示,其主要步驟包括:①利用NLPIR/ICTCLAS 2015分詞軟件對原始中文文本進(jìn)行分詞和詞性標(biāo)注;②在第一步文本處理的基礎(chǔ)上,刪除中文文本的詞性標(biāo)注項(xiàng);③擴(kuò)展并完善GATE中的中文時(shí)間領(lǐng)域詞表;④針對中文時(shí)間信息表達(dá)規(guī)律,重新編寫GATE的中文時(shí)間信息抽取規(guī)則(JAPE);⑤將處理后的中文文本導(dǎo)入GATE中,利用修改后(擴(kuò)展詞表、抽取規(guī)則)的中文抽取組件(Chinese NE),識別并抽取中文時(shí)間信息。

圖1 基于GATE的中文時(shí)間信息抽取流程
對文本進(jìn)行信息抽取,首要工作是對其進(jìn)行分詞和詞性標(biāo)注。英文以單詞為基本單元組織的,不存在分詞問題。中文文本的詞匯之間并無明確的分割標(biāo)識,必須進(jìn)行分詞處理。詞性標(biāo)注是指對分詞后的每一個(gè)詞增加詞性標(biāo)記,說明其詞性類型,如名詞、動(dòng)詞、副詞等,為后續(xù)的命名實(shí)體識別和共指消解打下基礎(chǔ)。但GATE對中文分詞處理不夠?qū)I(yè),無法實(shí)現(xiàn)真正意義上的中文分詞,故需利用專業(yè)的中文分詞軟件對原始中文文本進(jìn)行分詞處理。
本文利用張華平博士團(tuán)隊(duì)的NLPIR/ICTCLAS 2015分詞軟件,對中文文本進(jìn)行分詞與詞性標(biāo)注處理。NLPIR/ICTCLAS是張華平博士團(tuán)隊(duì)在自然語言處理領(lǐng)域十多年研究工作積累的基礎(chǔ)上研制出的分詞軟件,具備中英文混合分詞、詞性標(biāo)注、命名實(shí)體識別、新詞識別、關(guān)鍵詞提取等功能,同時(shí)支持用戶專業(yè)詞表與微博分詞。系統(tǒng)支持多種字符編碼、多種操作系統(tǒng)、多種開發(fā)語言及平臺(tái)。2006年推出的ICTCLAS 3.0分詞正確率就高達(dá)98.13%。
基于GATE進(jìn)行中文信息抽取時(shí)并沒有用到詞語的詞性信息。利用NLPIR/ICTCLAS分詞軟件對中文文本進(jìn)行分詞與詞性標(biāo)注后,需將文本中的詞性信息刪除,只保留用空格隔開的分詞信息,這樣就與英文的分詞形式保持一致。GATE中文信息抽取組件的chinese tokeniser(中文分詞器)可將分割后的詞語作為一個(gè)Token(標(biāo)記),以進(jìn)行后續(xù)的信息抽取工作。
詞表是GATE進(jìn)行信息抽取的基本語言資源,詞表類型的完整性及詞表內(nèi)容的完備性直接影響著命名實(shí)體的識別效果[11-12]。GATE的詞表由兩類文本文件組成:一類是以lst作為后綴的詞典文件,每個(gè)文件代表著一個(gè)實(shí)體類型,在文件中列舉了該實(shí)體類型的各種概念形式[1],如day.lst文件列舉了星期的表達(dá)形式;另一類是以def作為后綴的索引文件,其記錄了詞典文件中定義的實(shí)體主類(majortype)、子類(minortype)及相互間的關(guān)系。
GATE 8.0提供的中文時(shí)間詞表文件主要由century(世紀(jì))、decade(年代)、year(年)、season(季度)、month(月)、date(日期)、day(星期)、festival(節(jié)日)等8個(gè)詞典文件及相關(guān)附屬文件組成,每個(gè)詞典文件分別對應(yīng)1個(gè)時(shí)間類型。將其直接用于中文時(shí)間信息抽取存在兩方面的問題:一是時(shí)間類型不完整,GATE 8.0只能識別上述8種時(shí)間類別,無法識別時(shí)鐘時(shí)間、模糊時(shí)間、周期時(shí)間、時(shí)間段、農(nóng)歷時(shí)間、我國朝代及帝王年號時(shí)間等比較常用的時(shí)間類型;二是時(shí)間內(nèi)容不完備,詞典文件中提供的中文時(shí)間詞匯較少。為此,在充分分析現(xiàn)有時(shí)間詞典文件的基礎(chǔ)上,圍繞其存在的兩方面問題有針對性地開展了以下工作:一是通過調(diào)整、增加中文時(shí)間詞典文件,豐富時(shí)間類型。GATE 8.0自帶8個(gè)中文時(shí)間詞典文件,對應(yīng)了8類中文時(shí)間類型。本文在其基礎(chǔ)上,調(diào)整、拆分了個(gè)別時(shí)間類型,將原有的年、月、日、節(jié)日等4種時(shí)間類型分別拆分為公歷和農(nóng)歷兩種形式,形成8種中文時(shí)間類型;增加了時(shí)鐘時(shí)間、模糊時(shí)間、周期時(shí)間、時(shí)間段、我國朝代及帝王年號時(shí)間等時(shí)間類型及對應(yīng)的中文時(shí)間詞典文件。通過調(diào)整與補(bǔ)充,使得系統(tǒng)可識別的時(shí)間類型達(dá)到20種,表1是調(diào)整、擴(kuò)展以后的主要的時(shí)間詞典文件及對應(yīng)的時(shí)間類型;二是擴(kuò)充現(xiàn)有詞典文件的時(shí)間詞匯,補(bǔ)充新增加時(shí)間詞典文件的時(shí)間詞匯,完善了中文時(shí)間詞表文件。對于GATE 8.0已有的中文時(shí)間類型,通過補(bǔ)充其時(shí)間詞匯,豐富了時(shí)間詞典文件內(nèi)容,如“月份”這一時(shí)間類型,原中文時(shí)間詞典文件收錄詞匯75個(gè),通過拆分為公歷月和農(nóng)歷月兩個(gè)時(shí)間類型,并擴(kuò)充其時(shí)間詞匯后,收錄了與公歷月相關(guān)的時(shí)間詞匯297個(gè),與農(nóng)歷月相關(guān)的時(shí)間詞匯204個(gè)。對于新增加的中文時(shí)間類型,通過收集、分析、整理資料,形成其對應(yīng)的中文時(shí)間詞典文件,如中國朝代詞典文件收錄我國朝代詞匯70個(gè)、我國帝王年號詞典文件收錄中國帝王年號詞匯600余個(gè),等等。通過補(bǔ)充與新增,使得中文時(shí)間詞典文件收錄的時(shí)間詞匯由原來的365個(gè)擴(kuò)充到2 400余個(gè)。
GATE是基于JAPE規(guī)則進(jìn)行命名實(shí)體識別的。如果規(guī)則設(shè)置合理、完備,則可有效提高信息抽取的準(zhǔn)確性。GATE的JAPE規(guī)則在后綴為jape的文本文件中進(jìn)行定義。每個(gè)文件定義了一個(gè)實(shí)體類型的抽取規(guī)則,列舉了在領(lǐng)域詞表中定義的該類實(shí)體主類、子類及附屬信息的抽取規(guī)則,如location.jape文件定義了地點(diǎn)的抽取規(guī)則,person.jape文件定義了人物的抽取規(guī)則。
GATE中文信息抽取組件自帶的date.jape文件定義了中文日期的抽取規(guī)則,基于該文件可抽取出世紀(jì)、年代、年、季度、月、日期、星期、節(jié)日等日期實(shí)體的信息。但該規(guī)則編寫較為簡單,無法有效支持中文時(shí)間的命名實(shí)體識別,主要存在兩方面的問題:一是因GATE8.0自帶的時(shí)間領(lǐng)域詞表所對應(yīng)的時(shí)間類型有限(只有8種),故只能支持該部分類型的時(shí)間實(shí)體識別;二是因編寫的時(shí)間實(shí)體抽取規(guī)則較為簡單,只能對由這8種時(shí)間類型定義的基本時(shí)間單元實(shí)體進(jìn)行識別(如“2019年9月2日”,系統(tǒng)將其識別為“2019年”“9月”“2日”三個(gè)獨(dú)立的時(shí)間實(shí)體,而無法作為一個(gè)整體加以識別),且對系統(tǒng)自帶時(shí)間領(lǐng)域詞表所定義的時(shí)間實(shí)體識別率也不高。因此,本文在擴(kuò)展時(shí)間領(lǐng)域詞表、分析中文時(shí)間信息表達(dá)規(guī)律的基礎(chǔ)上,對GATE中文信息抽取組件自帶的日期抽取規(guī)則文件(date.jape)進(jìn)行了修改和擴(kuò)展,主要包括:一是針對擴(kuò)展的時(shí)間類型,增加識別這些時(shí)間類型實(shí)體的抽取代碼,使得系統(tǒng)可以識別時(shí)鐘時(shí)間、農(nóng)歷時(shí)間、我國朝代及帝王年號時(shí)間等各種新增時(shí)間類型的時(shí)間實(shí)體;二是修改、擴(kuò)展完善原有時(shí)間抽取代碼,使其不僅能夠識別由表1所列舉的各種基本時(shí)間單元及多個(gè)時(shí)間單元組合的時(shí)間實(shí)體,還能識別時(shí)間段、周期時(shí)間、模糊時(shí)間等復(fù)雜類型的時(shí)間信息。圖2是識別時(shí)間段的JAPE規(guī)則節(jié)選,通過該段抽取規(guī)則的定義,系統(tǒng)可識別諸如“今年1到3季度(月)”“2019年5~8月”等多種形式的時(shí)間段實(shí)體。

表1 主要的時(shí)間詞典文件及時(shí)間類型

Rule: DateSpan( (({Lookup.majorType == date_pre } // 時(shí)間前綴,如“前”“后”“最近的” |{Lookup.minorType == year_spec} // 相對時(shí)間(年),如“今年”“前年” |{Lookup.minorType == season_spec}// 相對時(shí)間(季度),如“上季度”“本季度” |{Lookup.minorType == month_spec} // 相對時(shí)間(月),如“當(dāng)月”“次月” |((YEAR_DIGITS)(YEAR)) // 年 |{Lookup.minorType == month})? // 月 ({Lookup.majorType == number })? // 數(shù)字 {Lookup.majorType == to } // 時(shí)間連接詞,如“至”“到”“-” {Lookup.majorType == number } // 數(shù)字 {Lookup.majorType == time_unit} // 時(shí)間單位,如“年”“季度”“月” ) … …) :tag→ :tag.DateSpan = {kind = DateSpan, rule = DateSpan}
本文實(shí)驗(yàn)數(shù)據(jù)采用了2010年SemEval-2010測評TempEval-2任務(wù)提供的中文訓(xùn)練語料,該任務(wù)訓(xùn)練語料包含了44篇中文文章和766個(gè)中文時(shí)間詞,時(shí)間詞基本涵蓋表1列舉的時(shí)間類型。
采用常用的準(zhǔn)確率P(Precision)、召回率R(Recall)和F1值(F-measure)作為時(shí)間信息抽取的評測標(biāo)準(zhǔn),三者的計(jì)算式如下:
實(shí)驗(yàn)按照圖1所示的流程,對44篇中文文章進(jìn)行了分詞處理,在對GATE 8.0進(jìn)行中文時(shí)間領(lǐng)域詞表擴(kuò)展及重寫中文時(shí)間信息抽取規(guī)則后,基于修改后的中文抽取組件(Chinese NE),識別并抽取文章中的中文時(shí)間信息(圖3)。通過對實(shí)驗(yàn)數(shù)據(jù)中的時(shí)間信息抽取結(jié)果進(jìn)行統(tǒng)計(jì)分析,可以計(jì)算得到準(zhǔn)確率P、召回率R和F1值分別為94.9%、93.1%、94%,可見該方法具有較好的時(shí)間信息識別和抽取能力。同時(shí),發(fā)現(xiàn)影響時(shí)間信息抽取及識別準(zhǔn)確率的主要原因有:①時(shí)間領(lǐng)域詞表沒有記載的時(shí)間詞類型或樣式,系統(tǒng)將無法識別;②時(shí)間信息抽取規(guī)則中沒有定義到的、復(fù)雜的、特殊的時(shí)間表達(dá)式,系統(tǒng)可能會(huì)將其識別成多個(gè)獨(dú)立時(shí)間詞,如“星期五(四月五日)上午八時(shí)”;③對于沒有時(shí)間單位的時(shí)間詞,系統(tǒng)將無法識別,如歌曲“我的一九九七”中的“一九九七”;④一些即可以作時(shí)間詞、又可以作副詞的多義詞語(如一直、同時(shí)),被系統(tǒng)錯(cuò)誤識別為時(shí)間詞,如“加工貿(mào)易在廣東外經(jīng)貿(mào)發(fā)展中占有舉足輕重的地位,同時(shí)也是粵港澳臺(tái)經(jīng)貿(mào)合作的重要內(nèi)容”中的“同時(shí)”;⑤語料中將時(shí)間段標(biāo)注為兩個(gè)獨(dú)立時(shí)間詞,本文通過制定時(shí)間段抽取規(guī)則,將其標(biāo)識為時(shí)間段,如“一九九六至二○○○年”。

圖3 中文時(shí)間信息抽取示例
利用GATE的自然語言處理框架,通過引入外部工具進(jìn)行中文分詞、擴(kuò)展中文時(shí)間領(lǐng)域詞表、重新編寫中文時(shí)間抽取規(guī)則,實(shí)現(xiàn)了中文時(shí)間信息的識別和抽取,達(dá)到較好地抽取效果。由于時(shí)間和精力的原因,對事件時(shí)間、外國歷史朝代及年號等領(lǐng)域時(shí)間尚未建立詞表,也沒有利用中文詞性標(biāo)注信息抽取時(shí)間信息。后續(xù)可圍繞這些方面開展工作,以提高時(shí)間命名實(shí)體識別、抽取的準(zhǔn)確率和召回率。