李 玲
(中北大學(xué) 電子與計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,山西 太原 030051)
對(duì)于中文來說,中文字符串可逐步細(xì)化為段、句、詞、字。字、句和段能通過明顯的標(biāo)點(diǎn)符號(hào)分界符來簡單劃界,也易于讓機(jī)器“看”,只有詞需要用分詞算法來劃分,即中文分詞?,F(xiàn)有的分詞算法可分為3大類:基于字符串匹配的分詞方法、基于理解的分詞方法和基于統(tǒng)計(jì)的分詞方法[1]?;谧址ヅ涞姆衷~方法是按照一定策略將待分析漢字串與詞典中的詞條進(jìn)行匹配,若在詞典中找到某個(gè)字符串,則匹配成功。該方法需要確定三個(gè)要素:詞典、掃描方向、匹配原則[2]?;谧址ヅ涞姆衷~方法原理簡單,實(shí)現(xiàn)相對(duì)容易,并能達(dá)到較高的準(zhǔn)確度,是最常用的分詞策略,缺陷是容易產(chǎn)生歧義切分。詞典是字符串匹配的分詞方法中很重要的基礎(chǔ)部分,因此該方法又稱為基于詞典的分詞方法。
目前有三種典型的中文自動(dòng)分詞詞典機(jī)制,分別是基于整詞二分的詞典機(jī)制、基于TRIE索引樹的分詞詞典機(jī)制和基于逐字二分的分詞詞典機(jī)制[3]。整詞二分法是一種廣為使用的分詞詞典機(jī)制[4]。本設(shè)計(jì)采用一種雙詞典機(jī)制,它由改進(jìn)的整詞二分法標(biāo)準(zhǔn)詞典、輔助的臨時(shí)詞典和臨時(shí)高頻詞表三部分組合而成。
2.1.1 首字散列表
詞條首字用散列表來存儲(chǔ)。國家標(biāo)準(zhǔn)規(guī)定,漢字編碼中漢字的區(qū)位碼值從16區(qū)開始到87區(qū),每區(qū)94位,標(biāo)識(shí)6 763個(gè)漢字。即每個(gè)漢字都有唯一的區(qū)位碼。漢字的機(jī)內(nèi)碼通過編程很易獲取,又有機(jī)內(nèi)碼與區(qū)位碼換算公式如下:
機(jī)內(nèi)碼高位=區(qū)碼+0xA0,
機(jī)內(nèi)碼低位=位碼+0xA0。
若區(qū)位碼表示為十六進(jìn)制數(shù),其中區(qū)碼為區(qū)位碼的前兩位,位碼為區(qū)位碼的后兩位。據(jù)此特點(diǎn),可用散列表方式來存儲(chǔ)詞條首字,實(shí)現(xiàn)首字的迅速定位。根據(jù)機(jī)內(nèi)碼與區(qū)位碼及數(shù)組特點(diǎn),設(shè)散列函數(shù)為(ch1-0xB0)*94+ch2-0xA1,其中ch1為機(jī)內(nèi)碼高位,ch2為機(jī)內(nèi)碼低位。首字結(jié)點(diǎn)設(shè)計(jì)見表1。
表1 首字結(jié)點(diǎn)結(jié)構(gòu)表
2.1.2 詞索引表
根據(jù)統(tǒng)計(jì),漢語詞語中二字詞占大多數(shù),有3萬多,其次是三字詞和四字詞,都是3千多,五字詞及以后則很少。所以二、三、四字詞的查詢效率直接影響分詞速度。為提高查詢效率,本詞索引表結(jié)點(diǎn)具體設(shè)計(jì)見表2。
表2 詞索引表結(jié)點(diǎn)結(jié)構(gòu)表
若要匹配的詞為二字詞,從“二字詞起始位置”到“三字詞起始位置”間進(jìn)行查詢。以此類推。
2.1.3 標(biāo)準(zhǔn)詞典正文
標(biāo)準(zhǔn)詞典正文為線性表結(jié)構(gòu),存儲(chǔ)每個(gè)詞條中除首字外的字串,以及通過語料庫學(xué)習(xí)后統(tǒng)計(jì)出的該詞條的總詞頻。字串與總詞頻間用“/”間隔,字串間用空格作為間隔。
對(duì)同一首字的詞條,首先按詞條的字?jǐn)?shù)順序排列,同長度詞條則按次字的區(qū)位碼排序,以此類推。首字已在首字散列表中確認(rèn),故不需要再存儲(chǔ)。例如:首字為“中”的標(biāo)準(zhǔn)詞典詞索引表及部分正文如圖1所示。其中,各字的區(qū)位碼見表3。
在人們用語言進(jìn)行交際活動(dòng)時(shí),語言成分的使用呈現(xiàn)一定的規(guī)律性,因此可以采用統(tǒng)計(jì)方法對(duì)其進(jìn)行研究統(tǒng)計(jì),這就是互信息原理。從形式上看,詞是穩(wěn)定的字的組合。因此在上下文中,相鄰字出現(xiàn)的次數(shù)越多,就越可能構(gòu)成一個(gè)詞。因此字與字相鄰共現(xiàn)的頻率能夠較好地反映成詞的可信度[5]。基于此論斷,本設(shè)計(jì)中增加一個(gè)臨時(shí)詞典,用于存儲(chǔ)待分析文本中出現(xiàn)的二字詞、三字詞、四字詞及其在本文的詞頻,以便處理分詞歧義。我們所用的絕大部分詞都是四字以下詞,所以不考慮四字以上出現(xiàn)的新詞。
臨時(shí)詞典結(jié)構(gòu)類似標(biāo)準(zhǔn)詞典,仍使用首字散列方式設(shè)計(jì),但不再需要詞索引表,直接是詞典正文,首字結(jié)點(diǎn)結(jié)構(gòu)見表4。該首字散列表格式類似標(biāo)準(zhǔn)詞典格式,區(qū)別在于最后一個(gè)數(shù)據(jù)項(xiàng),此處為指向以該字為首的詞典正文第一位。臨時(shí)詞典的詞典正文結(jié)構(gòu)見表5。
圖1 “中”詞索引表結(jié)點(diǎn)結(jié)構(gòu)及詞典正文結(jié)構(gòu)圖
表3 字區(qū)位碼表
表4 臨時(shí)詞典首字結(jié)點(diǎn)結(jié)構(gòu)表
表5 臨時(shí)詞典的詞典正文結(jié)構(gòu)表
比如以“諾”為首的字,其詞典正文為“2基102/3基亞102/4基亞手27/”。說明待分析文本中以“諾”為首的詞有“諾基”、“諾基亞”、“諾基亞手”三個(gè)詞?!爸Z基”詞長為2,詞頻為102;其他以此類推。
掃描臨時(shí)詞典,若某詞的出現(xiàn)頻率極高,詞密度極大,且未被標(biāo)準(zhǔn)詞典收錄,則將該詞增入標(biāo)準(zhǔn)詞典及用于構(gòu)造標(biāo)準(zhǔn)詞典的原始數(shù)據(jù)中,總詞頻為該詞在本文本中詞頻。詞密度公式為:
其中:wrddt為詞密度;wordlen為詞長度;f為詞頻;txtlen為待劃分文本長度。
通過統(tǒng)計(jì),本設(shè)計(jì)將詞密度臨界值設(shè)置為0.5%。若某詞的詞密度≥0.5%。則將其加入標(biāo)準(zhǔn)詞典中。
為提高分詞正確率,加入一個(gè)臨時(shí)高頻詞表。將臨時(shí)詞典中詞密度≥0.1%的詞存入一個(gè)高頻詞表中,以便分詞時(shí)使用。高頻詞表為線性表。
本設(shè)計(jì)使用基于詞典機(jī)制的分詞算法,它的核心思想是切分出單字串,然后和詞庫進(jìn)行比對(duì),如果是一個(gè)詞就記錄下來,否則通過增加或者減少一個(gè)單字,繼續(xù)比較,直到還剩下一個(gè)單字則終止,如果該單字串無法切分,則作為未登錄處理。按照掃描方向不同,該方法分為正向匹配和逆向匹配。本設(shè)計(jì)同時(shí)使用正向最大匹配算法和逆向最大匹配算法即雙向最大匹配算法進(jìn)行分詞。
3.2.1 匹配法無關(guān)歧義處理
漢語句子中,連續(xù)的三個(gè)單字概率非常小。因此,對(duì)于一個(gè)字串,若分詞結(jié)果中存在連續(xù)的三個(gè)或三個(gè)以上單字,意味著可能出現(xiàn)分詞錯(cuò)誤。這時(shí),對(duì)這些連續(xù)單字組成的詞,查詢臨時(shí)高頻詞表。若存在,將其劃分為詞。
3.2.2 匹配法相關(guān)歧義處理
對(duì)于一個(gè)字串,若正向最大匹配法與逆向最大匹配法分析的結(jié)果不同,說明出現(xiàn)歧義,在此使用臨時(shí)詞典機(jī)制與標(biāo)準(zhǔn)詞典協(xié)同對(duì)其處理。首先,獲取兩種匹配法分詞結(jié)果不同處的詞語(為說明方便,用A、B兩字符模糊代表兩種匹配法);然后根據(jù)分詞結(jié)果不同處的詞語的特點(diǎn)按下述方式處理:①分別查詢“分詞結(jié)果不同處的詞語”是否存在于臨時(shí)高頻詞表中,若存在,則將含有高頻詞的分詞結(jié)果作為最終分詞結(jié)果,歧義處理結(jié)束,若不存在,轉(zhuǎn)下一步處理;②對(duì)“分詞結(jié)果不同處的詞語”查詢臨時(shí)詞典,若A匹配法中分詞結(jié)果不同處的某詞的詞頻較B匹配法中所有分詞結(jié)果不同處的詞頻都呈量級(jí)差別,則取A匹配法的分詞方式為最終結(jié)果,歧義處理結(jié)束,否則,轉(zhuǎn)下一步處理;③對(duì)“分詞結(jié)果不同處的詞語”查詢標(biāo)準(zhǔn)詞典,若A匹配法中所有不同詞的詞頻和大于B匹配法中所有不同詞的詞頻和,則取A匹配法的分詞方式為最終結(jié)果,歧義處理結(jié)束。
以上述理論為基礎(chǔ),在VC++6.0開發(fā)環(huán)境下,實(shí)現(xiàn)了一個(gè)中文分詞系統(tǒng)。這里應(yīng)用3個(gè)txt文檔作為測試數(shù)據(jù),分別采用本雙詞典機(jī)制中文分詞系統(tǒng)和普通詞典機(jī)制的中文分詞系統(tǒng)對(duì)3個(gè)txt文檔進(jìn)行分詞,分詞結(jié)果統(tǒng)計(jì)見表6。
表6 分詞結(jié)果統(tǒng)計(jì)表
由分詞結(jié)果統(tǒng)計(jì)可見,本雙詞典機(jī)制中文分詞系統(tǒng)準(zhǔn)確率較高,但花費(fèi)時(shí)間要多一些。準(zhǔn)確率較高說明雙詞典機(jī)制在處理歧義上起到了一定的作用,是合理有效的一種方法,這是我們可繼續(xù)深入研究的一個(gè)切入點(diǎn)。時(shí)間花費(fèi)多與分詞過程中雙向最大匹配算法的使用有很大關(guān)系,因此,在不影響準(zhǔn)確率的前提下,如何通過改雙向最大匹配算法為逆向最大匹配算法從而提高本分詞算法的時(shí)間性能將是后續(xù)要探討的課題。
[1]付年鈞,彭昌水,王慰.中文分詞技術(shù)及其實(shí)現(xiàn)[J].軟件導(dǎo)刊,2011,10(1):18-21.
[2]奉國和,鄭偉.國內(nèi)中文自動(dòng)分詞技術(shù)研究綜述[J].圖書情報(bào)工作,2011,55(2):43-47.
[3]柴寶杰.中文自動(dòng)分詞若干技術(shù)的研究[D].秦皇島:燕山大學(xué),2007:56-57.
[4]費(fèi)洪曉,胡海苗,鞏燕玲.基于Hash結(jié)構(gòu)的機(jī)械統(tǒng)計(jì)分詞系統(tǒng)研究[J].計(jì)算機(jī)工程與應(yīng)用,2006,42(5):163-165.
[5]朱曉娟,陳特放.詞頻統(tǒng)計(jì)中中文分詞技術(shù)的研究[J].儀器儀表用戶,2007(3):78-79.