diff options
Diffstat (limited to 'decoder/apply_fsa_models.cc')
-rwxr-xr-x | decoder/apply_fsa_models.cc | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/decoder/apply_fsa_models.cc b/decoder/apply_fsa_models.cc index 4431643f..bffd7033 100755 --- a/decoder/apply_fsa_models.cc +++ b/decoder/apply_fsa_models.cc @@ -1,3 +1,7 @@ +//see apply_fsa_models.README for notes on the l2r earley fsa+cfg intersection +//implementation in this file (also some comments in this file) +#define SAFE_VALGRIND 1 + #include "apply_fsa_models.h" #include <stdexcept> #include <cassert> @@ -21,7 +25,6 @@ #include "show.h" #include "string_to.h" -#define SAFE_VALGRIND 1 #define DFSA(x) x //fsa earley chart @@ -78,20 +81,13 @@ I'm using option 1. */ // if we don't greedy-binarize, we want to encode recognized prefixes p (X -> p . rest) efficiently. if we're doing this, we may as well also push costs so we can best-first select rules in a lazy fashion. this is effectively left-branching binarization, of course. + template <class K,class V,class Hash> struct fsa_map_type { - typedef std::map<K,V> type; + typedef std::map<K,V> type; // change to HASH_MAP ? }; -//template typedef +//template typedef - and macro to make it less painful #define FSA_MAP(k,v) fsa_map_type<k,v,boost::hash<k> >::type -typedef WordID LHS; // so this will be -NTHandle. - -struct get_second { - template <class P> - typename P::second_type const& operator()(P const& p) const { - return p.second; - } -}; struct PrefixTrieNode; typedef PrefixTrieNode *NodeP; @@ -136,7 +132,6 @@ ostream& print_map_by_nt(std::ostream &o,V const& v,CFG const*pcfg=print_cfg,cha return o; } - struct PrefixTrieEdge { PrefixTrieEdge() // : dest(0),w(TD::max_wordid) @@ -164,10 +159,8 @@ struct PrefixTrieEdge { print_cfg_rhs(o,w); o<<"{"<<p<<"}->"<<dest; } - }; - //note: ending a rule is handled with a special final edge, so that possibility can be explored in best-first order along with the rest (alternative: always finish a final rule by putting it on queue). this edge has no symbol on it. struct PrefixTrieNode { best_t p; // viterbi (max prob) of rule this node leads to - when building. telescope later onto edges for best-first. |