トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Java:kuromojiを使って形態素解析してみる の変更点

Top / Java:kuromojiを使って形態素解析してみる

[[FrontPage]]

*Java:kuromojiを使って形態素解析してみる [#s006e5a5]

kuromojiを使って形態素解析してみます。

kuromojiはSolrに同梱されている形態素解析器で辞書が内包されているため、jar一個ダウンロードするだけでお手軽に使えます。

-http://www.atilika.org/

***資材のDL [#j77d7c68]

以下のURLよりDLします。

-https://github.com/atilika/kuromoji/downloads

展開すると、サンプルのコードとjarが入っているので、jarをクラスパスに追加します。

***サンプルコード [#z6358b64]

基本的に、Tokenクラスと、Tokenizerクラスを使用するだけです。

Tokenizerで文章をトークンに分解し、Tokenクラスのメソッドで各種情報を取得します。

:getSurfaceForm|トークンに分解された単語が返却されます。
:getPartOfSpeech|トークンの品詞が返却されます。
:getBaseForm|トークンの原型が返却されます。動詞の場合は、基本形に直してくれます。
:getReading|トークンの読みが返却されます。
:isKnown、isUnknown|辞書の登録語かどうかをbooleanで返却します。
:isUser|ユーザ辞書の登録後かどうかをbookeanで返却します。
:getAllFeatures、getAllFeaturesArray|すべての情報をString/String[]で返却します。

■KuromojiSample.java
 package kuromojisample;
 
 import org.atilika.kuromoji.Token;
 import org.atilika.kuromoji.Tokenizer;
 
 public class KuromojiSample {
 
     public static void main(String[] args) {
         Tokenizer tokenizer = Tokenizer.builder().build();
         for (Token token : tokenizer.tokenize("関西国際空港に行って寿司を食べた。")) {
             String[] features = token.getAllFeaturesArray();
             System.out.println("##########################################################");
             System.out.println("===メソッドで取得できる値");
             System.out.println("表記   :" + token.getSurfaceForm());
             System.out.println("品詞   :" + token.getPartOfSpeech());
             System.out.println("原型  :" + token.getBaseForm());
             System.out.println("読み  :"+token.getReading());
             System.out.println("既知語 :" + token.isKnown());
             System.out.println("未知語 :" + token.isUnknown());
             System.out.println("ユーザ辞書?:"+ token.isUser());
             System.out.println("すべてのfeature:" +token.getAllFeatures());
             System.out.println("===token.getAllFeaturesArray()で取得できる配列の中身");
             System.out.println("fearures[0] 品詞1 :" + features[0] );
             System.out.println("fearures[1] 品詞2 :" + features[1]);
             System.out.println("fearures[0] 品詞3 :" + features[2]);
             System.out.println("fearures[0] 品詞4 :" + features[3]);
             System.out.println("fearures[0] 活用形1:" + features[4]);
             System.out.println("fearures[0] 活用形2:" + features[5]);
             System.out.println("fearures[0] 原型  :" + features[6]);
             System.out.println("fearures[0] 読み  :" + features[7]);
             System.out.println("fearures[0] 発音  :" + features[8]);
             System.out.println();
         for (Token token : tokenizer.tokenize("関西国際空港に行って寿司を食べた。Sampleはもじもじくんです。")) {
            String[] features = token.getAllFeaturesArray();
            System.out.println("##########################################################");
            System.out.println("===メソッドで取得できる値");
            System.out.println("表記   :" + token.getSurfaceForm());
            System.out.println("品詞   :" + token.getPartOfSpeech());
            System.out.println("原型  :" + token.getBaseForm());
            System.out.println("読み  :"+token.getReading());
            System.out.println("既知語 :" + token.isKnown());
            System.out.println("未知語 :" + token.isUnknown());
            System.out.println("ユーザ辞書?:"+ token.isUser());
            System.out.println("すべてのfeature:" +token.getAllFeatures());
            System.out.println("===token.getAllFeaturesArray()で取得できる配列の中身");
            System.out.println("fearures[0] 品詞1 :" + features[0] );
            System.out.println("fearures[1] 品詞2 :" + features[1]);
            System.out.println("fearures[0] 品詞3 :" + features[2]);
            System.out.println("fearures[0] 品詞4 :" + features[3]);
            System.out.println("fearures[0] 活用形1:" + features[4]);
            System.out.println("fearures[0] 活用形2:" + features[5]);
            System.out.println("fearures[0] 原型  :" + features[6]);
 			if (features.length == 9) {
 				System.out.println("fearures[0] 読み  :" + features[7]);
 				System.out.println("fearures[0] 発音  :" + features[8]);
 			}
           System.out.println();
         }
     }
 
 }

***出力 [#d7b03481]
こんな感じに出力されます。

 ##########################################################
 ===メソッドで取得できる値
 表記   :関西国際空港
 品詞   :名詞,固有名詞,組織,*
 原型  :関西国際空港
 読み  :カンサイコクサイクウコウ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:名詞,固有名詞,組織,*,*,*,関西国際空港,カンサイコクサイクウコウ,カンサイコクサイクーコー
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :名詞
 fearures[1] 品詞2 :固有名詞
 fearures[0] 品詞3 :組織
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :関西国際空港
 fearures[0] 読み  :カンサイコクサイクウコウ
 fearures[0] 発音  :カンサイコクサイクーコー
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :に
 品詞   :助詞,格助詞,一般,*
 原型  :に
 読み  :ニ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:助詞,格助詞,一般,*,*,*,に,ニ,ニ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :助詞
 fearures[1] 品詞2 :格助詞
 fearures[0] 品詞3 :一般
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :に
 fearures[0] 読み  :ニ
 fearures[0] 発音  :ニ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :行っ
 品詞   :動詞,自立,*,*
 原型  :行く
 読み  :イッ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く,イッ,イッ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :動詞
 fearures[1] 品詞2 :自立
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:五段・カ行促音便
 fearures[0] 活用形2:連用タ接続
 fearures[0] 原型  :行く
 fearures[0] 読み  :イッ
 fearures[0] 発音  :イッ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :て
 品詞   :助詞,接続助詞,*,*
 原型  :て
 読み  :テ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:助詞,接続助詞,*,*,*,*,て,テ,テ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :助詞
 fearures[1] 品詞2 :接続助詞
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :て
 fearures[0] 読み  :テ
 fearures[0] 発音  :テ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :寿司
 品詞   :名詞,一般,*,*
 原型  :寿司
 読み  :スシ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:名詞,一般,*,*,*,*,寿司,スシ,スシ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :名詞
 fearures[1] 品詞2 :一般
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :寿司
 fearures[0] 読み  :スシ
 fearures[0] 発音  :スシ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :を
 品詞   :助詞,格助詞,一般,*
 原型  :を
 読み  :ヲ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :助詞
 fearures[1] 品詞2 :格助詞
 fearures[0] 品詞3 :一般
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :を
 fearures[0] 読み  :ヲ
 fearures[0] 発音  :ヲ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :食べ
 品詞   :動詞,自立,*,*
 原型  :食べる
 読み  :タベ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:動詞,自立,*,*,一段,連用形,食べる,タベ,タベ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :動詞
 fearures[1] 品詞2 :自立
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:一段
 fearures[0] 活用形2:連用形
 fearures[0] 原型  :食べる
 fearures[0] 読み  :タベ
 fearures[0] 発音  :タベ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :た
 品詞   :助動詞,*,*,*
 原型  :た
 読み  :タ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :助動詞
 fearures[1] 品詞2 :*
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:特殊・タ
 fearures[0] 活用形2:基本形
 fearures[0] 原型  :た
 fearures[0] 読み  :タ
 fearures[0] 発音  :タ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :。
 品詞   :記号,句点,*,*
 原型  :。
 読み  :。
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:記号,句点,*,*,*,*,。,。,。
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :記号
 fearures[1] 品詞2 :句点
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :。
 fearures[0] 読み  :。
 fearures[0] 発音  :。

 
 ##########################################################
 ===メソッドで取得できる値
 表記   :Sample
 品詞   :名詞,固有名詞,組織,*
 原型  :null
 読み  :null
 既知語 :false
 未知語 :true
 ユーザ辞書?:false
 すべてのfeature:名詞,固有名詞,組織,*,*,*,*
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :名詞
 fearures[1] 品詞2 :固有名詞
 fearures[0] 品詞3 :組織
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :*
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :は
 品詞   :助詞,係助詞,*,*
 原型  :は
 読み  :ハ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:助詞,係助詞,*,*,*,*,は,ハ,ワ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :助詞
 fearures[1] 品詞2 :係助詞
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :は
 fearures[0] 読み  :ハ
 fearures[0] 発音  :ワ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :もじもじ
 品詞   :副詞,一般,*,*
 原型  :もじもじ
 読み  :モジモジ
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:副詞,一般,*,*,*,*,もじもじ,モジモジ,モジモジ
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :副詞
 fearures[1] 品詞2 :一般
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :もじもじ
 fearures[0] 読み  :モジモジ
 fearures[0] 発音  :モジモジ
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :くん
 品詞   :動詞,自立,*,*
 原型  :くむ
 読み  :クン
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:動詞,自立,*,*,五段・マ行,連用タ接続,くむ,クン,クン
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :動詞
 fearures[1] 品詞2 :自立
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:五段・マ行
 fearures[0] 活用形2:連用タ接続
 fearures[0] 原型  :くむ
 fearures[0] 読み  :クン
 fearures[0] 発音  :クン
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :です
 品詞   :助動詞,*,*,*
 原型  :です
 読み  :デス
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :助動詞
 fearures[1] 品詞2 :*
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:特殊・デス
 fearures[0] 活用形2:基本形
 fearures[0] 原型  :です
 fearures[0] 読み  :デス
 fearures[0] 発音  :デス
 
 ##########################################################
 ===メソッドで取得できる値
 表記   :。
 品詞   :記号,句点,*,*
 原型  :。
 読み  :。
 既知語 :true
 未知語 :false
 ユーザ辞書?:false
 すべてのfeature:記号,句点,*,*,*,*,。,。,。
 ===token.getAllFeaturesArray()で取得できる配列の中身
 fearures[0] 品詞1 :記号
 fearures[1] 品詞2 :句点
 fearures[0] 品詞3 :*
 fearures[0] 品詞4 :*
 fearures[0] 活用形1:*
 fearures[0] 活用形2:*
 fearures[0] 原型  :。
 fearures[0] 読み  :。
 fearures[0] 発音  :。
 
ほんと、簡単に使えますなw

作者に感謝感謝ですw