未知詞擷取作法

馬偉雲

中研院資訊科學所詞庫小組

傳統的中文斷詞系統碰到最大的瓶頸就是未知詞(辭典中沒有的詞)的擷取,統計上一篇文章當中 約有3%~5%的詞彙是未知詞,新聞類的文章更是遠高而此。而某些類型未知詞的詞構非常複雜,也不 一定具有強烈的統計特性。因此未知詞的擷取問題一直是中文語言處理上一個重要且困難的研究課題。

前人的研究主要是針對特定類型的詞彙(如人名、地名、組織名)以詞構分析或是language model去 擷取他們。獲致不錯的成果。不過仍有許多未知詞的類型更加的複雜且多變,例如像"泛藍"、"泛綠"、"拉法葉"、"矽島"、"非典(SARS)"...等等。 這些詞彙往往扮演了文章中的關鍵角色必須加以擷取辨認。 傳統的作法是利用語料庫(corpus)的統計訊息(such as co-occurrence、mutual information、dice、t-socre...)想要一網打盡這些 林林總總的未知詞(通常侷限在2字詞或3字詞)。其基本假設是認為那些統計訊息值較高的pattern,被認為有較強的統計特性, 有較大的可能是一個未知詞。這樣子的假設雖然合理,不過在實際成效上卻仍然不盡人意,主要原因我們認為有 下面幾點:

1.統計的材料以語料庫為主

前人作法統計上大都以語料庫統計為主,文章本身的統計為輔甚或根本沒有利用。而我們知道一個未知詞常常 是同篇文章中重要的主題,出現次數往往很頻繁,若是以語料庫統計為主的作法很容易稀釋它本來在文章中的 強烈統計特性。因此,我們認為應以文章本身的統計為主,而以語料庫統計為輔,(一種作法是當某pattern在文章中統計特性或 出現次數已經很強烈,則無必要再參考語料庫,當某pattern在文章中統計特性不強,再參考語料庫看看有沒有扳回的機會) 這樣以文章統計為主的設計對於新聞這種隨日期而發展事件的文章顯得更加的適合:假設今天早報第一次報導"非典(SARS)"的消息,之前 從未有這樣的報導出現過,也沒有"非典"這個詞彙,但在這篇報導"非典(SARS)"的消息的文章當中,"非典"則出現相當多次。 因此善用文章本身的統計訊息是本作法的一個重要精神。在展示系統當中,我們只利用輸入的文章作為唯一的統計材料。

2.統計特性強的pattern不一定是詞彙,而是片語或是不合理的pattern

這樣的問題前人已經發現,一種作法是利用stop word list(如"的","是"...)去過濾那些包含stop word的pattern,這樣的作法合理但 仍嫌不足。事實上,我們要處理的根本問題其實應該是這樣子的:以一個單字(初步斷詞後)來說,它究竟是未知詞的詞素還是獨用的詞彙呢? 過濾那些包含stop word的pattern的作法,就是認為這些stop word必定是獨用的詞彙而永遠不可能是未知詞的詞素,所以將包含stop word的pattern過濾掉。 不過單靠這樣的作法,對那些未列入stop word list的單字就無法判斷,因為在不同的上下文中兩者都有可能, 本作法利用單字(初步斷詞後)的上下文判斷此單字究竟是未知詞的詞素還是獨用的詞彙[2]。若是某一個pattern就算具有強烈的統計特性,但是其所有的組成元件 都是判定為獨用詞彙的話,我們仍然不擷取這樣的pattern。

3.統計特性低的未知詞不容易被擷取出來

前人對於此問題通常只能針對特定類型的未知詞,分析其詞構或其language model來解決這樣的問題, 而無法提出一般性的解法,針對所有統計特性低的未知詞一網打盡。針對這樣的缺點,本作法除了針對特定類型未知詞作專屬的詞構分析與 language model之外,更嘗試將所有種類的未知詞的詞構以context free grammar表示出來。這個context free grammar制訂的最主要原則 在於:任何一個擷取出來的未知詞在此context free grammar下,其詞構當中至少有一個組成元件為判斷為未知詞詞素的單字。 利用這個context free grammar搭配一個簡單的bottom-up merging algorithm,能夠解決大部分統計特性低的未知詞擷取問題[4]。

目前我們的作法依序可分為以下幾個步驟:

  1. 初步斷詞
  2. 未知詞偵測
  3. 中國人名擷取
  4. 歐美譯名擷取
  5. 複合詞擷取
  6. bottom-up merging algorithm
  7. 重新斷詞

經過初步斷詞(我們使用連續三詞的長詞優先演算法[1])後,絕大多數的未知詞會被斷成較小的單位,即此未知詞的詞素,我們希望在接下來的步驟中, 將這些詞素重新組合成未知詞。我們觀察到99%的未知詞其詞構當中至少會有一個單字的詞素。因此我們希望利用未知詞偵測這個步驟去判定初步斷詞 後的單字哪些是詞素,哪些是獨用詞彙[2](在展示系統當中,判定為詞素的單字會標記一個問號),之後的擷取步驟再根據這樣的資訊,把處理的焦點放在這些判定為詞素的單字身上,看看是否能和其相鄰的token來合併成未知詞。 我們針對一些特定類型的未知詞,如:中國人名,歐美譯名,複合詞等作了詞構分析及簡單的language model[3],剩餘的 其它未知詞則交給bottom-up merging algorithm做最後的擷取動作[4]。目前為止,我們所擷取出來的pattern稱為"未知詞候選者",參考這些"未知詞候 選者"搭配原始的辭典再做一次斷詞可得到最後的結果。重新斷詞的目的是在於:有時某一個未知詞可能在文章某處並沒有擷取出來,但是在文章的 另一處被擷取出來,所以重新斷詞可以使兩處都能有正確的斷詞結果。另外,未知詞候選者彼此間有時會有covering或overlapping這種衝突的現象,重新斷詞 能夠幫助我們在這些有衝突的未知詞候選者之中挑選出一個正確答案作為最後確定的未知詞。

在展示系統當中,您可以輸入一篇文章(最簡單的方法是copy一篇新聞),系統就會做未知詞擷取以及包含未知詞的斷詞標記動作。 最後會把結果秀出,秀出的結果不但包含了未知詞列表以及包含未知詞的斷詞標記結果,還有程式運作的過程,包含演算法中每一個步驟所相對應的結果。

除了此web版本的展示系統之外,詞庫小組也已開發完成了windows平台下的執行程式與API(VC與BCB環境)以及linux平台下的執行程式。

相關文章

[1] Chen, K.J. & S.H. Liu, "Word Identification for Mandarin Chinese Sentences," Proceedings of COLING 1992, pages 101-107

[2] Chen, K.J. & Ming-Hong Bai, "Unknown Word Detection for Chinese by a Corpus-based Learning Method," International Journal of Computational linguistics and Chinese Language Processing, 1998, Vol.3, #1, pages 27-44 [PS]

[3] Chen, K.J. & Wei-Yun Ma, "Unknown Word Extraction for Chinese Documents," Proceedings of COLING 2002, pages 169-175 [PDF] [PS]

[4] Ma Wei-Yun & K.J. Chen, "A bottom-up Merging Algorithm for Chinese Unknown Word Extraction," Proceedings of ACL workshop on Chinese Language Processing 2003, pages 31-38 [PDF] [PS]