吳 瓊,黃德根
(大連理工大學 計算機科學與技術學院,遼寧 大連 116024)
時間表達式的識別在中文信息處理中有重要的作用和意義,時間表達式識別可為問答系統(tǒng)提供基本的素材,可以用于機器翻譯、事件跟蹤、信息檢索中相關時間的定位,還可以用于定位事件發(fā)生的時間及回答時間相關的問題等。
1995年,信息理解會議(Message Understanding Conference)首次將時間表達式的識別作為命名實體識別的一個子任務。2004年,美國技術標準局(NIST)舉辦了第一屆時間表達式識別與歸一化(Time Expression Recognition and Normalization, TERN)的評測,隨后,ACE2005(Automatic Content Extraction)和 SemEval2007(Semantic Evaluations)也將時間表達式評測納入自己的任務中。
時間表達式識別的常用方法有兩種: 一種是基于規(guī)則的方法[1],例如,文獻[2]通過建立一些語法規(guī)則和補充限定條件,用規(guī)則匹配的方式識別時間表達式;文獻[3]將時間信息劃分為一系列的“時間基元”,使用啟發(fā)式規(guī)則抽取時間表達式,再利用錯誤驅(qū)動方法對規(guī)則庫進行剪枝,提高規(guī)則抽取的正確率;文獻[4]提出一種基于正則表達式的TIMEX2[5-6]中文時間短語邊界識別方法。由于時間表達式具有一定的穩(wěn)定性,直到現(xiàn)在,仍有人用規(guī)則的方法識別時間表達式。規(guī)則[7]方法優(yōu)點是使用簡單,正確率高;缺點是很難將所有時間表達式完全覆蓋,而且制定規(guī)則需要大量的人工,領域適應性較差。
另一種是基于機器學習的方法。這類方法一般借助于統(tǒng)計模型,常用的統(tǒng)計模型有: 條件隨機場(CRF)[8]和條件最大熵[9]。條件最大熵的方法優(yōu)點是能夠?qū)⒏鞣N特征在同一框架內(nèi)刻畫,不需要特征獨立性假設,缺點是時空復雜度大,耗費資源;CRF[10]方法能找出全局最優(yōu)解,可充分利用上下文的信息,但是它的結果好壞過分依賴于訓練語料的質(zhì)量,還存在數(shù)據(jù)稀疏和詞序依賴的問題。文獻[11]將中文時間短語分為日期型和事件型兩類,利用CRF加入任意特征表達長距離的上下文依賴信息的能力,解決了時間短語詞數(shù)較少時的噪聲過大問題。
除此之外,文獻[12]提出基于依存分析和錯誤驅(qū)動的方法來識別時間表達式,解決了長距離依賴的問題。文獻[13]將淺層語義分析中的語義角色標注加入中文時間詞識別中,在CRF訓練中達到了較好的識別效果。
當句子中存在時間短語時,機器翻譯的效果通常不太理想,若能將時間表達式提前識別,并作為一個整體去翻譯整句,不僅能降低句法分析的復雜度,而且機器翻譯的效果能得到改善。
例如,在句子“土地基金於一九八六年根據(jù)中英聯(lián)合聲明的規(guī)定成立,訂明由聯(lián)合聲明于一九八五年五月二十七日生效當天起至一九九七年六月三十日止”中,存在3個時間表達式。
第1個時間表達式: 一九八六年(英文1986)
第2個時間表達式: 一九八五年五月二十七日(英文May 27, 1985)
第3個時間表達式: 當天起至一九九七年六月三十日(英文the day until June 30, 1997)
上述句子用Google翻譯得到: Land Fund in accordance with the provisions of the Joint Declaration was established in 1986, stipulates that the joint statement on May 27, 1985 ended June 30, the day of the entry into force until 1997.
若將“一九八五年五月二十七日”和“當天起至一九九七年六月三十日”作為一個時間表達式整體,再翻譯則變成: Land Fund in accordance with the provisions of the Joint Declaration was established in 1986, Stipulates the joint statement entry into force on May 27, 1985 ended the day until June 30, 1997.
再如“為了投票,他們排隊長達三、四個小時?!盙oogle的翻譯是: In order to vote, they waited three hours and four hours.將時間表達式“三、四個小時”作為整體識別后再翻譯的話,得到正確的結果: In order to vote, they waited three or four hours.
TIDES 2003 Standard for the Annotation of Temporal Expressions 于2004年4月份發(fā)布的中文補充版[14]對時間表達式的定義是: 時間表達式是時間單元的一個序列。在本文中,時間表達式可認為是時間觸發(fā)詞與時間綴詞的組合。SemEval2010(Semantic Evaluations)task 13首次將時間表達式的類型作為識別內(nèi)容,將時間表達式分為以下4類。
? DURATION: 例如,two weeks;
? SET: 例如,every Monday morning;
? TIME: 例如,at 2: 45p.m;
? DATE: 例如,January 27,1920,yesterday。
結合中文時間表達式的特點與翻譯的需要,本文在以上4類的基礎上進行了修改,將時間表達式分為了以下7類,即DURATION類、SET類、TIME類、DATE類、LUNAR類、FUZZY類、RELATIVE-TIME類,其中DURATION和SET與SemEval2010 task 13定義的時間類型相同,而TIME和DATE進行了修正,新增加LUNAR、FUZZY、RELATIVE-TIME,具體如下:
? TIME類: 修改為一天中的某個具體時間點,例如,“4點半”;
? DATE類: 修改為年月日這類的標準時間,例如,“2013年9月1日”;
? LUNAR類: 表示中國傳統(tǒng)節(jié)氣,包括中國農(nóng)歷、節(jié)日等各種傳統(tǒng)說法,例如,“國慶黃金周”、“大年初一”;
? FUZZY類: 表示模糊時間,例如,“數(shù)十年”;
? RELATIVE-TIME類: 表示相對時間,是相對于DATE來說的,不能具體到某一天的時間就稱為相對時間,例如,“明天”、“下午”。
以上7類就是本文識別的時間表達式范疇,超出其中范圍的時間相關的式子,不在本文識別范圍內(nèi)。
本文中的時間單元是指時間表達式的最小組成單位。例如,“2014年5月2日下午3點”這個時間表達式中,包含有2014年、5月、2日、下午、3點這5個時間單元。
之所以選擇時間單元作為CRF標注目標,是因為時間表達式是由時間單元組成的,時間單元之間搭配相對松散,沒有很強的先后依賴關系,而時間表達式的形式多樣。因此,時間單元的格式相對時間表達式比較固定,抽取難度小,準確度高。
時間觸發(fā)詞是判斷一個短語是否是時間短語的關鍵詞。通常是一個時間單位,表示時間概念,例如,“月”、“日”。根據(jù)識別的需要,本文將觸發(fā)詞分為兩類,一類是獨立觸發(fā)詞,另一類是數(shù)字觸發(fā)詞。
獨立觸發(fā)詞指的是,單獨存在就能表示時間的這樣一類觸發(fā)詞。例如,“下午”、“昨天”等詞語,不需要上下文信息,本身就可作為時間表達式。
數(shù)字觸發(fā)詞可細分為數(shù)字前綴觸發(fā)詞與數(shù)字后綴觸發(fā)詞,其中,當數(shù)字前綴觸發(fā)詞的前面為數(shù)字時,則數(shù)字與數(shù)字前綴觸發(fā)詞一起構成一個完整的時間單元(例如,“21世紀”、“2008年”),而其單獨存在時不具有時間意義;數(shù)字后綴觸發(fā)詞的概念與數(shù)字前綴觸發(fā)詞類似,不同的是數(shù)字是在觸發(fā)詞的后面,如“星期三”。
時間表達式識別作為自然語言處理的一個分支,其識別的難點是歧義問題。時間表達式是由時間觸發(fā)詞觸發(fā),但是,并非含有觸發(fā)詞的表達式就一定是時間表達式。例如,“后天因素”中的“后天”是時間觸發(fā)詞,但是“后天因素”這個詞并不是時間表達式。再比如,“6分”可以是時間表達6分鐘,也可能是得分6分。具體的含義要看上下文。這類問題都是時間表達式的識別歧義問題。
本文針對這類歧義問題,利用規(guī)則進行限定,查看其上下文信息,判斷其是否為時間表達式。
中文時間表達式識別模型主要包含以下兩部分,如圖1所示。
圖1 中文時間表達式識別模型
1) CRF生成特征模板部分: 輸入訓練集,選取CRF的模板特征,自動生成對應的特征模板。
2) 規(guī)則處理部分: 該部分主要是對CRF沒識別的時間單元進行補充識別,并確定時間表達式邊界。具體分為以下7個步驟。
第1步: 對測試語料的格式進行預處理,將語料格式轉(zhuǎn)化為CRF要求的格式;
第2步: 對語料進行分詞、詞性標注*分詞工具使用的是大連理工大學自然語言處理實驗室的NiHao分詞系統(tǒng);
第3步: 使用第一部分生成的CRF特征模板對測試語料進行測試,得到標注出時間單元的語料;
第4步: 對CRF模型標注后的結果進行處理,去除錯誤的時間單元,自動獲取時間單元中的時間詞生成候選觸發(fā)詞表,通過評價函數(shù)對候選觸發(fā)詞進行除雜,將正確的觸發(fā)詞分類放入相應的觸發(fā)詞庫中;
第5步: 考慮到CRF對于訓練語料具有很強的依賴性,對某些不常用的時間觸發(fā)詞的標注效果不理想,因此,制定規(guī)則,對語料中的時間觸發(fā)詞進行補充標注;
第6步: 利用相鄰時間單元合并的原則合并時間單元,由于時間表達式的上下邊界通常是由時間綴詞修飾,因此,借助時間前綴詞庫和時間后綴詞庫,確定時間表達式的上下邊界;
第7步: 對標注的時間表達式進行篩選,去除其中錯誤的標注,得到正確的時間表達式。
CRF是一種基于統(tǒng)計的無向圖模型,它定義了在給定觀察序列條件下,計算整個標注序列的單一聯(lián)合概率分布。Lafferty 等人定義CRF為指數(shù)形式分布,這就使得不同狀態(tài)下的不同特征的權值可以相互平衡。給定觀察序列X={xi}(i=0, 1, …,n)和狀態(tài)序列Y={yi}(i=0, 1, …,n),線性鏈的CRF定義序列Y的條件概率如式(1)所示。
(1)
其中,z(X)是歸一化因子;n表示給定詞序列的長度;fj(yi-1,yi,X,i)是特征函數(shù),既可以表示無向圖邊的轉(zhuǎn)移特征e(yi-1,yi,X,i),也可以表示節(jié)點的狀態(tài)特征v(yi,x,i);λj是第j個特征函數(shù)的權重系數(shù)。時間表達式識別問題可以歸結為序列標注問題,其任務是給定觀察序列x的條件下,估計產(chǎn)生標注序列y的條件概率有多大。而CRF模型具有強大的特征描述能力和特有的克服標注偏置問題的能力,它可以非常容易地將觀察序列中的任意特征加入到模型中,表達長距離依賴的上下文依賴信息,從而確定標注時間單元的左右邊界。
基于CRF的時間單元識別模塊的具體流程見圖2。其中,訓練集采用的是2000年的《人民日報》,共26萬多條詞,人工標注時間單元。本文特征選取的是: 當前詞的詞形、詞性;前一個詞的詞形、詞性;后一個詞的詞形、詞性。
圖2 CRF識別時間單元過程
前人也有嘗試過使用CRF方法來標注時間表達式,但是標注的對象是整個時間表達式而非時間單元。由于時間綴詞的不定性,導致標注的時間表達式容易發(fā)生邊界錯誤。本文采用CRF方法標注時間單元,與時間表達式相比,粒度更小,而且,時間單元的格式較時間表達式更穩(wěn)定,識別效果有一定的提高。
由于CRF的局限性,當遇到訓練語料中很少出現(xiàn)的時間表達式類型,其識別效果很差,甚至不能識別。時間表達式邊界的識別效果也不好。為此,本文通過以下兩個方面對其進行補充修改。
對于訓練語料中很少甚至不存在的時間單元,本文采取的方法是,構建時間觸發(fā)詞庫,對其進行補充標注。初始的時間觸發(fā)詞庫由人工構建,由于時間表達式的識別效果一定程度依賴于時間觸發(fā)詞庫的規(guī)模,而人工完善的耗費太大。因此,利用轉(zhuǎn)換規(guī)則自動獲取時間單元中的候選觸發(fā)詞,生成候選觸發(fā)詞表。候選觸發(fā)詞表中含有很多錯誤的候選詞,如若直接放入觸發(fā)詞庫會極大地降低識別結果的正確率,因此需要對候選觸發(fā)詞進行除雜。本文通過引入評價函數(shù)Score(Ti)來對候選觸發(fā)詞進行打分,設置λ閾值進行篩選。獲得的觸發(fā)詞根據(jù)類型分為數(shù)字觸發(fā)詞與獨立觸發(fā)詞,分別放入對應的觸發(fā)詞庫,達到完善時間觸發(fā)詞庫的目的。
研究發(fā)現(xiàn),時間表達式的邊界一般是時間綴詞,時間綴詞對時間表達式的作用范圍起到限定的作用。因此,我們構建了時間前綴詞庫和時間后綴詞庫,通過查看時間單元的前后詞是否是時間綴詞來確定時間表達式的邊界。
本文使用的時間觸發(fā)詞庫有兩個: 獨立觸發(fā)詞庫和數(shù)字觸發(fā)詞庫。設立兩個觸發(fā)詞庫的原因是,能有針對性的處理不同類型的時間單元,有利于下面的篩選環(huán)節(jié)。
基于CRF進行時間單元的標注后,再通過規(guī)則識別時間表達式,具體過程如下:
1) 將CRF標注時間單元中部分錯誤的標注去除;
2) 利用轉(zhuǎn)換規(guī)則自動獲取時間單元中的候選觸發(fā)詞,生成候選觸發(fā)詞表;
3) 候選觸發(fā)詞Ti{i=0,1,2,…n},將候選觸發(fā)詞表加入后的系統(tǒng)識別結果與語料的正確結果進行對比,每個候選觸發(fā)詞的得分計算方法為式(2)。
(2)
其中,True(Ti)表示候選觸發(fā)詞Ti在測試語料標注中正確的個數(shù),F(xiàn)alse(Ti)表示錯誤的個數(shù)。設置閾值λ,將得分小于λ的候選觸發(fā)詞從表中刪去,具體過程見圖3。
圖3 自動獲取時間觸發(fā)詞過程
4) 合并相鄰的時間單元,并根據(jù)時間前綴詞庫與時間后綴詞庫,確定時間表達式的邊界;
5) 設置限制條件,去除錯誤的時間表達式,得到正確的時間表達式。
CRF模型使用CRF++-0.54*Available at http://crfpp.googlecode.com/svn/trunk/doc/index.html工具包獲得。CRF的訓練語料是純?nèi)斯俗ⅲ虼?,訓練效果比較好。據(jù)文獻[9]統(tǒng)計,近49%的時間表達式為一個獨立的時間單元;26%的時間表達式是由兩個時間單元構成;21%的時間表達式為3個時間單元;2.3%的為4個時間單元;1.7%為5個以上時間單元組成。因此,選取了以下兩個模板特征,分別做了開式測試實驗(表1)。
表1 特征選取細節(jié)
為了測試上述兩組特征哪個的效果更好,我們做了兩組開式測試實驗,測試語料是2011年的國際新聞,測試語料中共含有1026個時間單元,實驗結果見圖4。
圖4 不同特征識別時間單元效果
從圖4可以看出,特征1模板的標注效果更好。本文最終選取的特征為: 當前詞的詞形、詞性,前一個詞的詞形、詞性,后一個詞的詞形、詞性。
本文采用的CRF訓練語料是2000年的人民日報新聞,共含有24萬條詞;測試語料為2011年國際新聞,共含有18萬條詞,其中時間表達式1 954個。為了比較該方法的效果,我們分別做了兩個基線系統(tǒng): 基于CRF識別時間表達式與基于規(guī)則識別時間表達式。在實驗數(shù)據(jù)集一致的情況下,結果如表2所示。
表2 時間表達式識別結果對比
從表2中的實驗結果可以看出,本文采用的CRF與規(guī)則相結合的方法,比單純用CRF方法或規(guī)則方法的識別效果好。CRF方法識別較復雜的時間表達式時容易發(fā)生邊界錯誤,例如,時間表達式“3、4小時”,CRF識別的結果為“4小時”;并且,CRF識別結果中存在很多歧義問題導致的錯誤,例如,CRF標注的表達式“4.1分”表示得分4.1,并不是時間表達式;此外, CRF方法在訓練語料比較單一,類型不豐富的情況下識別結果召回率低。文獻[11]將時間詞表、詞性標注、位置信息等作為特征,采用CRF方法對中文時間表達式進行識別,日期型時間短語的識別結果F值為95.70%;文獻[13]采用了語義角色標注之后CRF識別的方法,識別結果F值達到85.6%。與它們的實驗結果相比,本文使用CRF識別時間單元,減小了識別粒度;增加了CRF錯誤標注去除部分,進一步提高CRF識別結果的精度;再制定了規(guī)則補充識別時間單元,提高了召回率;添加限制條件去除有歧義時間表達式,進一步提高識別精度,最后達到了F值為98.31%的較好效果。
規(guī)則的方法,精確率較高,但是召回率取決于規(guī)則的完善度,規(guī)則完善則召回率高,反之,則召回率低。制定規(guī)則需要大量人工,且領域適應性較差,對于不常見的時間詞識別效果不好。文獻[9]采用規(guī)則方法識別時間單元,再根據(jù)就近結合時間單元原則識別時間表達式,識別結果 F值為84.67%。單純采用規(guī)則方法識別時間表達式,容易產(chǎn)生錯誤規(guī)則,導致精確率不高,因此,本文采用統(tǒng)計方法識別時間單元,并且添加了時間表達式錯誤處理部分,進一步提高了識別時間表達式的精確率。
本文在衡量兩種方法的利弊后,采用兩者結合的辦法。在CRF識別時間單元的基礎上,根據(jù)觸發(fā)詞庫制定規(guī)則,補充識別時間單元,能有效地提高識別結果的召回率,彌補CRF由于訓練語料不全面導致的召回率低的問題,還能通過完善觸發(fā)詞庫較好的識別低頻時間單元。識別的效果一定程度上受時間觸發(fā)詞庫的規(guī)模影響,本文采用規(guī)則自動獲取訓練語料中的時間單元作為候選觸發(fā)詞,通過評價函數(shù)篩選之后,加入到觸發(fā)詞庫中,自動獲取觸發(fā)詞能節(jié)省人工,不斷更新、完善觸發(fā)詞庫,提高識別的召回率。在時間單元正確識別的基礎上,根據(jù)時間綴詞庫,制定規(guī)則識別時間表達式的邊界,能有效地解決時間表達式邊界識別的難題。
本文在TempEval2基礎上,結合中文時間表達式實際情況,對時間類型進行補充、修改,使得時間表達式類型更符合中文的特點。利用CRF與規(guī)則相結合的方法,識別出中文時間表達式。在新聞領域的F1值達到98.31%,取得了不錯的效果。時間單元的格式相對固定,轉(zhuǎn)化應用的領域時,只需要較少的變動(修改相應的時間觸發(fā)詞庫與時間綴詞庫)就能適用于其他領域,具有較好的可移植性。
基于測試語料自動獲取時間觸發(fā)詞的方法可以提高時間表達式識別的召回率,但是,不可避免的會帶來一些雜質(zhì),降低識別的正確率。評價函數(shù)能有效地去除一些明顯的雜質(zhì),閾值λ的設置需要經(jīng)過反復試驗,過高容易過濾掉很多正確的觸發(fā)詞,過低則會極大降低識別的正確率。另外,評價函數(shù)只能作用于有正確標準答案的測試語料,而這部分的語料資源較少,導致自動獲取的觸發(fā)詞較少,這也是本文不足的地方之一,需要進一步加以改進。
并非所有的時間表達式都含有觸發(fā)詞,存在不含有觸發(fā)詞的時間表達式,該類時間表達式的識別只能通過分析其語義確認, 例如, “2013底”。本文對于該類不含有觸發(fā)詞的時間表達式識別效果不好。下一步,我們將研究如何識別這類的時間表達式及中文時間表達式的規(guī)范化問題。
[1] 高霄云,楊建林.基于規(guī)則的中文時間詞和數(shù)詞的自動識別算法[J].現(xiàn)代圖書情報技術,2007(3): 46-50.
[2] Mingli Wu,Wenjie Li,Qin Lu,et al. A Chinese Temporal Parser for Extracting And Normalizing Temporal Information[C]//Proceedings of international Joint Conference on Natural Language Processing (IJCNLP),2005(3651): 694-706.
[3] 烏桐,周雅倩,黃萱菁等.自動構建時間基元規(guī)則庫的中文表達式識別[J].中文信息學報,2010,24(4): 3-10.
[4] 林靜,曹德芳,苑春法.中文時間信息的TIMEX2自動標注[J].清華大學學報(自然科學版),2008,48(1): 117-120.
[5] Ferro L, Gerber L, Mani I, et al.TIDES 2003 Standard for fhe Annotation of Temporal Expressions[EB/OL]. http://timex2.mitre.org.2003.
[6] Ferro L, Gerber L, Mani I, et al.TIDES 2005 Standard for fhe Annotation of Temporal Expressions[EB/OL]. http://timex2.mitre.org. 2005.
[7] Pawel Maqur,Robert Dale. A Rule Based Approach to Temporal Expression tagging[C] //Proceedings of the International Multiconference on Computer Science and Information Technology.2007,293-03.
[8] 趙紫玉,徐金安,張玉潔,等.規(guī)則與統(tǒng)計相結合的日語時間表達式識別[J].中文信息學報,2013,27(6): 192-200.
[9] 李君嬋,譚紅葉,王鳳娥.中文時間表達式及類型識別[J].計算機科學,2012,39(11A): 191-211.
[10] David Ahn,Sisay Fissaha Adafre,Maarten De Rijke.Towards Task-Based Temporal Extraction and Recognition[C]//Proceedings of Dagstuhl Workshop on Annotating, Extracting, and Reasoning about Time and Events,2005.
[11] 朱莎莎,劉宗田,付劍鋒,等.基于條件隨機場的中文時間短語識別[J].計算機工程, 2011,37(15): 164-167.
[12] 賀瑞芳,秦兵,劉挺,等.基于依存分析和錯誤驅(qū)動的中文時間表達式識別[J].中文信息學報,2007,21(5): 36-40.
[13] 劉莉,何中市,邢欣來,等.基于語義角色的中文時間表達式識別[J].計算機應用研究,2011,28(7): 2543-2545.
[14] Gerber L,Huang S,Wang X. Standard for fhe Annotation of Temporal Expressions, Chinese supplement draft[EB/OL].//timex2.mitre.org.2004.