#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は利用されなかった |