読者です 読者をやめる 読者になる 読者になる

佐藤の屋敷

技術的なことを残せれば幸い

MeCabをWindows 8.1上のjavaでインストールを行う( Intellij IDEA 15 )

クリスマスイブですね。安心してください。そんなのかんけーねー。

■目的、したいこと

  • MeCabをjavaで使いたい
  • Windows 8.1 64bitで使いたい
  • Intellij IDEAで使いたい
  • とにかくお手軽にサクッと

■準備するもの

  • Windows 8.1 64bit
  • Intellij IDEA (記事時点なら14 or 15)
  • MeCab本体のWindows版(コンパイル済みの IPA 辞書辞書付き)
  • mecab-0.996_x64.zip
  • cmecab-java-2.0.1-src.zip

■インストールの前に

Intellij IDEAについては既にインストール済みを想定です。javaのコンソールプロジェクトを作成して

System.out.println("TEST");

くらいは実行できることを前提です。

■おおまかな手順

  1. MeCab本体のインストール ( mecab-0.996.exe 配布版は32bit )
  2. libmecab.dllの設置 ( 64bit版を設置 )
  3. cmecab-2.0.1.jarの作成
  4. Intellijでモジュールの読み込み
  5. javaで解析実行

■おおまかな説明

1. MeCabのインストール( mecab-0.996.exe )

f:id:satoysan:20151224171626p:plain
UTF-8でインストールします。

2. javaバインディング用のファイルをダウンロードしてきます。

f:id:satoysan:20151224171949p:plain
mecab-0.996_x64.zipとcmecab-java-2.0.1-src.zipをダウンロードします。
そして、mecab-0.996_x64.zipをまず解凍してbinディレクトリにあるlibmecab.dllをSystem32以下にコピーする。
(PATHを通せば別にココでなくても良かったハズですが、今回は面倒なのでコピー)

f:id:satoysan:20151224172728p:plain

3. Intellijでまずjavaプロジェクトを作成してcmecab-2.0.1.jarを作ります

cmecab-java-2.0.1-src.zipを自由なトコロにまず解凍します。
次にIntellijで新規javaプロジェクトの作成

特に何も指定せず
f:id:satoysan:20151224173315p:plain

Command Line Appで進めてあとは自由なプロジェクト名を設定
f:id:satoysan:20151224173330p:plain

できたプロジェクトからそのままAnt Buildをつかってcmecab-2.0.1.jarを作ります
f:id:satoysan:20151224174014p:plain

「+」ボタンで先ほど解凍したcmecab-java-2.0.1-srcの中にある「build.xml」を指定する
f:id:satoysan:20151224174112p:plain

でBuildを行う。(緑の三角ボタン)
f:id:satoysan:20151224174417p:plain

cmecab-2.0.1.jarが作成される。
f:id:satoysan:20151224174639p:plain

4. Intellijでモジュールの読み込み

Project Structureでjarを読み込みます。
f:id:satoysan:20151224175058p:plain
cmecab-2.0.1.jarとlibにあるbridj-0.6.1.jarを読み込みます。


5. サンプルソースを実行する。

HowToUse - cmecab-java - 使用方法 - MeCabのJavaバインディング+Lucene/Solr用トークナイザ・フィルタ - Google Project Hosting
このソースそのままを実行。

以下念のため引用

package com.company;

import net.moraleboost.mecab.Lattice;
import net.moraleboost.mecab.Tagger;
import net.moraleboost.mecab.impl.StandardTagger;
import net.moraleboost.mecab.Node;

public class Main {

    public static void main(String[] args) {

        StandardTagger tagger = new StandardTagger("");
        System.out.println("MeCab version " + tagger.version());

        // Lattice(形態素解析に必要な実行時情報が格納されるオブジェクト)を構築
        Lattice lattice = tagger.createLattice();

        // 解析対象文字列をセット
        String text = "本日は晴天なり。";
        lattice.setSentence(text);

        // tagger.parse()を呼び出して、文字列を形態素解析する。
        tagger.parse(lattice);

        // 形態素解析結果を出力
        System.out.println(lattice.toString());

        // 一つずつ形態素をたどりながら、表層形と素性を出力
        Node node = lattice.bosNode();
        while (node != null) {
            String surface = node.surface();
            String feature = node.feature();
            System.out.println(surface + "\t" + feature);
            node = node.next();
        }

        // lattice, taggerを破壊
        lattice.destroy();
        tagger.destroy();

    }
}

すると以下のように出力される。

f:id:satoysan:20151224175439p:plain

■最後に

とにかく試し実行のためにもう少しキッチリやるべき場所とか無視してここまで来ました。
本気で動かすときはCentOSとかでやるので、とにかくWindows上でガリガリ開発するための準備となります。