2009-02-04

MeCabによる解析  [by miyachi]

某所のお仕事でオープンソース公開されている形態素解析エンジン「MeCab」を使いました。なんだかLangEdgeの社名に相応しい(一応Languageをもじった社名なんです)仕事だったような(^^;; 作者様に感謝しつつ使わせて頂きました。

さてMeCabを使うだけならサンプルソースも付いているのでここで書くまでもなく簡単です。ただ今回は複数の候補を取り出す必要がありましが、これのサンプルソースがありませんでした。ネットで検索しても見つからなかったので自前で何とかしました。せっかくなので公開の許可も得られたのでここで公開しときます。以後ご興味があれば [続きを読む] にて。

まず解析するだけなら簡単です。以下はC++のサンプルです。

 MeCab::Tagger *tagger = MeCab::createTagger("");
 const char *result = tagger->parse(input);
 delete tagger;

これでresultに解析結果が表示されます。次は5候補を解析するサンプルです。

 MeCab::Tagger *tagger = MeCab::createTagger("");
 tagger->set_lattice_level(1); // ※ N-best
 tagger->parseNBest(5, input);
 tagger->parseNBestInit(input);
 for (int i = 0; i < 5; ++i)
 {
  MeCab::Node *node = tagger->nextNode();
  for(; node; node = node->next)
  {
   // 解析結果をnodeから取得する
  }
 }
 delete tagger;

説明は無くてもソースがあれば充分ですよね。エラーチェック等は省いてありますのでご注意ください。以上参考になれば幸いです。ちなみにmecab.exeを使う時に5候補を出すには > mecab.exe -N5 とします。
2009-02-04 13:00:27 - miyachi - [プログラミング] -

コメント一覧

コメント無し

コメントを書く

このアイテムは閲覧専用です。コメントの投稿、投票はできません。