- ウェブ共有型の翻訳メモリーを試作しています。
- CCライセンスでページを公開しているサイトが増えています。
- http://stackoverflow.com/ もその一つです。
- これなら皆で翻訳を共有できるんじゃないかというコンセプトです。
- その過程でMecabを使いました
- 色々わからなかった点があったのでメモします。
MSVC上でのMecabライブラリのビルド
- Linux上でビルドすると、Makefile.msvcが作られます。
- MSVCでビルドするにはこのファイルが必要なので、一度Linux上でビルドし、ソースツリーをWindows上にコピーします。
- 後は、MSVCに用意されているコマンドプロンプト上からsrcに移動し、make.batを実行します。
- 沢山のバイナリが出来ますが、C++から使うのに必要なのは*.h、libmecab.dll、libmecab.libです。
- 他に辞書も用意する必要があります。
プロジェクトへの組み込み
- プロジェクトに.libを読み込み、.hをインクルードするのは通常通りです。
- 実行時にはlibmecab.dllが必要なので、F5で実行するような場合はプロジェクトのフォルダに入れておきます。
プログラムからの呼び出し
- Model* MeCab::Model::create(const char *arg)は空白文字などで実行時に問題が出ます。
- Model* MeCab::Model::create(int argc, char **argv)は、Windows上で全く問題がありません。
MeCab::Model::Model* create(int argc, char **argv)の呼び出し
- ここが一番躓いたところです。
- arg[0]には、「myapp」のようなシステム名を入れます。これは何でも構いません。
- arg[1]には、「--rcfile=C:/~/mecabrc」のような設定ファイルのパスを入れます。
- arg[2]には、「--dicdir=C:/~/ipadic」のような辞書ファイルのあるフォルダのパスを入れます。
- わかってみれば何でもないことでした。
mecabrcの中身
- mecabrcは、辞書の場所などを設定するファイルです。
- 中は全て「;」でコメント化しておきます。空であってもこのファイルが必要です。
- ところでコメントアウトはこういうときに使っていい言葉なんでしょうか?誰か教えて!
- dicrcは辞書についてきたものをそのまま使いました。
プログラムの配布
- libmecab.dllと辞書を同梱する必要があります。
- それ以外は特に何も必要ありませんでした。
感想
- 一度わかってしまえば、どうという事もありませんでした。
- が・・・かなり悩んだ。
- そして、Mecabは恐ろしく速い!
- 最初別スレッドで動かすかと思っていたけど、そんな必要は無かったw