diff options
Diffstat (limited to 'decoder/apply_fsa_models.h')
-rwxr-xr-x | decoder/apply_fsa_models.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/decoder/apply_fsa_models.h b/decoder/apply_fsa_models.h index 0a8615b5..64ebab39 100755 --- a/decoder/apply_fsa_models.h +++ b/decoder/apply_fsa_models.h @@ -1,15 +1,42 @@ #ifndef _APPLY_FSA_MODELS_H_ #define _APPLY_FSA_MODELS_H_ -#include "ff_fsa_dynamic.h" +#include <iostream> +#include "feature_vector.h" struct FsaFeatureFunction; struct Hypergraph; struct SentenceMetadata; +struct ApplyFsaBy { + enum { + BU_CUBE, + BU_FULL, + EARLEY, + N_ALGORITHMS + }; + int pop_limit; // only applies to BU_FULL so far + bool IsBottomUp() const { + return algorithm==BU_FULL || algorithm==BU_CUBE; + } + int BottomUpAlgorithm() const; + int algorithm; + std::string name() const; + friend inline std::ostream &operator << (std::ostream &o,ApplyFsaBy const& c) { + return o << c.name(); + } + explicit ApplyFsaBy(int alg, int poplimit=200); + ApplyFsaBy(std::string const& name, int poplimit=200); + ApplyFsaBy(const ApplyFsaBy &o) : algorithm(o.algorithm) { } + static std::string all_names(); // space separated +}; + + void ApplyFsaModels(const Hypergraph& in, const SentenceMetadata& smeta, const FsaFeatureFunction& fsa, + DenseWeightVector const& weights, // pre: in is weighted by these (except with fsa featval=0 before this) + ApplyFsaBy const& cfg, Hypergraph* out); #endif |