日語分詞工具-Kuromoji 日本語単語割り切れツール:Kuromoji


環境:對日開發語言處理

要求:分析詞語,將詞語中的日文單詞分割,轉換形式。

分析:

  任務1:詞語拆分

  任務2:轉換形式

 

日文的形式轉換可以用kanavetor去實現 非常簡單 直接調用Kana類的convert方法就可以,在Kana的官網上可以看到用法(即便看不懂介紹,看到管網的表格應該也就一目了然了~)。

重點在於詞語的拆分上:

詞語拆分使用了Kuromoji,Kuromoji是一款非常好用的日語分詞工具,並且,分解后的詞是可以自動將漢字,平假名等轉換成カタカナ的,有類似需要的可以直接用這個而不用再去尋找其他工具了。Kuromoji我找到了兩個版本,一個是kuromoji,0.7.7版本,官網上說捐獻給了apache,內置在Lucene的4.0,5.0版本里,由於忘記Lucene的用法,暫且不考慮。另外一個版本是kuromoji-ipadic,這個東東和kuromoji都是一個公司出的,但是略有不同,稍微研究了一下,kuromoji在使用的時候是只能找到jar包,找不到源代碼文件的,通過maven下載可以,但是gradle是引入不了的。而kuromoji-ipadic則是gradlle也可以引用,並且引入之后可以看到源碼。此外kuromoji畢竟是以前的api,還有一些小小的缺陷。

kuromoji官網:http://www.atilika.org/

Kuromoji-ipadic官網:http://www.atilika.com/en/kuromoji/

Kuromoji用法:

1         Tokenizer tokenizer = Tokenizer.builder().build();
2         for (Token token : tokenizer.tokenize("壽司が食べたい。")) {
        // token 中存放的是分割后的詞 不同的屬性可以取到該詞的不同內容
              // surfaceForm:原內容
3             System.out.println(token.getSurfaceForm() + "\t" + );
              // baseForm:內容詞語的基礎 例如 食べたい⇒食べ
        System.out.println(token.getBaseForm() + "\t" + );
4 }

↑↑↑這個api對日文漢字的識別率不如下面的api(有些簡體日文漢字和特別生僻的識別不出來,畢竟是老版本),並且遇到不認識的漢字時token調用get方法會得到null。。。不建議使用。

Kuromoji-ipadic用法:

1         Tokenizer tokenizer = new Tokenizer() ;
2         List<Token> tokens = tokenizer.tokenize("お壽司が食べたい。");
3         for (Token token : tokens) {
4             System.out.println(token.getSurface()); // 讀取到的原內容
5             System.out.println(token.getReading()); // カタカナ
6         }        

順帶一提,kuromoji-ipadic由於是用new產生產生實例的,所以如果你的工具或系統需要轉換大量詞匯,要注意不要做太多的new操作,不然會很慢很慢很慢,此時可以定義成靜態常量或者單例模式。

歡迎大家評論和指教。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM