HanLP極致簡繁轉換詳細講解

2021-09-08 05:21:41 字數 2185 閱讀 6121

hankcs(大快高階研究員hanlp專案負責人)

談起簡繁轉換,許多人以為是小意思,按字轉換就行了。事實上,漢語歷史悠久,地域複雜,發展至今在字元級別存在「一簡對多繁」和「一繁對多簡」,在詞語級別上存在「簡繁分歧詞」,在港澳台等地則存在「字詞習慣不同」的情況。為此,hanlp新增了「簡體」「繁體」「台灣正體」「香港繁體」間的相互轉換功能,力圖將簡繁轉換做到極致。

關於這些漢語語言上的詳情,請參考郭家寶的opencc專案。hanlp整合了該項目的詞庫,用原生的ahocorasickdoublearraytrie演算法實現了各語言分支的轉換。對於簡繁轉換模組來說,演算法都是類似的,最寶貴的地方在於詞庫,在此向opencc表示敬意和感謝!

快速上手

乙個demo

輸出

說明

注意在舊版hanlp中,簡體「士多啤梨」被轉換為「士多啤梨」。後來有使用者告訴我「士多啤梨」是香港的用法,不屬於通俗意義上的「繁體」,所以在新版中去除了這一轉換。而「台灣」「程式碼」是台灣地區的用法,「台灣」「程式碼」則是香港地區的用法,所以

1、system.out.println(hanlp.t2tw("hankcs在台灣寫程式碼"));

2、system.out.println(hanlp.t2hk("hankcs在台灣寫程式碼"));

分別輸出了

1、hankcs在台灣寫程式碼

2、hankcs在台灣寫程式碼

這裡面存在微妙的不同。

基本定義

簡體

hanlp中的簡體特指大陸地區的簡體字。

繁體

hanlp中的繁體是通俗意義上的正體中文,即受眾最廣的繁體表示。如果說opencc定義了自己的「opencc繁體標準」的話,那麼這也可以算得上「hanlp繁體標準」。

香港繁體

指的是香港地區使用的正體中文,據opencc的wiki介紹,屬於「香港小學學習字詞表標準」。

台灣正體

指的是台灣地區使用的正體中文,即「台灣正體標準」。

介面一覽

hanlp支援上述四種中文任意兩種之間的轉換:

共計12種介面。命名規範按照x2y的形式,x表示源語種,y表示目標語種。

詞庫

由於我並沒有opencc作者那樣深厚的正體中文語言知識,所以這些介面未必能完美地滿足廣大正體中文使用者的需求,希望大家多多包涵,提出寶貴意見。

所有的詞庫都是以文字方式維護,命名規則與介面保持一致。不過,詞典的文字形式只有如下四種:

s2t.txt         t2hk.txt        t2s.txt         t2tw.txt

類似tw2hk的詞典並不存在,tw2hk只存在自動推導出的bin檔案,其推導規則為

1、逆轉t2tw得到tw2t

2、利用t2hk得到tw2hk

推導由hanlp程式控制,使用者修改推導過程中用到的四個詞典後需要刪除推導結果的快取檔案才能生效。其他8種介面的推導過程類似於此,不再贅述。

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...