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日にちょっと修正<-