繁體中文文本中對於日文人名及異體字的處理策略繁體中文文本中對於日文人名及異體字的處理策略 林川傑+、詹嘉丞*、陳彥亨+、鮑建威+ 國立臺灣海洋大學資訊工程學系 Department of Computer Science and Engineering National Taiwan Ocean University {cjlin, M98570019, M98570020}@mail.ntou.edu.tw+, jjt@cyber.cs.ntou.edu.tw* 摘要 本論文提出一個可於進行繁體中文文章斷詞時,處理非繁體中文詞彙的方法包括以日 文漢字或中文書寫的日文人名,或是以異體字書寫的同義詞等處理人名時,我們提出 了姓名組合機率模型處理日文人名時,我們也提出一個異體字對應的方法,可將日文 姓氏及名用字對應至繁體中文用字這方法甚至可以處理同一句子中同時出現日文及繁 簡中文書寫方式的情形在加入各種特殊類別以及中日人名處理方法後,斷詞效能 F-measure 由 94.16%提昇至 96.06%另外對 109 篇標有日文人名的中文新聞文章進行 斷詞實驗,測試集裡 862 個日文人名被成功斷成詞的比例為 83.18%。
論文中亦針對以 異體字書寫的中文詞提出了一套可行的處理方式 關鍵詞:中文斷詞、日文人名判斷、異體字 Keywords: Chinese word segmentation, Japanese name identification, variant form 一、緒論 中文斷詞在中文語言處理中,是一項重要而且必須的技術然而中文文章裡日文人名及 異體字的處理卻鮮少被研究以往繁體中文是採 BIG5 編碼的時候,要寫出一個日文人 名,書寫者常以其對應的繁體中文字元來改寫像是原本日文漢字寫做「滝沢秀明」 , 在繁體中文文章中就會寫做「瀧澤秀明」 Unicode 編碼計畫出現後,就可出現多種語 言字元出現在同一篇文章中的情形各地的漢字字型多有不同,像「圖」這個字,大陸 簡體字做「图」 ,而日文則是寫做「図」 這樣書寫習慣在中文斷詞處理中有什麼影響, 在過去的研究中很少被提及本論文便想探討這些漢字對應情形的處理 中文斷詞的研究由來已久,現有的斷詞系統多為規則式或是機率模型的系統常用 斷詞規則像是長詞優先規則 , 或是少詞優先規則 機率模型則常用馬可夫模型的 unigram 模型或是 bigram 模型等等,例如[1]。
斷詞候選詞的集合多為字典詞彙,或是以大型語 料庫中蒐集詞彙有的系統會使用構詞規則來產生部份的合法詞彙 [2],像是一個名詞 後面加上 “們” 也是合法的詞 (例如 “學生們”、“家長們”)Wu and Jiang [3] 甚至結合 文法剖析來進行斷詞 除了斷詞歧義性之外,未知詞的處理也是一個重要課題除了罕見詞彙 (像是 “躉 售”)、專門術語 (像是化學名詞 “三聚氰胺”) 以及新發明詞彙 [4] (像是 “新流感”) 之 外,具名實體 (named enitiy) 如人名、地名、組織名等的辨識技術也是研究的重點之一, 例如 [5]近來斷詞研究也探討了自動機器學習的方法,支持向量機 (SVM) [6]、條件 隨機域 (CRF) [7][8] 都是曾應用在斷詞研究的機器學習方法 123較少有研究提及在繁體中文文章中處理非繁體中文詞彙的議題比較相關的研究是 探討不同區域中文詞彙使用上的差異對斷詞帶來的影響,例如使用台灣地區文章做為訓 練資料,拿來對大陸或是香港地區文章做斷詞的可能性,或是擴充字典來涵蓋各地域及 各領域的詞彙等等 [9] 本論文的問題定義為,當中文文章中出現非繁體中文詞彙時,例如 “滝沢秀明” 這 類以日文漢字書寫的日文人名、以 “瀧澤秀明” 對應中文漢字書寫的日文人名,或是 “裡面”、“裏面” 這類異體同義字,甚至是繁簡中文夾雜的文本,斷詞時能將正確候選 詞判斷出來,以利斷詞成功。
除第二節介紹斷詞系統基本架構外,第三節為中日文人名 處理模組,第四節說明中日漢字及異體字對應方式,第五節為實驗結果以及討論,第六 節為結論以及未來展望 二、斷詞策略 本文重點在探討斷詞時非繁體中文詞彙的處理策略 , 因此斷詞系統僅採用基本的 bigram 機率模型,旨在驗證各種策略對於斷詞效能的改善情形候選詞除查詢已知詞列表外, 另設計各種特殊類別 (如日期、數字等) 判斷規則來處理較具格式的詞彙注意同一候 選詞可能同時隸屬於多種特殊類別或是已知詞列表中的普通詞如果在某個位置沒有找 到任何長度的候選詞,系統會將該位置的字元視為單字詞做為候選詞接著對每一種斷 詞組合計算生成機率值,最高者做為最後的輸出結果 (一) 特殊類別候選詞 許多類別例如數詞、時間、日期、人名等等,其可能詞彙非常多樣,甚至可能是無限大 的集合,字典不可能收錄所有詞彙,所以我們為這些類別撰寫了判斷規則來發掘輸入句 中這類候選詞本系統所處理之特殊類別包含了地址 (可依不同國家擴增)、日期、時 間、金錢、百分比、分數、網路 (IP、網址與 e-mail 地址等)、數字、外文字串及中日 人名字串中出現之英數字可為全形、半形字以及漢數字 (一二…壹貳…)。
外文字串 依 Unicode 碼區可任意加入其他非拉丁字母之外文字集,如韓文、希臘文、阿拉伯文等 等因為各外文多以空白為斷詞符號,便可將連續出現之同一外語字串合而為一詞因 為本論文重點不在此,各判斷規則不做說明,僅人名的判斷規則會在第三章中介紹 (二) 二元機率模型 產生斷詞組合之後,下一步要計算各組合的生成機率值 P(S)機率值的計算方法很多, 本論文使用了馬可夫的 bigram 機率模型,公式為: )|()()...( 21121 NiiiNwwPwPwwwSP (公式 1) 其中 P(wi) 為詞 wi的 unigram 機率,而 P(wi | wi-1) 為詞 wi出現在詞 wi-1後面的機率為 了避免機率值連乘會過小而產生 underflow 現象,習慣上以等號兩邊取其 log 值來計算: NiiiNwwPwPwwwSP 21121)|(log)(log)...(log (公式 2) Bigram 模型訓練時因為需要兩個中文詞緊鄰出現 , 容易有資料稀疏 (data sparseness) 的 問題,也就是說大部份的中文詞 bigram 都無法訓練得到機率值。
我們採用的解決方法 是 backoff 至 unigram 模型 , 也就是當 這個 bigram 不曾出現在訓練語料中時 , P(wi | wi-1) 的值改由 αP(wi) 來估算 124若是 bigram 中有特殊類別詞彙時,其 bigram 機率改以類別機率來計算假設 wi 屬特殊類別 S,則機率計算方式改為: )|()|()|()|()|(1111SwPSwPwSPwwPwwPiGiiiiii(公式 3) 其中 P(S | wi-1) 與 P(wi+1 | S)表示 S 類別與其他詞彙之 bigram 機率,PG(wi | S) 表示類別 S 中出現 wi的機率,除人名外 (請見第三節),各特殊類別值均設為 1 至於類別 bigram 機率模型,地址、金錢、編號、百分比、分數、網路和外文這幾 類候選詞的邊界非常明確,而且不常有歧義性出現,因此我們完全信任以這些規則所判 斷出來的候選詞這幾類詞的類別 bigram 機率值均設定為 1,表示出現這幾類候選詞的 時候就會優先採用該候選詞斷法 數字字元倒是常出現在非數詞彙中,像是 “一切”、“萬一”,其類別機率需由訓練 語料統計而得。
邊界明確的日期時間,如 “中華民國九十八年六月二十一日”,類別機 率可設為 1若是有歧義現象者,像 “三十年” 可能是指 “民國三十年” 或是 “三十個 年度”,它們的類別機率也採用訓練語料統計所得者 在訓練機率模型之前,先以特殊類別判斷規則至訓練集中找尋特殊類別詞彙的出 現,將之取代為所屬類別標籤,再用來訓練 bigram 機率模型找尋時會佐以詞性資訊, 例如數字詞性一定要是 Neu,日期時間一定是 Nd 等地址、金錢這類在原訓練集中會 被斷成好幾個詞的情形,則是採多詞合併的比對策略 類別機率的作法和 Gao et al. [2] 的做法很類似,但不同的是,他們將所有字典詞視 為一個類別,由各種構詞規則所衍生出來的詞也算同一種類別與我們各種特殊類別各 有其類別機率的做法十分不同 (三) 降低計算量之演算法 當句子長度太長、或是候選詞數目太多時,會產生太多的斷詞組合,有時會高達十萬組 以上,機率計算上相當耗時甚至不可行為了減少計算時間,我們使用 beam search 演 算法來簡化計算的步驟,演算法的精神描述如下 令原句中有 N 個字,則建立 N 個 priority queues,表示為 record[i],用來記錄到目 前為止,系統所找到涵蓋輸入句前 i 個字元的斷詞組合中分數最高的前 k 名。
對於每個 由位置 i+1 開始的候選詞 w (令其長度為 b),分別與 record[i] 中 k 種斷詞方式結合,並 計算 c1…ci+1…ci+b的斷詞機率值,再與 record[i+b] 佇列中各斷詞組合機率值比較如 能排進前 k 名,就將最小機率者擠出佇列 record[i+b] 斷詞開始時各 priority queue 均清空,i 由 0 開始反覆進行上述步驟,直至 N 個位置 候選詞均被考慮完為止最後儲存在 record[N] 的第一名即為機率最高的組合,做為輸 入句的斷詞輸出結果本論文中 k 值設為 20 三、中日文人名處理 本節先討論如何在繁體中文文章中找出以日文漢字書寫的日文人名候選詞,至於找出以 繁體中文對應字書寫日文人名的方法則留待第四、(二)節再來討論日文人名的斷詞策 略來自於中文人名的處理經驗,因此本節會先介紹產生中文人名候選詞的方法,再說明 日文人名的處理方式 125(一) 中文人名處理 產生中文人名候選詞時,任何可能的中文姓名組合都可以當作中文人名的候選詞在計 算機率時,除了估算中文字能做為姓或名的機率外,我們還估算了各種姓名組合出現的 機率值在中文文章中可能出現的中文人名組合型式如表一所列: 表一、中文人名組合型式 組合型式 可能組合 範例 組合型式 可能組合 範例 只有姓 單姓 複姓 林 老師 諸葛 先生 只有名 單名 雙名 慧 國雄 姓+名 單姓+單名 單姓+雙名 雙姓+單名 雙姓+雙名 複姓+單名 複姓+雙名 陳登 王小明 張李娥 張陳素珠 諸葛亮 司馬中原 辨識中文人名首先要有中文姓氏列表,本論文引用中文維基百科的兩個詞條「中國姓氏 列表」1與「複姓」2,還有內政部戶政司3、中華百家姓4、千家姓5等網站共蒐集得 2,471個姓氏。
至於中文人名的名字部份,因為人名可以隨便取,所以我們將所有的漢字都當 成名用字的可能集合 實際在提出可能的中文人名的候選詞時,並不考慮僅有單名而沒有姓的組合,原因 是避免把每個中文單字都判斷成單字人名而大幅降低斷詞的效能姓氏的雙姓部份也只 考慮單姓+單姓的組合,不考慮複姓+單姓或是複姓+複姓這兩種組合,因為並不曾見過 )|()|(max)|( ,CHnameGCHnameGSPwPSwP (公式 4) 一個中文字串w成為中文姓名的機率定義如公式 4 所示,其中 說明和性別相關的機率 模型,分別有男子名和女子名兩種 是w可以符合的一種姓名組合,用 = ‘xxxx’ 的 格式來表示,以 ‘s’ 表示單姓,‘dd’ 表示複姓,‘n’ 表示人名裡單個字,例如雙姓+雙 名的組合就表示為 = ‘ssnn’,複姓+單名的組合就表示為 = ‘ddn’姓名生成機率姓名生成機率P (w|) 就是在性別 的姓名組合 情形下生成中文人名w的機率姓名組合機。