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

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

Last-modified: 2013-08-24 (土) 02:14:21 (3898d)
Top / Java:kuromojiを使って形態素解析してみる

FrontPage

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

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

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

資材のDL

以下のURLよりDLします。

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

サンプルコード

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

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

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

KuromojiSample?.java

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("関西国際空港に行って寿司を食べた。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();
        }
    }
}

出力

こんな感じに出力されます。

##########################################################
===メソッドで取得できる値
表記   :関西国際空港
品詞   :名詞,固有名詞,組織,*
原型  :関西国際空港
読み  :カンサイコクサイクウコウ
既知語 :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