簡轉繁等中文轉換(Golang)

來源:互聯網
上載者:User
       之前項目需要個簡體轉繁體的功能,工期太緊,就自己擼了一個,效果還行. 在做這個的過程中發現簡轉繁其實遠比想的要複雜.
中間有很多簡體字習慣的用法,在繁體中是不同的。且有些字如(後,後,臺灣,台灣) 在繁體中有幾種寫法和用法。
簡體字將其簡化成了一個字... 
然後相同的字,在不同的片語中時,有些用簡體那個,有些用繁體那個... 
最後,台灣繁體和香港繁體還有不同的差異. 
        不一一列舉,總之是個麻煩事。機械的通過一些編碼轉換是不行的. 所以通常自己寫的話是通過詞庫去翻譯比較好點。
當然也可以調第三方服務API(如有道,維基之類),不過如果業務效能有要求,還是不要調這類第三方服務好點。
       後面項目弄完了,我再回過頭研究這個問題,發現了個Open CC的項目弄這個還可以.然後Golang的調用

 封裝在GitHub上也有人實現了,就拿來試了試,確實效果還不錯.

例子:

package main/*利用OpenCC進行簡轉繁的例子   OpenCC庫 : https://github.com/BYVoid/OpenCC   opencc wrapper for Golang : github.com/stevenyao/go-opencc  Author:XCL*/import ("fmt"opencc "github.com/stevenyao/go-opencc")func main() {// mac  localconfig_s2t := "/Users/xcl/langtest/input/OpenCC-master/data/config/s2t.json"// linux//config_s2t := "/usr/share/opencc/s2t.json"// 簡體字串ch := "前面有大臣,後面有皇后 遊覽風景,做遊戲,去遊園夜遊 登上手工造遊艇,看維港景色。拿好裝置探尋台灣,去遊泳,衝浪,別浪費了這次機會. "//應用中需要先檢查檔案是不是存在,// 否則報"fatal error: unexpected signal during runtime execution." 造成服務中斷c := opencc.NewConverter(config_s2t)defer c.Close()// 轉換tw := c.Convert(ch)fmt.Println("繁體:", tw)}/*運行結果:➜  src  : go run main.go繁體: 前面有大臣,後面有皇后 遊覽風景,做遊戲,去遊園夜遊 登上手工造遊艇,看維港景色。拿好設備探尋臺灣,去遊泳,衝浪,別浪費了這次機會.*/

要跑起這個程式,需要有s2t.json這個詞庫。

   配置s2t.json: 

       本地,解壓從github下載的源碼,裡面有這個檔案詞庫,

 Linux 下可以用的yum或rpm之類的命令安裝好opencc,其詞庫在 /usr/share/opencc下。

        這個項目轉換是很厲害,可以注意下例子中所舉的那些字或詞,但有些字或片語用法需要定製時,用這個還真不知道怎麼加進去或定製一些轉換。 

時間有限就沒研究下去了,反正線上之前寫的那個跑得好好的,穩定為主,不折騰這個了。


BLOG: http://blog.csdn.net







聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.