MeCabは京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所共同研究ユニットプロジェクトを通じて開発されたオープンソース形態素解析エンジンです。(公式ページから抜粋)
詳しくは以下のサイトをご覧ください。
http://mecab.sourceforge.net/
特徴の中に各種スクリプト言語バインディングの項目がありC#も記載されています。ちなみにC#はスクリプト言語・・・ではないです(^-^;
ちょっと面白そうなので実際にC#でプログラムを組み、使ってみることにしました。下準備が大変かと思ったのですが、さすがに公式ページで紹介されているだけあって、すでにC#で使うためのライブラリを開発している人がいました。ありがとうございます!
http://mf3.dotpp.net/?Software%2FMeCabSharp
さて、このMeCabどのような処理が可能なのか?
EXE形式のMeCabを起動して「Windows 7ついに発売決定!」と入力すると以下のように形態素解析が行われます。
品詞や活用は公式サイトで推奨されているIPA辞書の情報です。
Windows 名詞,一般,*,*,*,*,*
7 名詞,数,*,*,*,*,*
ついに 副詞,一般,*,*,*,*,ついに,ツイニ,ツイニ
発売 名詞,サ変接続,*,*,*,*,発売,ハツバイ,ハツバイ
決定 名詞,サ変接続,*,*,*,*,決定,ケッテイ,ケッテイ
! 記号,一般,*,*,*,*,!,!,!
EOS
残念ながらWindows 7は辞書に登録されていないためWindowsと7に分かれてしまいますので、別途ユーザー辞書にWindows 7を登録しておく必要があります。
C#で呼び出す場合も簡単で、MeCabSharpを導入して以下のようなコードを実行します。(必要最低限のコードのみ記述)
Taggerの引数にオプションを指定することも可能で "-u C:\userdic.dic" のようにユーザー辞書を指定することもできます。
MeCab.Tagger mecab = new MeCab.Tagger()
result = mecab.parse(input);
戻り値はstringでEXE形式の出力がまるまる入るので、その後foreachでぐるぐる回してクラスなどに格納します。(私の場合)
String[] lineItems = result.Split('\n');
Foreach (string line in lineItems)
{
//ぐるぐる回す
}
今まで文字列処理に関しては正規表現で感動しましたが、MeCabもそれにおとらず使ってみると感動します。
MeCabは言語に依存しない実装になっているようで、辞書とアイデア次第でいろいろ面白いことができそうです。
興味のある方はライセンスを確認して是非試してみてください(^-^)/