談起簡繁轉換,許多人以為是小意思,按字轉換就行了。事實上,漢語歷史悠久,地域複雜,發展至今在字元級別存在「一簡對多繁」和「一繁對多簡」,在詞語級別上存在「簡繁分歧詞」,在港澳台等地則存在「字詞習慣不同」的情況。為此,hanlp新增了「簡體」「繁體」「台灣正體」「香港繁體」間的相互轉換功能,力圖將簡繁轉換做到極致。
關於這些漢語語言上的詳情,請參考郭家寶的opencc專案。hanlp整合了該項目的詞庫,用原生的ahocorasickdoublearraytrie演算法實現了各語言分支的轉換。對於簡繁轉換模組來說,演算法都是類似的,最寶貴的地方在於詞庫,在此向opencc表示敬意和感謝!
快速上手
乙個demo
system.out.println(hanlp.converttotraditionalchinese("「以後等你當上皇后,就能買士多啤梨慶祝了」。發現一根白頭髮"));
system.out.println(hanlp.converttosimplifiedchinese(「憑藉筆記簿型電腦寫程式hanlp」));
// 簡體轉台灣繁體
system.out.println(hanlp.s2tw(「hankcs在台灣寫**」));
// 台灣繁體轉簡體
system.out.println(hanlp.tw2s(「hankcs在台灣寫程式碼」));
// 簡體轉香港繁體
system.out.println(hanlp.s2hk(「hankcs在香港寫**」));
// 香港繁體轉簡體
system.out.println(hanlp.hk2s(「hankcs在香港寫程式碼」));
// 香港繁體轉台灣繁體
system.out.println(hanlp.hk2tw(「hankcs在台灣寫程式碼」));
// 台灣繁體轉香港繁體
system.out.println(hanlp.tw2hk(「hankcs在香港寫程式碼」));
// 香港/台灣繁體和hanlp標準繁體的互轉
system.out.println(hanlp.t2tw(「hankcs在台灣寫程式碼」));
system.out.println(hanlp.t2hk(「hankcs在台灣寫程式碼」));
system.out.println(hanlp.tw2t(「hankcs在台灣寫程式碼」));
system.out.println(hanlp.hk2t(「hankcs在台灣寫程式碼」));
輸出「以後等你當上皇后,就能買士多啤梨慶祝了」。發現一根白頭髮
憑藉膝上型電腦寫程式hanlp
hankcs在台灣寫程式碼
hankcs在台灣寫**
hankcs在香港寫程式碼
hankcs在香港寫**
hankcs在台灣寫程式碼
hankcs在香港寫程式碼
hankcs在台灣寫程式碼
hankcs在台灣寫程式碼
hankcs在台灣寫程式碼
hankcs在台灣寫程式碼
說明注意在舊版hanlp中,簡體「士多啤梨」被轉換為「士多啤梨」。後來有使用者告訴我「士多啤梨」是香港的用法,不屬於通俗意義上的「繁體」,所以在新版中去除了這一轉換。而「台灣」「程式碼」是台灣地區的用法,「台灣」「程式碼」則是香港地區的用法,所以
system.out.println(hanlp.t2tw(「hankcs在台灣寫程式碼」));
system.out.println(hanlp.t2hk(「hankcs在台灣寫程式碼」));
分別輸出了:
hankcs在台灣寫程式碼
hankcs在台灣寫程式碼
這裡面存在微妙的不同。
基本定義
簡體hanlp中的簡體特指大陸地區的簡體字。
繁體hanlp中的繁體是通俗意義上的正體中文,即受眾最廣的繁體表示。如果說opencc定義了自己的「opencc繁體標準」的話,那麼這也可以算得上「hanlp繁體標準」。
香港繁體
指的是香港地區使用的正體中文,據opencc的wiki介紹,屬於「香港小學學習字詞表標準」。
台灣正體
指的是台灣地區使用的正體中文,即「台灣正體標準」。
介面一覽
hanlp支援上述四種中文任意兩種之間的轉換:
詞庫由於我並沒有opencc作者那樣深厚的正體中文語言知識,所以這些介面未必能完美地滿足廣大正體中文使用者的需求,希望大家多多包涵,提出寶貴意見。
所有的詞庫都是以文字方式維護,命名規則與介面保持一致。不過,詞典的文字形式只有如下四種:
s2t.txt t2hk.txt t2s.txt t2tw.txt
類似tw2hk的詞典並不存在,tw2hk只存在自動推導出的bin檔案,其推導規則為
逆轉t2tw得到tw2t
利用t2hk得到tw2hk
推導由hanlp程式控制,使用者修改推導過程中用到的四個詞典後需要刪除推導結果的快取檔案才能生效。其他8種介面的推導過程類似於此,不再贅述。
文章**於網路
HanLP極致簡繁轉換詳細講解
hankcs 大快高階研究員hanlp專案負責人 談起簡繁轉換,許多人以為是小意思,按字轉換就行了。事實上,漢語歷史悠久,地域複雜,發展至今在字元級別存在 一簡對多繁 和 一繁對多簡 在詞語級別上存在 簡繁分歧詞 在港澳台等地則存在 字詞習慣不同 的情況。為此,hanlp新增了 簡體 繁體 台灣正體...
簡繁轉換如此簡單
public function strconv byval str as string,byval conversion as microsoft.visualbasic.vbstrconv,optional byval localeid as integer 0 as string 成員屬於 mi...
MSSQL SQL簡繁轉換函式
全部的簡繁對照 生成碼表 create table codetable gb nchar 1 big nchar 1 select top 1298 id identity int,1,1 into t from syscolumns a,syscolumns binsert codetablese...