From 7cc92b65a3185aa242088d830e166e495674efc9 Mon Sep 17 00:00:00 2001 From: redpony Date: Tue, 22 Jun 2010 05:12:27 +0000 Subject: initial checkin git-svn-id: https://ws10smt.googlecode.com/svn/trunk@2 ec762483-ff6d-05da-a07a-a48fb63a330f --- decoder/translator.h | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 decoder/translator.h (limited to 'decoder/translator.h') diff --git a/decoder/translator.h b/decoder/translator.h new file mode 100644 index 00000000..6b0a02e4 --- /dev/null +++ b/decoder/translator.h @@ -0,0 +1,82 @@ +#ifndef _TRANSLATOR_H_ +#define _TRANSLATOR_H_ + +#include +#include +#include +#include +#include + +class Hypergraph; +class SentenceMetadata; + +// Workflow: for each sentence to be translated +// 1) call ProcessMarkupHints(markup) +// 2) call Translate(...) +// 3) call SentenceComplete() +class Translator { + public: + Translator() : state_(kUninitialized) {} + virtual ~Translator(); + // returns true if goal reached, false otherwise + // minus_lm_forest will contain the unpruned forest. the + // feature values from the phrase table / grammar / etc + // should be in the forest already - the "late" features + // should not just copy values that are available without + // any context or computation. + // SentenceMetadata contains information about the sentence, + // but it is an input/output parameter since the Translator + // is also responsible for setting the value of src_len. + bool Translate(const std::string& src, + SentenceMetadata* smeta, + const std::vector& weights, + Hypergraph* minus_lm_forest); + + // This is called before Translate(...) with the sentence- + // level markup passed in. This can be used to set sentence- + // specific behavior of the translator. + void ProcessMarkupHints(const std::map& kv); + + // Free any sentence-specific resources + void SentenceComplete(); + protected: + virtual bool TranslateImpl(const std::string& src, + SentenceMetadata* smeta, + const std::vector& weights, + Hypergraph* minus_lm_forest) = 0; + virtual void ProcessMarkupHintsImpl(const std::map& kv); + virtual void SentenceCompleteImpl(); + private: + enum State { kUninitialized, kReadyToTranslate, kTranslated }; + State state_; +}; + +class SCFGTranslatorImpl; +class SCFGTranslator : public Translator { + public: + SCFGTranslator(const boost::program_options::variables_map& conf); + protected: + bool TranslateImpl(const std::string& src, + SentenceMetadata* smeta, + const std::vector& weights, + Hypergraph* minus_lm_forest); + void ProcessMarkupHintsImpl(const std::map& kv); + void SentenceCompleteImpl(); + private: + boost::shared_ptr pimpl_; +}; + +class FSTTranslatorImpl; +class FSTTranslator : public Translator { + public: + FSTTranslator(const boost::program_options::variables_map& conf); + private: + bool TranslateImpl(const std::string& src, + SentenceMetadata* smeta, + const std::vector& weights, + Hypergraph* minus_lm_forest); + private: + boost::shared_ptr pimpl_; +}; + +#endif -- cgit v1.2.3