A class that offers a generalised Viterbi decoder. More...
#include <include/EST_viterbi.h>
Public Member Functions | |
EST_Viterbi_Decoder (uclist_f_t a, unpath_f_t b) | |
EST_Viterbi_Decoder (uclist_f_t a, unpath_f_t b, int num_states) | |
~EST_Viterbi_Decoder () | |
void | set_beam_width (int w) |
Only for use in beam search mode: number of paths to consider. More... | |
void | set_cand_width (int w) |
Only for use in beam search mode: number of candidates to consider. More... | |
void | set_debug (int d) |
Output some debugging information. More... | |
void | set_big_is_good (int flag) |
EST_VTCandidate * | add_cand_prune (EST_VTCandidate *newcand, EST_VTCandidate *allcands) |
bool | vit_prune_path (double path_score, double score_cutoff) |
void | initialise (EST_Relation *r) |
Build the initial table from a EST_Relation. More... | |
void | set_pruning_parameters (float beam, float ob_beam) |
set beam widths for pruning More... | |
void | turn_on_debug () |
void | turn_on_trace () |
void | search (void) |
Do the the actual search. More... | |
bool | result (const EST_String &n) |
bool | result (EST_VTPath **bestPathEnd) |
void | copy_feature (const EST_String &n) |
Copy named feature from the best path to related stream item. More... | |
Public Attributes | |
EST_Features | f |
For holding values to pass to user called functions. More... | |
const double | vit_a_big_number |
Unfortunately using MAX_DOUBLE doesn't do the right thing (e.g. comparison don't work with MAX_DOUBLE on alphas), so we declare our own large number. More... | |
A class that offers a generalised Viterbi decoder.
This class can be used to find the best path through a set of candidates based on likelihoods of the candidates and some combination function. The candidate list and joining are not included in the decoder itself but are user defined functions that are specified at construction time.
Those functions need to return a list of candidates and score a join of a path to a candidate and (optionally define a state).
Although this offers a full Viterbi search it may also be used as a generalised beam search.
See viterbi_main.cc
for an example of using this.
Definition at line 134 of file EST_viterbi.h.
EST_Viterbi_Decoder::EST_Viterbi_Decoder | ( | uclist_f_t | a, |
unpath_f_t | b | ||
) |
Construct a decoder with given candidate function and join function, as number of states is given this implies a beam search
Definition at line 67 of file EST_viterbi.cc.
EST_Viterbi_Decoder::EST_Viterbi_Decoder | ( | uclist_f_t | a, |
unpath_f_t | b, | ||
int | num_states | ||
) |
Construct a decoder with given candidate function and join function with a state size as specified.
Definition at line 86 of file EST_viterbi.cc.
EST_Viterbi_Decoder::~EST_Viterbi_Decoder | ( | ) |
Definition at line 107 of file EST_viterbi.cc.
|
inline |
Only for use in beam search mode: number of paths to consider.
Definition at line 186 of file EST_viterbi.h.
|
inline |
Only for use in beam search mode: number of candidates to consider.
Definition at line 188 of file EST_viterbi.h.
|
inline |
Output some debugging information.
Definition at line 190 of file EST_viterbi.h.
|
inline |
Define whether good scores are bigger or smaller. This allows the search to work for likelihoods probabilities, scores or whatever
Definition at line 196 of file EST_viterbi.h.
EST_VTCandidate * EST_Viterbi_Decoder::add_cand_prune | ( | EST_VTCandidate * | newcand, |
EST_VTCandidate * | allcands | ||
) |
Add a new candidate to list if better than others, pruning the list if required.
Definition at line 465 of file EST_viterbi.cc.
bool EST_Viterbi_Decoder::vit_prune_path | ( | double | path_score, |
double | score_cutoff | ||
) |
Definition at line 403 of file EST_viterbi.cc.
void EST_Viterbi_Decoder::initialise | ( | EST_Relation * | r | ) |
Build the initial table from a EST_Relation.
Definition at line 112 of file EST_viterbi.cc.
void EST_Viterbi_Decoder::set_pruning_parameters | ( | float | beam, |
float | ob_beam | ||
) |
set beam widths for pruning
Definition at line 186 of file EST_viterbi.cc.
void EST_Viterbi_Decoder::turn_on_debug | ( | ) |
Definition at line 196 of file EST_viterbi.cc.
void EST_Viterbi_Decoder::turn_on_trace | ( | ) |
Definition at line 201 of file EST_viterbi.cc.
void EST_Viterbi_Decoder::search | ( | void | ) |
Do the the actual search.
Definition at line 207 of file EST_viterbi.cc.
bool EST_Viterbi_Decoder::result | ( | const EST_String & | n | ) |
Extract the result from the table and store it as a feature on the related EST_Item in the given EST_Relation named as n
. Return FALSE if no path is found.
Definition at line 515 of file EST_viterbi.cc.
bool EST_Viterbi_Decoder::result | ( | EST_VTPath ** | bestPathEnd | ) |
Extract the end point of the best path found during search. Return FALSE if no path is found.
Definition at line 539 of file EST_viterbi.cc.
void EST_Viterbi_Decoder::copy_feature | ( | const EST_String & | n | ) |
Copy named feature from the best path to related stream item.
Definition at line 556 of file EST_viterbi.cc.
EST_Features EST_Viterbi_Decoder::f |
For holding values to pass to user called functions.
Definition at line 168 of file EST_viterbi.h.
const double EST_Viterbi_Decoder::vit_a_big_number |
Unfortunately using MAX_DOUBLE doesn't do the right thing (e.g. comparison don't work with MAX_DOUBLE on alphas), so we declare our own large number.
Definition at line 173 of file EST_viterbi.h.