HanLP极致简繁转换详细讲解
HanLP極致簡繁轉換詳細講解
談起簡繁轉換,許多人以為是小意思,按字轉換就行了。事實上,漢語歷史悠久,地域復雜,發(fā)展至今在字符級別存在“一簡對多繁”和“一繁對多簡”,在詞語級別上存在“簡繁分歧詞”,在港澳臺等地則存在“字詞習慣不同”的情況。為此,HanLP新增了“簡體”“繁體”“臺灣正體”“香港繁體”間的相互轉換功能,力圖將簡繁轉換做到極致。
?
關于這些漢語語言上的詳情,請參考郭家寶的OpenCC項目。HanLP整合了該項目的詞庫,用原生的AhoCorasickDoubleArrayTrie算法實現了各語言分支的轉換。對于簡繁轉換模塊來說,算法都是類似的,最寶貴的地方在于詞庫,在此向OpenCC表示敬意和感謝!
?
快速上手
一個Demo
?
輸出
?
說明
注意在舊版HanLP中,簡體“草莓”被轉換為“士多啤梨”。后來有用戶告訴我“士多啤梨”是香港的用法,不屬于通俗意義上的“繁體”,所以在新版中去除了這一轉換。而“臺灣”“程式碼”是臺灣地區(qū)的用法,“臺灣”“代碼”則是香港地區(qū)的用法,所以
?
1、System.out.println(HanLP.t2tw("hankcs在臺灣寫代碼"));
2、System.out.println(HanLP.t2hk("hankcs在臺灣寫代碼"));
?
分別輸出了
?
1、hankcs在臺灣寫程式碼
2、hankcs在臺灣寫代碼
?
這里面存在微妙的不同。
?
基本定義
?
簡體
?
HanLP中的簡體特指大陸地區(qū)的簡體字。
?
繁體
?
HanLP中的繁體是通俗意義上的繁體中文,即受眾最廣的繁體表示。如果說OpenCC定義了自己的“OpenCC繁體標準”的話,那么這也可以算得上“HanLP繁體標準”。
?
香港繁體
?
指的是香港地區(qū)使用的繁體中文,據OpenCC的wiki介紹,屬于“香港小學學習字詞表標準”。
?
臺灣正體
?
指的是臺灣地區(qū)使用的繁體中文,即“臺灣正體標準”。
?
接口一覽
?
HanLP支持上述四種中文任意兩種之間的轉換:
?
共計12種接口。命名規(guī)范按照X2Y的形式,X表示源語種,Y表示目標語種。
詞庫
?
由于我并沒有OpenCC作者那樣深厚的繁體中文語言知識,所以這些接口未必能完美地滿足廣大繁體中文用戶的需求,希望大家多多包涵,提出寶貴意見。
?
所有的詞庫都是以文本方式維護,命名規(guī)則與接口保持一致。不過,詞典的文本形式只有如下四種:
s2t.txt ????????t2hk.txt ???????t2s.txt ????????t2tw.txt
類似tw2hk的詞典并不存在,tw2hk只存在自動推導出的bin文件,其推導規(guī)則為
?
1、逆轉t2tw得到tw2t
2、利用t2hk得到tw2hk
?
推導由HanLP程序控制,用戶修改推導過程中用到的四個詞典后需要刪除推導結果的緩存文件才能生效。其他8種接口的推導過程類似于此,不再贅述。
總結
以上是生活随笔為你收集整理的HanLP极致简繁转换详细讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1. Linux内核的配置与裁减:
- 下一篇: [译] 常用 Phpstorm tips