(゚ν゚)ニホンゴムズカスィネー

開発メモ Edit

以降、MinGW + MSYS 環境上で開発することを前提とします。

sjis な辞書を作るために libiconv をインストール Edit

  • MeCab 0.94 からは Windows 環境上では iconv のかわりに mlang.dll を用いる

MeCab をビルド Edit

MeCab 0.96 Edit
  • 2007/10/31
  • with MinGW 5.1.3 (gcc (GCC) 3.4.5 (mingw special)) + MSYS 1.0.10
> sh
$ ./configure --without-iconv-prefix --with-charset=sjis
  • やっぱり config.h に HAVE_ICONV が define されるので手動で undef
  • システム辞書のビルド時に iconv_open() failed with from=EUC-JP to=shift_jis と怒られるので src/iconv_utils.cpp を変更
    --- iconv_utils.cpp.orig        Sun Jun 10 01:18:17 2007
    +++ iconv_utils.cpp     Wed Oct 31 02:32:52 2007
    @@ -67,7 +67,7 @@
         case UTF8:
           return 65001;
         case EUC_JP:
    -      return 20932;
    +      return 51932;
         case CP932:
           return 932;
         default:
$ make
$ make install
MeCab 0.95 Edit
  • Windows 環境上では iconv の代わりに mlang.dll を使うように
  • なので既に MSYS 環境上にインストールされている iconv を無視させる
    • とりあえず config.h の HAVE_ICONV を undef した
> sh
$ ./configure --with-charset=sjis
$ make
$ make install
  • dictionary.cpp(118) [iconv.open(from.c_str(), to.c_str())] iconv_open() failed with from=euc-jp to=shift_jis
    • iconv_utils.cpp の return 20932; を return 51932; にする
    • EUC-JP はコードページ 20932 じゃなくて 51932 なの?
MeCab 0.94 以前: libiconv にリンクする版 Edit
  • コマンドプロンプトから
    > sh
    $ ./configure --with-charset=sjis
  • src/Makefile の LIBS = -lstdc++ に -liconv を追加して
    $ make
    $ make install
MeCab 0.94 以前: libiconv にリンクしない版 Edit
  • プラグイン同梱用の libiconv に依存しない libmecab-1.dll を作る
  • src/Makefile に加えた変更を元に戻す
  • config.h の HAVE_ICONV を undef
  • src/utils.lo を削除
    $ make

システム辞書をビルド Edit

  • $ ./configure --with-charset=shift_jis
    $ make
  • dicrc の config-charset に注意 (2007/10/31)

ユーザ辞書を作る Edit

  • $ mecab-dict-index -d /local/lib/mecab/dic/ipadic -u hoge.dic -f shift_jis -t shift_jis hoge.csv

プラグインから使う Edit

  • 0.93 → 0.94 以降 (たぶん) で mecab_node_t の構造が変わったようなので、おそらく再コンパイルが必要 (2007/11/01)

問題点 Edit

  • --userdic 指定時、文字 ':' をデリミタとして解釈するため C:\hoge\moge ... みたいなドライブ名を含むパスを指定できない
    • → tokenizer.cpp l.125 (MeCab 0.93, 2006/10/10)
    • Windows の場合は ';' にしたほうがよさげ?
    • MeCab 0.96 からデリミタが ',' に変更 (2007/10/31)

etc Edit


FrontPage