作者: hankcs(大快高級(jí)研究員 hanlp項(xiàng)目負(fù)責(zé)人)
談起簡(jiǎn)繁轉(zhuǎn)換,許多人以為是小意思,按字轉(zhuǎn)換就行了。事實(shí)上,漢語歷史悠久,地域復(fù)雜,發(fā)展至今在字符級(jí)別存在“一簡(jiǎn)對(duì)多繁”和“一繁對(duì)多簡(jiǎn)”,在詞語級(jí)別上存在“簡(jiǎn)繁分歧詞”,在港澳臺(tái)等地則存在“字詞習(xí)慣不同”的情況。為此,HanLP新增了“簡(jiǎn)體”“繁體”“臺(tái)灣正體”“香港繁體”間的相互轉(zhuǎn)換功能,力圖將簡(jiǎn)繁轉(zhuǎn)換做到極致。
關(guān)于這些漢語語言上的詳情,請(qǐng)參考郭家寶的OpenCC項(xiàng)目。HanLP整合了該項(xiàng)目的詞庫(kù),用原生的AhoCorasickDoubleArrayTrie算法實(shí)現(xiàn)了各語言分支的轉(zhuǎn)換。對(duì)于簡(jiǎn)繁轉(zhuǎn)換模塊來說,算法都是類似的,最寶貴的地方在于詞庫(kù),在此向OpenCC表示敬意和感謝!
快速上手
一個(gè)Demo
輸出
說明
注意在舊版HanLP中,簡(jiǎn)體“草莓”被轉(zhuǎn)換為“士多啤梨”。后來有用戶告訴我“士多啤梨”是香港的用法,不屬于通俗意義上的“繁體”,所以在新版中去除了這一轉(zhuǎn)換。而“臺(tái)灣”“程式碼”是臺(tái)灣地區(qū)的用法,“臺(tái)灣”“代碼”則是香港地區(qū)的用法,所以
1、System.out.println(HanLP.t2tw("hankcs在臺(tái)灣寫代碼"));
2、System.out.println(HanLP.t2hk("hankcs在臺(tái)灣寫代碼"));
分別輸出了
1、hankcs在臺(tái)灣寫程式碼
2、hankcs在臺(tái)灣寫代碼
這里面存在微妙的不同。
基本定義
簡(jiǎn)體
HanLP中的簡(jiǎn)體特指大陸地區(qū)的簡(jiǎn)體字。
繁體
HanLP中的繁體是通俗意義上的繁體中文,即受眾最廣的繁體表示。如果說OpenCC定義了自己的“OpenCC繁體標(biāo)準(zhǔn)”的話,那么這也可以算得上“HanLP繁體標(biāo)準(zhǔn)”。
香港繁體
指的是香港地區(qū)使用的繁體中文,據(jù)OpenCC的wiki介紹,屬于“香港小學(xué)學(xué)習(xí)字詞表標(biāo)準(zhǔn)”。
臺(tái)灣正體
指的是臺(tái)灣地區(qū)使用的繁體中文,即“臺(tái)灣正體標(biāo)準(zhǔn)”。
接口一覽
HanLP支持上述四種中文任意兩種之間的轉(zhuǎn)換:
共計(jì)12種接口。命名規(guī)范按照X2Y的形式,X表示源語種,Y表示目標(biāo)語種。
詞庫(kù)
由于我并沒有OpenCC作者那樣深厚的繁體中文語言知識(shí),所以這些接口未必能完美地滿足廣大繁體中文用戶的需求,希望大家多多包涵,提出寶貴意見。
所有的詞庫(kù)都是以文本方式維護(hù),命名規(guī)則與接口保持一致。不過,詞典的文本形式只有如下四種:
s2t.txt t2hk.txt t2s.txt t2tw.txt
類似tw2hk的詞典并不存在,tw2hk只存在自動(dòng)推導(dǎo)出的bin文件,其推導(dǎo)規(guī)則為
1、逆轉(zhuǎn)t2tw得到tw2t
2、利用t2hk得到tw2hk
推導(dǎo)由HanLP程序控制,用戶修改推導(dǎo)過程中用到的四個(gè)詞典后需要?jiǎng)h除推導(dǎo)結(jié)果的緩存文件才能生效。其他8種接口的推導(dǎo)過程類似于此,不再贅述。
聯(lián)系客服