某所のお仕事でオープンソース公開されている
形態素解析エンジン「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 とします。