楊 霞 黃陳英
[摘要]以2000年1月-12月《人民日報(bào)》大約80萬漢字語料為基礎(chǔ),利用基于隱馬爾可夫模型并結(jié)合統(tǒng)計(jì)來評價(jià)在真實(shí)文本中構(gòu)成中文姓名的能力,實(shí)現(xiàn)中文姓名的自動識別。實(shí)驗(yàn)測試表明;準(zhǔn)確率達(dá)91.5%,召回率為89.5%。
[關(guān)鍵詞]中文姓名識別隱馬爾可夫模型中文信息處理
中圖分類號:TP3文獻(xiàn)標(biāo)識碼:A文章編號:1671-7597(2009)0210064-01
一、引言
在漢語的書面表現(xiàn)形式中,詞與詞之間是沒有自然界限的,自動分詞就成了中文信息處理的基礎(chǔ)工程[1],而未登錄詞(人名、地名、機(jī)構(gòu)名、新詞和專業(yè)術(shù)語)的識別是漢語自動分詞的難題之一,其識別率和識別速度的高低將直接影響分詞的效果。中文姓名在未登錄詞中占很大比例,統(tǒng)計(jì)顯示:中文姓名占未登錄詞的15%[2],可見,中文姓名的自動識別對未登錄詞識別是極其重要的。傳統(tǒng)的姓名識別方式主要包括:基于統(tǒng)計(jì)[3-4]、基于語料庫[5]、結(jié)合決策樹等。
姓名識別也是一種分類問題,每一個字或者是或者不是姓名的一部分。近年來,隱馬爾可夫模型(HMM,Hidden Markov Models)在文字分類尤其是標(biāo)注中取得了很大的成功。本文以《人民日報(bào)》2000年的語料為基礎(chǔ),基于HMM建立了中文姓名的識別模型,開發(fā)了中文姓名自動識別實(shí)驗(yàn)系統(tǒng),經(jīng)測試準(zhǔn)確率達(dá)91.5%,召回率為89.5%。
二、基于HMM的中文姓名識別
(一)隱馬爾可夫的基本概念
隱馬爾可夫模型(Hidden Markov Model,HMM)是馬爾可夫鏈的一種,它的狀態(tài)不能直接觀察到,但能通過觀測向量序列觀察到每個觀測向量都是通過某些概率密度分布表現(xiàn)為各種狀態(tài),每一個觀測向量是由一個具有響應(yīng)概率密度分布的狀態(tài)序列產(chǎn)生。所以,隱馬爾可夫模型是一個雙重隨機(jī)過程具有一定狀態(tài)數(shù)的隱馬爾可夫鏈和顯示隨機(jī)函數(shù)集。HMM創(chuàng)立于20世紀(jì)70年代。80年代得到了傳播和發(fā)展,成為信號處理的一個重要方向,現(xiàn)已成功地用于語音識別,行為識別,文字識別以及故障診斷等領(lǐng)域。
HMM有5個組成部分,記為一個五元組(N,M,π,A,B),其中:N是模型狀態(tài)集的狀態(tài)數(shù)目;M是每個狀態(tài)可能的觀察值數(shù)目;π是初始狀態(tài)空間的概率分布;A是與時間無關(guān)的狀態(tài)轉(zhuǎn)移概率矩陣;B是給定狀態(tài)下,觀察值概率分布。
(二)模型框架
首先定義文字的屬性,在上下文中每一個詞只能有一個屬性,要么是姓名的一部分,要么就是非姓名。相應(yīng)地,在隱馬爾可夫模型的狀態(tài)中,對中文姓名的識別其實(shí)只包含兩種類型:中文姓名(Person-Name)與非姓名(Non-Person-Name)。另外,還有兩個特殊的狀態(tài),分別是句子起始狀態(tài)(start-0f-Sentence)和句子結(jié)束狀態(tài)(End-0f-Sentence)。我們使用一個二元統(tǒng)計(jì)語言模型來計(jì)算詞在每個區(qū)域內(nèi)(name-class)的似然值。
本系統(tǒng)中所用的模型包括三個部分:(1)模型選擇Name-class;(2)模型產(chǎn)生Name-class內(nèi)部的第一個詞;(3)模型產(chǎn)生Name-class內(nèi)部的所有其它詞。
相應(yīng)的公式分別是:
其中Nc表示當(dāng)前的Name-class,NC-I表示前一個Name-class,w-I表示前一個類中最后一個字或者詞,wfirst表示當(dāng)前類中的第一個字或者詞。
Name-class內(nèi)部產(chǎn)生所有非第一個詞的模型:
還有一個特殊的詞“+end+”,在Name-class內(nèi)部如下公式計(jì)算最后一個詞的概率:
其中,c()表示事件在訓(xùn)練數(shù)據(jù)中出現(xiàn)的次數(shù)。當(dāng)然統(tǒng)計(jì)的時候需要用某種平滑方法例如Good-Turning來解決數(shù)據(jù)稀疏的問題。
(三)識別
中文姓名識別的任務(wù)可歸結(jié)為:給定一個句子W=wlw2…Wn2,要求找出NC=NCINC2…NCn使得P(Nclw)最大,其中NCi是詞,它的狀態(tài)有兩種:中文姓名PN或NPN。
由貝葉斯法則,P(Nc|w)=P(NC,W)/P(w),對于給定的句子,P(W)是固定的,所以只需要考慮P(NC,w),展開即如公式(1)-(4)所示。這樣,姓名的提取可以看成特殊的分詞過程,系統(tǒng)在解碼或識別過程中采用Viterbi束搜索算法。
用一個各態(tài)遍歷HMM作為產(chǎn)生句子的模型,稱為PNHMM。該模型有四種狀態(tài),PN,NPN,Start-Of-Sentence和End-0f-Sentence。使P(Nc,w)最大化可轉(zhuǎn)化為P(Path,W)最大化,Path=S1S2…Sn是狀態(tài)轉(zhuǎn)移路徑。
PNHMM產(chǎn)生一個句子的過程如圖1所示。
三、實(shí)驗(yàn)結(jié)果及討論
分詞采用的也是Viterbi束搜索算法,用來訓(xùn)練的語料為2000年《人民日報(bào)》約80萬字;從中文網(wǎng)站上下載50篇文章作為測試系統(tǒng)性能的測試數(shù)據(jù),總共有2000句話,大約有5萬字。其中含有中文姓名304個。統(tǒng)計(jì)結(jié)果,共識別出中文姓名272個,未識別出的中文姓名32個,召回率89.5%。識別為中文姓名的共有297處,誤報(bào)為19個,準(zhǔn)確率91.5%。
識別錯誤的例句:
1.候選人為何齊魯。(漏識別)
2、受聘于張氏律師事務(wù)所。(錯召回)
基于HMM的各態(tài)遍歷過程對中文姓名進(jìn)行識別,可以提高識別的精度,但仍存在一些需要解決的問題:(1)構(gòu)造模型的語料有限,中文姓名在真實(shí)文本中的覆蓋率不完全,對識別產(chǎn)生很大影響;(2)對于那些小概率稀疏事件沒有較好考慮,造成識別錯誤;(3)外國人名和中文姓名有些具有相似的語言特征,在識別中容易引起錯誤。