KyTea API

KyTeaに戻る

このページは自分のC++プログラムからKyTeaを呼び出す方法を説明します。 C++以外の言語からKyTeaを呼び出すラッパーは以下のものがあります。 他の言語でもラッパーは募集中です。 作っていただいた方は是非ご連絡ください。

コンパイル環境

自分のプログラムからKyTeaを呼び出す前に、まずKyTeaのコンパイルとインストールを完了し、ヘッダーとライブラリファイルはちゃんとパスに入っていることを確認してください。 通常のKyTeaのインストールを行なった場合、以下のように-lkyteaを追加することでKyTeaのライブラリを利用することができます。

$ g++ -lkytea my-program.cpp

プログラムの例

以下のプログラムはKyTeaを使った簡単な文の解析を行います。 コードはKyTeaのsrc/apiディレクトリにもあります。

#include <iostream>
// KyTea自体のコードが入っているファイル
#include "kytea/kytea.h"
// KyteaSentenceやKyTeaWordなどのデータ構造を定義するファイル
#include "kytea/kytea-struct.h"

using namespace std;
using namespace kytea;

int main(int argc, char** argv) {// KyTeaを初期化する
    Kytea kytea;
    
   // モデルを読み込む
   //  モデルはバイナリでもテキストでも良く、文字コードは自動的に検出される
    kytea.readModel("model.bin");


    // StringUtilは通常のstringからKyTea内部で利用する形式に変換できます
    //  mapString:通常のstring→KyteaString
    //  showString:KyteaString→通常のstring
    StringUtil* util = kytea.getStringUtil(); 

    // 設定クラスKyteaConfigは様々な設定を格納する
    KyteaConfig* config = kytea.getConfig();

    // 一文を表すオブジェクトを作る
    KyteaSentence sentence(util->mapString("これはテストです。"));

    // 単語境界を推定する
    kytea.calculateWS(sentence);
    // 各タグ種類に対してタグ付与を行う
    for(int i = 0; i < config->getNumTags(); i++)
        kytea.calculateTags(sentence,i);

    // 各単語に対して
    const KyteaSentence::Words & words =  sentence.words;

    for(int i = 0; i < (int)words.size(); i++) {
        // 単語を出力する
        cout << util->showString(words[i].surf);

        // 各タグ種に対して
        for(int j = 0; j < (int)words[i].tags.size(); j++) {
            cout << "\t";
            // タグと信頼度を出力
            for(int k = 0; k < (int)words[i].tags[j].size(); k++) {
                cout << " " << util->showString(words[i].tags[j][k].first) << 
                        "/" << words[i].tags[j][k].second;
            }
        }

        cout << endl;
    }
    cout << endl;

}
KyTeaに戻る
Last Modified: 2011-06-17 by neubig