2012年1月14日土曜日

らららMeCab

MeCabをC++で使ってみました。
ちょっと品詞のところは強引です<-
なんか任意のIDが割り当てられるみたいなんで、
それを利用すれば少しは強引じゃなくなるのかな・・・<-

下記のソースコードは形態素の品詞が
名詞か動詞であれば出力するようにしてるはず・・・<-
まだ仕様とか確認してない<-

// g++ mecab_test.cc -std=gnu++0x -lmecab

#include <iostream>
#include <string>
#include <memory>
#include <cstring>
#include <mecab.h>

int main(int argc, char **argv) {
  std::string text = "まずはそのふざけた幻想をぶち殺す";
  std::shared_ptr<MeCab::Tagger> tagger(MeCab::createTagger(argc, argv));
  const MeCab::Node *node = tagger->parseToNode(text.c_str());

  std::cout << text << std::endl;

  for (; node; node = node->next) {
    if (strstr(node->feature, "名詞,")  != NULL
        || strstr(node->feature, "動詞,")  != NULL) {
      std::cout << std::string(node->surface, node->length);
    }
  }

  std::cout << std::endl;

  return 0;
}
出力:

まずはそのふざけた幻想をぶち殺す
ふざけた幻想殺す



// 2012年1月14日にちょっと修正<-




0 件のコメント:

コメントを投稿