2012年1月14日土曜日

らららMeCab

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

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

  1. // g++ mecab_test.cc -std=gnu++0x -lmecab  
  2.   
  3. #include <iostream>  
  4. #include <string>  
  5. #include <memory>  
  6. #include <cstring>  
  7. #include <mecab.h>  
  8.   
  9. int main(int argc, char **argv) {  
  10.   std::string text = "まずはそのふざけた幻想をぶち殺す";  
  11.   std::shared_ptr<MeCab::Tagger> tagger(MeCab::createTagger(argc, argv));  
  12.   const MeCab::Node *node = tagger->parseToNode(text.c_str());  
  13.   
  14.   std::cout << text << std::endl;  
  15.   
  16.   for (; node; node = node->next) {  
  17.     if (strstr(node->feature, "名詞,")  != NULL  
  18.         || strstr(node->feature, "動詞,")  != NULL) {  
  19.       std::cout << std::string(node->surface, node->length);  
  20.     }  
  21.   }  
  22.   
  23.   std::cout << std::endl;  
  24.   
  25.   return 0;  
  26. }  
出力:

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



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




0 件のコメント:

コメントを投稿