#include <slm.h> double SLMGetBOProb(SLMNgram *ng, int len, SLMWordID *idarray, SLMBOStatus *status);
SLMBOStatus型のデータは,次のように定義されている.
typedef struct { unsigned char len; /* 評価した n-gram の長さ */ char hit[MAX_GRAM]; /* ヒット状況 */ float ng_prob; /* 単語の場合 P(w|w'),クラスの場合 P(c|c') */ float ug_prob; /* クラスの場合 P(w|c) */ } SLMBOStatus;lenは評価されたn-gramの長さである.SLMGetBOProb() では,与えた単語の組の長さよりも 短い言語モデルを利用することが可能であるが(例えば,長さ3のidarray をbigramモデルで評価することができる),この時には実際に計算された 長さがlenに格納される.hitはn-gramのヒット状況を 示す配列であり,この中には次の値のいずれかが格納される.
SLM_STAT_HIT | その長さのn-gramが存在した |
SLM_STAT_BO_WITH_ALPHA | その長さのn-gramが存在せず,back-offによって短いn-gramから確率を計算した |
SLM_STAT_BO | その長さのn-gramは利用されなかった |