2ヶ月ぶりに。確定申告終わりそうです。今年もなんとか。
今回はちょっとした思いつきで日本語の形態素解析とかちょろっとやり方をおさらいしておこう、と思ったのでそのメモ。
仕事でも lucene-gosen には非常にお世話になっておりましたが、自分のお脳にはどう使ったかがまったく記憶されていなかったので、まあ趣味として改めて調べようということで。
その中で、ちょっとバージョンが古いけど、Maven Repositoryにもlucene-gosenがあるということがわかったので、じゃあこれ使ってさっくり書いてみよう、となった次第です。
まず、適当なmavenプロジェクトを作る。いつもこのコマンドを忘れるのでこれもメモ。
$ mvn archetype:create -DgroupId=net.yzwlab -DartifactId=simple-lucene-gosen-sample
で、simple-lucene-gosen-sample以下にpom.xmlやらができるので、このdependencies要素以下に Maven Repositoryのdependency要素の内容を書きたす。
<dependency> <groupId>com.google.code</groupId> <artifactId>lucene-gosen-ipadic</artifactId> <version>1.2.1</version> </dependency>
これでlucene-gosenを使う準備は終わり。Mavenが勝手に依存関係解決してjarを仕込んでくれるのでもう何も恐くない。あとはすでにWeb上にある素晴らしい資料群にありがたやと手をあわせつつコードを書くのみ。
package net.yzwlab; import java.util.ArrayList; import java.util.List; import net.java.sen.SenFactory; import net.java.sen.StringTagger; import net.java.sen.dictionary.Token; /** * lucene-gosenの単純なサンプル */ public class SimpleLuceneGosenApp { public static void main(String[] args) throws Exception { StringTagger tagger = SenFactory.getStringTagger(null); Listtokens = tagger.analyze("如月千早(CV. 今井麻美)", new ArrayList<Token>()); for (Token token : tokens) { System.err.println(token.getSurface() + ": " + token.getMorpheme().getReadings() + " - " + token.getMorpheme().getPartOfSpeech()); } } }
これを実行するとこんな感じで形態素解析できた。やったね。
如月: [キサラギ] - 名詞-固有名詞-地域-一般 千早: [チハヤ] - 名詞-固有名詞-地域-一般 (: [] - 未知語 CV: [] - 未知語 .: [] - 未知語 今井: [イマイ] - 名詞-固有名詞-人名-姓 麻美: [アサミ, マミ] - 名詞-固有名詞-人名-名 ): [] - 未知語
やあやあ、Mavenはほんとうに楽ですなあ。Mavenで事足りる場合は、ですが。
9割くらいの作業はすごい楽になるのでよいのですが、Maven外のライブラリを引っ張ってきたりあれやこれやしようとするなどで残り1 割が地獄になってしまう感じがありまして、なかなか仕事として本格的に使うには腰が引けている感じだったりします。たぶんこれはまだ自分がベストプラクティスを持てていないってことなのでしょうが。
まあせっかくなのでgithubにも放置してゆきます。