MeCabで辞書の読込先を変える方法。
書いてあるサイトがなくてだいぶ苦労した・・・。
-r,-dオプション両方使って指定しとけば間違いないっぽい。
以下「実行パス\ipadic」にある辞書を指定するソース
Intptr mecab; //mecab = mecab_new(3, new string[] {"a.exe", "-r"+dicpath+"\\dicrc","-d"+dicpath}); mecab = mecab_new(3, new string[] {"a.exe", "-ripadic\\dicrc","-dipadic"}); Debug.Print(mecab_strerror(mecab));
上のコメントアウトしてる絶対パスで指定した方でもいいのだが、dicpathが"C:\Documents and Settings\\"とかになっているとエラーが起こってしまうので注意。まわりを""で囲ってもうまくいかない。空白をエスケープする方法があるのかもしれないがわからないので、下のコメントアウトしていない相対パスの方法がいいと思われる。
ちなみに、-rなどのオプションとディレクトリ指定パスを区切っても区切らなくてもOK。
つまり、簡単に書くのが好きなmecab_new2派の人は
mecab = mecab_new2(" -r ipadic\\dicrc -d ipadic");
でよさそう。最初に空白あるのが重要。まぁ最初にa.exeとか書いといてもいいし。
最後のDebug.Printの部分をやっておくとエラーが起きていた場合にメッセージが出るので幸せになれる。