00001
00002
00003
00004
00005
00006
00007
00008 #ifndef CRFPP_CRFPP_H_
00009 #define CRFPP_CRFPP_H_
00010
00011
00012 #ifdef __cplusplus
00013 #include <cstdio>
00014 #else
00015 #include <stdio.h>
00016 #endif
00017
00018 #ifdef __cplusplus
00019 extern "C" {
00020 #endif
00021
00022 #ifdef _WIN32
00023 #include <windows.h>
00024 # ifdef DLL_EXPORT
00025 # define CRFPP_DLL_EXTERN __declspec(dllexport)
00026 # define CRFPP_DLL_CLASS_EXTERN __declspec(dllexport)
00027 # else
00028 # define CRFPP_DLL_EXTERN __declspec(dllimport)
00029 # endif
00030 #endif
00031
00032 #ifndef CRFPP_DLL_EXTERN
00033 # define CRFPP_DLL_EXTERN extern
00034 #endif
00035
00036 #ifndef CRFPP_DLL_CLASS_EXTERN
00037 # define CRFPP_DLL_CLASS_EXTERN
00038 #endif
00039
00040 #ifndef SWIG
00041 typedef struct crfpp_t crfpp_t;
00042 typedef struct crfpp_model_t crfpp_model_t;
00043
00044
00045 CRFPP_DLL_EXTERN crfpp_model_t* crfpp_model_new(int, char**);
00046 CRFPP_DLL_EXTERN crfpp_model_t* crfpp_model_new2(const char*);
00047 CRFPP_DLL_EXTERN void crfpp_model_destroy(crfpp_model_t*);
00048 CRFPP_DLL_EXTERN const char * crfpp_model_strerror(crfpp_model_t *);
00049 CRFPP_DLL_EXTERN crfpp_t* crfpp_model_new_tagger(crfpp_model_t *);
00050
00051 CRFPP_DLL_EXTERN crfpp_t* crfpp_new(int, char**);
00052 CRFPP_DLL_EXTERN crfpp_t* crfpp_new2(const char*);
00053 CRFPP_DLL_EXTERN void crfpp_destroy(crfpp_t*);
00054 CRFPP_DLL_EXTERN int crfpp_set_model(crfpp_t *, crfpp_model_t *);
00055 CRFPP_DLL_EXTERN int crfpp_add2(crfpp_t*, size_t, const char **);
00056 CRFPP_DLL_EXTERN int crfpp_add(crfpp_t*, const char*);
00057 CRFPP_DLL_EXTERN size_t crfpp_size(crfpp_t*);
00058 CRFPP_DLL_EXTERN size_t crfpp_xsize(crfpp_t*);
00059 CRFPP_DLL_EXTERN size_t crfpp_dsize(crfpp_t*);
00060 CRFPP_DLL_EXTERN const float* crfpp_weight_vector(crfpp_t*);
00061 CRFPP_DLL_EXTERN size_t crfpp_result(crfpp_t*, size_t);
00062 CRFPP_DLL_EXTERN size_t crfpp_answer(crfpp_t*, size_t);
00063 CRFPP_DLL_EXTERN size_t crfpp_y(crfpp_t*, size_t);
00064 CRFPP_DLL_EXTERN size_t crfpp_ysize(crfpp_t*);
00065 CRFPP_DLL_EXTERN double crfpp_prob(crfpp_t*, size_t, size_t);
00066 CRFPP_DLL_EXTERN double crfpp_prob2(crfpp_t*, size_t);
00067 CRFPP_DLL_EXTERN double crfpp_prob3(crfpp_t*);
00068 CRFPP_DLL_EXTERN void crfpp_set_penalty(crfpp_t *, size_t i, size_t j, double penalty);
00069 CRFPP_DLL_EXTERN double crfpp_penalty(crfpp_t *, size_t i, size_t j);
00070 CRFPP_DLL_EXTERN double crfpp_alpha(crfpp_t*, size_t, size_t);
00071 CRFPP_DLL_EXTERN double crfpp_beta(crfpp_t*, size_t, size_t);
00072 CRFPP_DLL_EXTERN double crfpp_emisstion_cost(crfpp_t*, size_t, size_t);
00073 CRFPP_DLL_EXTERN double crfpp_next_transition_cost(crfpp_t*, size_t,
00074 size_t, size_t);
00075 CRFPP_DLL_EXTERN double crfpp_prev_transition_cost(crfpp_t*, size_t,
00076 size_t, size_t);
00077 CRFPP_DLL_EXTERN double crfpp_best_cost(crfpp_t*, size_t, size_t);
00078 CRFPP_DLL_EXTERN const int* crfpp_emittion_vector(crfpp_t*, size_t, size_t);
00079 CRFPP_DLL_EXTERN const int* crfpp_next_transition_vector(crfpp_t*, size_t,
00080 size_t, size_t);
00081 CRFPP_DLL_EXTERN const int* crfpp_prev_transition_vector(crfpp_t*, size_t,
00082 size_t, size_t);
00083 CRFPP_DLL_EXTERN double crfpp_Z(crfpp_t*);
00084 CRFPP_DLL_EXTERN int crfpp_parse(crfpp_t*);
00085 CRFPP_DLL_EXTERN int crfpp_empty(crfpp_t*);
00086 CRFPP_DLL_EXTERN int crfpp_clear(crfpp_t*);
00087 CRFPP_DLL_EXTERN int crfpp_next(crfpp_t*);
00088 CRFPP_DLL_EXTERN int crfpp_test(int, char **);
00089 CRFPP_DLL_EXTERN int crfpp_test2(const char *);
00090 CRFPP_DLL_EXTERN int crfpp_learn(int, char **);
00091 CRFPP_DLL_EXTERN int crfpp_learn2(const char *);
00092 CRFPP_DLL_EXTERN const char* crfpp_strerror(crfpp_t*);
00093 CRFPP_DLL_EXTERN const char* crfpp_yname(crfpp_t*, size_t);
00094 CRFPP_DLL_EXTERN const char* crfpp_y2(crfpp_t*, size_t);
00095 CRFPP_DLL_EXTERN const char* crfpp_x(crfpp_t*, size_t, size_t);
00096 CRFPP_DLL_EXTERN const char** crfpp_x2(crfpp_t*, size_t);
00097 CRFPP_DLL_EXTERN const char* crfpp_parse_tostr(crfpp_t*, const char*);
00098 CRFPP_DLL_EXTERN const char* crfpp_parse_tostr2(crfpp_t*,
00099 const char*, size_t);
00100 CRFPP_DLL_EXTERN const char* crfpp_parse_tostr3(crfpp_t*, const char*,
00101 size_t, char *, size_t);
00102 CRFPP_DLL_EXTERN const char* crfpp_tostr(crfpp_t*);
00103 CRFPP_DLL_EXTERN const char* crfpp_tostr2(crfpp_t*, char *, size_t);
00104
00105 CRFPP_DLL_EXTERN void crfpp_set_vlevel(crfpp_t *, unsigned int);
00106 CRFPP_DLL_EXTERN unsigned int crfpp_vlevel(crfpp_t *);
00107 CRFPP_DLL_EXTERN void crfpp_set_cost_factor(crfpp_t *, float);
00108 CRFPP_DLL_EXTERN float crfpp_cost_factor(crfpp_t *);
00109 CRFPP_DLL_EXTERN void crfpp_set_nbest(crfpp_t *, size_t);
00110 #endif
00111
00112 #ifdef __cplusplus
00113 }
00114 #endif
00115
00116
00117 #ifdef __cplusplus
00118
00119 namespace CRFPP {
00120
00121 class Tagger;
00122
00123 class CRFPP_DLL_CLASS_EXTERN Model {
00124 public:
00125 #ifndef SWIG
00126
00127
00128 virtual bool open(int argc, char** argv) = 0;
00129
00130
00131 virtual bool open(const char* arg) = 0;
00132 #endif
00133
00134
00135
00136 virtual Tagger *createTagger() const = 0;
00137
00138 virtual const char* what() = 0;
00139
00140 virtual ~Model() {}
00141 };
00142
00143 class CRFPP_DLL_CLASS_EXTERN Tagger {
00144 public:
00145 #ifndef SWIG
00146
00147
00148 virtual bool open(int argc, char** argv) = 0;
00149
00150
00151 virtual bool open(const char* arg) = 0;
00152
00153
00154 virtual bool add(size_t size, const char **str) = 0;
00155
00156
00157 virtual void close() = 0;
00158
00159
00160 virtual const float *weight_vector() const = 0;
00161 #endif
00162
00163
00164 virtual bool set_model(const Model &model) = 0;
00165
00166
00167 virtual void set_vlevel(unsigned int vlevel) = 0;
00168
00169
00170 virtual unsigned int vlevel() const = 0;
00171
00172
00173 virtual void set_cost_factor(float cost_factor) = 0;
00174
00175
00176 virtual float cost_factor() const = 0;
00177
00178
00179 virtual void set_nbest(size_t nbest) = 0;
00180
00181
00182 virtual size_t nbest() const = 0;
00183
00184
00185 virtual bool add(const char* str) = 0;
00186
00187
00188 virtual size_t size() const = 0;
00189
00190
00191 virtual size_t xsize() const = 0;
00192
00193
00194 virtual size_t dsize() const = 0;
00195
00196
00197 virtual size_t result(size_t i) const = 0;
00198
00199
00200 virtual size_t answer(size_t i) const = 0;
00201
00202
00203 virtual size_t y(size_t i) const = 0;
00204
00205
00206 virtual const char* y2(size_t i) const = 0;
00207
00208
00209 virtual const char* yname(size_t i) const = 0;
00210
00211
00212 virtual const char* x(size_t i, size_t j) const = 0;
00213
00214 #ifndef SWIG
00215
00216 virtual const char** x(size_t) const = 0;
00217 #endif
00218
00219
00220 virtual size_t ysize() const = 0;
00221
00222
00223 virtual double prob(size_t i, size_t j) const = 0;
00224
00225
00226
00227 virtual double prob(size_t i) const = 0;
00228
00229
00230 virtual double prob() const = 0;
00231
00232
00233
00234
00235
00236
00237 virtual void set_penalty(size_t i, size_t j, double penalty) = 0;
00238 virtual double penalty(size_t i, size_t j) const = 0;
00239
00240
00241 virtual double alpha(size_t i, size_t j) const = 0;
00242
00243
00244 virtual double beta(size_t i, size_t j) const = 0;
00245
00246
00247 virtual double emission_cost(size_t i, size_t j) const = 0;
00248
00249
00250
00251 virtual double next_transition_cost(size_t i,
00252 size_t j, size_t k) const = 0;
00253
00254
00255
00256 virtual double prev_transition_cost(size_t i,
00257 size_t j, size_t k) const = 0;
00258
00259
00260
00261 virtual double best_cost(size_t i, size_t j) const = 0;
00262
00263 #ifndef SWIG
00264
00265 virtual const int* emission_vector(size_t i, size_t j) const = 0;
00266
00267
00268
00269 virtual const int* next_transition_vector(size_t i,
00270 size_t j, size_t k) const = 0;
00271
00272
00273
00274 virtual const int* prev_transition_vector(size_t i,
00275 size_t j, size_t k) const = 0;
00276 #endif
00277
00278
00279 virtual double Z() const = 0;
00280
00281
00282 virtual bool parse() = 0;
00283
00284
00285 virtual bool empty() const = 0;
00286
00287
00288 virtual bool clear() = 0;
00289
00290
00291
00292
00293
00294 virtual bool next() = 0;
00295
00296
00297
00298 virtual const char* parse(const char* str) = 0;
00299
00300 #ifndef SWIG
00301
00302 virtual const char* toString() = 0;
00303
00304
00305
00306
00307 virtual const char* toString(char* result , size_t size) = 0;
00308
00309
00310
00311
00312
00313 virtual const char* parse(const char *str, size_t size) = 0;
00314
00315
00316
00317
00318 virtual const char* parse(const char *str, size_t size1,
00319 char *result, size_t size2) = 0;
00320 #endif
00321
00322 virtual const char* what() = 0;
00323
00324 virtual ~Tagger() {}
00325 };
00326
00327
00328
00329
00330
00331 CRFPP_DLL_EXTERN Tagger *createTagger(int argc, char **argv);
00332
00333
00334
00335 CRFPP_DLL_EXTERN Tagger *createTagger(const char *arg);
00336
00337
00338
00339 CRFPP_DLL_EXTERN Model *createModel(int argc, char **argv);
00340
00341
00342 CRFPP_DLL_EXTERN Model *createModelFromArray(int argc, char **argv,
00343 const char *buf, size_t size);
00344
00345
00346
00347 CRFPP_DLL_EXTERN Model *createModel(const char *arg);
00348
00349
00350 CRFPP_DLL_EXTERN Model *createModelFromArray(const char *arg,
00351 const char *buf, size_t size);
00352
00353
00354 CRFPP_DLL_EXTERN const char *getTaggerError();
00355
00356
00357 CRFPP_DLL_EXTERN const char *getLastError();
00358 }
00359
00360 #endif
00361 #endif