####neologdって?
https://github.com/neologd/mecab-ipadic-neologd/blob/master/README.ja.md
要するに新語に対応しているipa辞書の拡張版
これをjavaで利用しようと思うと
- ビルドする環境構築
- 頑張ってmecab-ipadic-neologdをビルド
- java側からネイティブのmecabをバインディングしたりして呼び出し
みたいなことをしないといけない・・・
しかもネイティブビルドしたmecabを利用するので環境への依存関係が高く
さくっとサーバーにデプロイして利用みたいなことは難しい・・・
んじゃneologdの辞書だけpure javaのkuromojiで使えないかなと思って調べた。
http://d.hatena.ne.jp/Kazuhira/20150316/1426520209
あーめんどそう・・・
####つーわけでさらに検索した結果
http://mocobeta-backup.tumblr.com/post/114318023832/neologd-kuromoji-lucene-4-10-4-branch
おー作って公開してくれてる。
でも自分でビルドするのか・・・
と思って下まで読んだら
Elasticsearch ユーザー向けには、以下でプラグインを公開してくださっているので、こちらをどうぞ。
https://github.com/codelibs/elasticsearch-analysis-kuromoji-neologd
やりたいことは形態素解析だけなんでluceneでもelasticsearchでもどっちでもいいのでこれを利用してみよう
####依存関係処理
ここがめんどいのでいろいろ調べたわけです。
さくっとmavenつかってpom.xmlに以下を追加するだけ
<dependency>
<groupId>org.codelibs</groupId>
<artifactId>elasticsearch-analysis-kuromoji-neologd</artifactId>
<version>1.6.0</version>
</dependency>
超簡単、調べてよかった・・・
#####以下テストコード
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.codelibs.neologd.ipadic.lucene.analysis.ja.JapaneseTokenizer;
public class KuromojiTest {
/**
* 分かち書きした文章をリストにして返す。
*
* @param src
* @return
*/
private List<String> kuromojineologd(String src){
List<String> ret = new ArrayList<>();
try(JapaneseTokenizer jt =
// JapaneseTokenizerの引数は(ユーザー辞書, 記号を無視するか, モード)
new JapaneseTokenizer(null, false, JapaneseTokenizer.Mode.NORMAL)){
CharTermAttribute ct = jt.addAttribute(CharTermAttribute.class);
jt.setReader(new StringReader(src));
jt.reset();
while(jt.incrementToken()){
ret.add(ct.toString());
}
} catch (IOException e) {
e.printStackTrace();
}
return ret;
}
/**
* main
* 自分をnewしてexecuteメソッド呼ぶだけ。
* こうすることで他メソッドを作成するときに無駄にstatic化しなくてすむ
*
* @param args
*/
public static void main(String[] args) {
new KuromojiTest().execute();
}
/**
* 事実上のmain
*/
public void execute(){
System.out.println(kuromojineologd("東京スカイツリーできゃりーぱみゅぱみゅとDAIGOがロケしてた。"));
System.out.println(kuromojineologd("ヨツンヴァインになれよ。あくしろよ。"));
}
}
[東京スカイツリー, で, きゃりーぱみゅぱみゅ, と, DAIGO, が, ロケ, し, て, た, 。]
[ヨツンヴァイン, に, なれ, よ, 。, あくしろよ, 。]
ネットスラングまで分かち書きできるとはたまげたなぁ(すっとぼけ