こちらのサイトを参考にしてMecabを使った自然言語を品詞に分解する処理をC++で記述しました.
しかし出力が文字化けしてしまいます.
環境としてCentOS 6.7とMacOS EL Capitan で確認しましたがどちらも文字化けしました.辞書はjumandicを使っています
文字化けするだけでなく品詞分解もおかしい結果が出力されています.
ちなみにシェルからmecabを起動して実行すると上手くいきます.
原因はなんなのでしょうか?個人的には文字列のエンコーディングがうまくいっていないのかと思います....
C++
1#include <vector> 2#include <cstring> 3#include <iostream> 4#include <mecab.h> 5#include <string> 6 7using namespace std; 8 9int main(int argc, char* argv[]) { 10 11 char input[] = u8"私はLinuxユーザです.毎日とても助けられています.MacBookAirをこの前売りに出しました."; 12 char buf[64]; 13 14 15 MeCab::Tagger *tagger = MeCab::createTagger (argc, argv); 16 vector<int> wordlist(0); 17 MeCab::Node* p; 18 int id = 0; 19 20 cout << "INPUT: " << input << endl; 21 cout << "RESULT" << endl; 22 23 const MeCab::Node* node = tagger->parseToNode(input);//形態素解析を行う. 24 for(p = node->next; p != NULL; id++) { 25 strcpy(buf,p->surface); 26 27 buf[p->length]='\0'; 28 cout << id << ":" << buf << endl; 29 p = p->next; 30 } 31 32 return 0; 33}
回答1件
あなたの回答
tips
プレビュー