m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

Javaで形態素解析ライブラリのkuromojiを使ってみた

形態素解析とかいうので

文字列を単語別に分割できるらしい
全文検索とか名刺だけを取得したい場合とかに使えそう

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example.sample</groupId>
  <artifactId>SampleKaiseki01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
    
    <!-- https://mvnrepository.com/artifact/com.atilika.kuromoji/kuromoji-core -->
    <dependency>
      <groupId>com.atilika.kuromoji</groupId>
      <artifactId>kuromoji-ipadic</artifactId>
      <version>0.9.0</version>
    </dependency>
  
  </dependencies>
  
</project>

サンプル

Sample01.java
package com.example.sample;

import java.util.List;

import com.atilika.kuromoji.ipadic.Token;
import com.atilika.kuromoji.ipadic.Tokenizer;

public class Sample01 {
	
	public static void main(String[] args) {
		
		Tokenizer tokenizer = new Tokenizer() ;
		
		tokenDisplay(tokenizer.tokenize("山田 太郎"));
		tokenDisplay(tokenizer.tokenize("りんごはおいしい"));
		tokenDisplay(tokenizer.tokenize("この仕事は大変そうです。"));
		tokenDisplay(tokenizer.tokenize("扇風機が動かないんですけど急いで直してくれない?"));
	}
	
	private static void tokenDisplay(List<Token> tokens) {
		for (Token token : tokens) {
			System.out.println(token.getSurface() + "\t" + token.getAllFeatures());
	    	System.out.println(token.getPartOfSpeechLevel1());
	    	System.out.println(token.getPartOfSpeechLevel2());
        }
	}
}

結果

山田	名詞,固有名詞,人名,姓,*,*,山田,ヤマダ,ヤマダ
名詞
固有名詞
 	記号,空白,*,*,*,*, , , 
記号
空白
太郎	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
名詞
固有名詞
りんご	名詞,一般,*,*,*,*,りんご,リンゴ,リンゴ
名詞
一般
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
助詞
係助詞
おいしい	形容詞,自立,*,*,形容詞・イ段,基本形,おいしい,オイシイ,オイシイ
形容詞
自立
この	連体詞,*,*,*,*,*,この,コノ,コノ
連体詞
*
仕事	名詞,サ変接続,*,*,*,*,仕事,シゴト,シゴト
名詞
サ変接続
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
助詞
係助詞
大変	名詞,形容動詞語幹,*,*,*,*,大変,タイヘン,タイヘン
名詞
形容動詞語幹
そう	名詞,接尾,助動詞語幹,*,*,*,そう,ソウ,ソー
名詞
接尾
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
助動詞
*
。	記号,句点,*,*,*,*,。,。,。
記号
句点
扇風機	名詞,一般,*,*,*,*,扇風機,センプウキ,センプーキ
名詞
一般
が	助詞,格助詞,一般,*,*,*,が,ガ,ガ
助詞
格助詞
動か	動詞,自立,*,*,五段・カ行イ音便,未然形,動く,ウゴカ,ウゴカ
動詞
自立
ない	助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ
助動詞
*
ん	名詞,非自立,一般,*,*,*,ん,ン,ン
名詞
非自立
です	助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
助動詞
*
けど	助詞,接続助詞,*,*,*,*,けど,ケド,ケド
助詞
接続助詞
急い	動詞,自立,*,*,五段・ガ行,連用タ接続,急ぐ,イソイ,イソイ
動詞
自立
で	助詞,接続助詞,*,*,*,*,で,デ,デ
助詞
接続助詞
直し	動詞,非自立,*,*,五段・サ行,連用形,直す,ナオシ,ナオシ
動詞
非自立
て	助詞,接続助詞,*,*,*,*,て,テ,テ
助詞
接続助詞
くれ	動詞,非自立,*,*,一段・クレル,未然形,くれる,クレ,クレ
動詞
非自立
ない	助動詞,*,*,*,特殊・ナイ,基本形,ない,ナイ,ナイ
助動詞
*
?	記号,一般,*,*,*,*,?,?,?
記号
一般

所感

使い所がむずかしいな…
なんかいい感じのところで区切ってくれるとありがたいけどまだそこまで精度が高いわけではなさそう
名詞とかで区切る方法がいいのかも…