22 #ifndef TESSERACT_WORDREC_LANGUAGE_MODEL_DEFS_H_ 23 #define TESSERACT_WORDREC_LANGUAGE_MODEL_DEFS_H_ 76 : context(c), context_unichar_step_len(l), pruned(p), ngram_cost(nc),
77 ngram_and_classifier_cost(ncc) {}
100 LanguageModelFlagsType tcf,
103 const char *debug_uch)
104 : cost(c), curr_b(b), parent_vse(pe), competing_vse(NULL),
105 ratings_sum(b->rating()),
106 min_certainty(b->certainty()), adapted(b->IsAdapted()), length(1),
107 outline_length(ol), consistency_info(ci), associate_stats(as),
108 top_choice_flags(tcf), dawg_info(d), ngram_info(n),
110 debug_str = (debug_uch == NULL) ? NULL :
new STRING();
119 if (debug_uch != NULL) *debug_str += *(pe->
debug_str);
121 if (debug_str != NULL && debug_uch != NULL) *debug_str += debug_uch;
130 static int Compare(
const void *e1,
const void *e2) {
135 return (ve1->
cost < ve2->
cost) ? -1 : 1;
138 if (dawg_info != NULL && consistency_info.NumInconsistentCase() == 0) {
141 return consistency_info.Consistent();
146 if (curr_b == NULL)
return false;
153 void Print(
const char *msg)
const;
199 viterbi_state_entries_prunable_length(0),
200 viterbi_state_entries_prunable_max_cost(
MAX_FLOAT32),
201 viterbi_state_entries_length(0) {}
207 void Print(
const char *msg);
221 : updated(false), best_vse(NULL) {
222 beam.reserve(matrix_dimension);
223 for (
int i = 0; i < matrix_dimension; ++i)
242 #endif // TESSERACT_WORDREC_LANGUAGE_MODEL_DEFS_H_ bool updated
Flag to indicate whether anything was changed.
Bundle together all the things pertaining to the best choice/state.
LanguageModelDawgInfo * dawg_info
LanguageModelDawgInfo(DawgPositionVector *a, PermuterType pt)
LanguageModelNgramInfo * ngram_info
bool get_isalpha(UNICHAR_ID unichar_id) const
AssociateStats associate_stats
ViterbiStateEntry(ViterbiStateEntry *pe, BLOB_CHOICE *b, float c, float ol, const LMConsistencyInfo &ci, const AssociateStats &as, LanguageModelFlagsType tcf, LanguageModelDawgInfo *d, LanguageModelNgramInfo *n, const char *debug_uch)
BestChoiceBundle(int matrix_dimension)
Struct to store information maintained by various language model components.
float ngram_cost
-ln(P_ngram_model(path))
LanguageModelFlagsType top_choice_flags
ViterbiStateEntry_LIST viterbi_state_entries
Storage for the Viterbi state.
DawgPositionVector * active_dawgs
int viterbi_state_entries_prunable_length
Number and max cost of prunable paths in viterbi_state_entries.
PointerVector< LanguageModelState > beam
static int Compare(const void *e1, const void *e2)
float ngram_and_classifier_cost
-[ ln(P_classifier(path)) + scale_factor * ln(P_ngram_model(path)) ]
int context_unichar_step_len
ViterbiStateEntry * competing_vse
DANGERR fixpt
Places to try to fix the word suggested by ambiguity checking.
float viterbi_state_entries_prunable_max_cost
ViterbiStateEntry * parent_vse
bool HasAlnumChoice(const UNICHARSET &unicharset)
unsigned char LanguageModelFlagsType
Used for expressing various language model flags.
bool get_isdigit(UNICHAR_ID unichar_id) const
int viterbi_state_entries_length
Total number of entries in viterbi_state_entries.
ViterbiStateEntry * best_vse
Best ViterbiStateEntry and BLOB_CHOICE.
LanguageModelNgramInfo(const char *c, int l, bool p, float nc, float ncc)
BLOB_CHOICE * curr_b
Pointers to BLOB_CHOICE and parent ViterbiStateEntry (not owned by this).
LMConsistencyInfo consistency_info