C#でMecabのDLLを利用する | .NET Framework 2.0 と C#での開発ブログ

C#でMecabのDLLを利用する

MeCab (和布蕪)というオープンソース形態素解析エンジンがあるのですが、これはとっても楽しいおすすめソフトです。
オープンソース形態素解析エンジンにはChaSen, Juman, KAKASI等あるのですが、私はMeCabを利用しています。

MeCab: Yet Another Part-of-Speech and Morphological Analyzer
http://mecab.sourceforge.jp/

形態素解析エンジンでなにが出来るかというと、まぁ色々できるのですが、日本語をわかち書きしてみたり、文書を単語単位にわけて品詞を取得してみたりとあるのですが、私は漢字によみがなを振る為に利用しています。

形態素解析について 出典: フリー百科事典『ウィキペディア(Wikipedia)』http://ja.wikipedia.org/wiki/%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90

さて、本題ですが、私は今までMecabはBinary package for MS-Windowsに入っている[mecab.exe]にオプションを渡して結果をファイルに出力するようにし、C#で作ったプログラムから叩いて、結果ファイルを読込むといったスマートじゃない使い方をしてたのですが、下記のサイトを参考にしたらさくっとDLLが利用出来ちゃいました。

ぽぷら日記 「MecabをC#で使ってみるテスト」
http://www.doblog.com/weblog/myblog/10356/1754054#1754054

(Thanks!)

もう本当にここに書いてあるとおりDllImportしただけですぐ出来ます。

(↓自分のメモのためにも一応乗せときます)
#################################################################
[DllImport("libmecab.dll")]
extern static int mecab_new2(string arg);
[DllImport("libmecab.dll")]
extern static string mecab_sparse_tostr(int m, string str);
[DllImport("libmecab.dll")]
extern static void mecab_destroy(int m);

private string MecabTest(string str)
{
int p = mecab_new2(@" -d mecab\dic\ipadic -O ruby");
string s = mecab_sparse_tostr(p, str.Replace("\n", ""));
mecab_destroy(p);
s = s.Replace("\n", System.Environment.NewLine);
return s;
}
#################################################################

こんな感じでmecab_new2するときにオプションを渡せます。
この例では辞書のディレクトリの指定と出力フォーマットを指定してます。

ちなみにMecabはかなり高速に動作しますが、私はやはりBackgroundWorkerでこの処理は行っています。(まあ、当然ですね)

しかし、私だけかもしれませんが、形態素解析ってなんか研究者さま達のすっごくディープな世界で値段にするとすごいことになるイメージだったのですが、、、オープンソースなんすねぇ~。びっくりです。自分にとって今まで出来なかったことが出来るようにしてくれるソフトなので、テストしてるだけでもうひょうひょ言っちゃいます。

オープンソース形態素解析エンジンに携わっておられる方全てに多謝!