現在、Pythonで高速POSタグ付け実装が必要なNLPアプリケーションを作成しています。タグラーはC++ラッパーインターフェースを持っています。PythonでC++ライブラリをラップしてカスタムタイプを処理する
#include "POSTagger.h"
extern "C" POSTagger* initTagger(const char* fileName, bool Normalize,
double BeamThreshold, bool SentStartHeuristic,
int MaxBeamSize)
{
FILE *file = open_file(fileName, "rb");
POSTagger* tagger = new POSTagger(file, Normalize, BeamThreshold,
SentStartHeuristic, MaxBeamSize);
fclose(file);
return tagger;
}
extern "C" void getTags(POSTagger* tagger, char** words, int sentLen,
char** tags)
{
Sentence sent(words, sentLen);
tagger->annotate(sent);
for(size_t i=0; i<sent.token.size(); i++)
tags[i] = strdup(tagger->tagmap.name(sent.token[i].tag));
}
extern "C" void destroyTagger(POSTagger* tagger) {
delete tagger;
}
私は決してPythonでC++のラッパーを書いたことがありません。だから、いくつかの質問があります:
私はカスタムC++クラスのインスタンスをPythonで保存できますか? これまで私はそれを見たことがありません。私が行ったすべての例は、基本的なデータ型のみを返しました。 (このposタグャーは言語セットで初期化する必要がありますが、メモリにロードするには時間がかかるため、すべてのタグ付けプロシージャーを作成するためにラッパーを書き直すのではなく、初期化して保管するだけですタグ付き文字列)
1が可能な場合:最も簡単な方法は何ですか?
Cにはクラスがありません。 C++を意味しますか? – Daenyth
@Daenyth申し訳ありませんが、投稿を編集しました。 –