#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) | |
void | set_beam_width (int w) |
Only for use in beam search mode: number of paths to consider. | |
void | set_cand_width (int w) |
Only for use in beam search mode: number of candidates to consider. | |
void | set_debug (int d) |
Output some debugging information. | |
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}. | |
void | set_pruning_parameters (float beam, float ob_beam) |
set beam widths for pruning | |
void | turn_on_debug () |
void | turn_on_trace () |
void | search (void) |
Do the the actual search. | |
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. | |
Public Attributes | |
EST_Features | f |
For holding values to pass to user called functions. | |
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. | |
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 130 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 65 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 83 of file EST_viterbi.cc.
|
inline |
Define whether good scores are bigger or smaller. This allows the search to work for likelihoods probabilities, scores or whatever
Definition at line 192 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 461 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 511 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 535 of file EST_viterbi.cc.