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