| #pragma once |
|
|
| #include <vector> |
|
|
| #include <boost/shared_ptr.hpp> |
| #include <boost/unordered_map.hpp> |
| #include <boost/unordered_set.hpp> |
|
|
| #include "moses/InputType.h" |
| #include "moses/Syntax/KBestExtractor.h" |
| #include "moses/Syntax/Manager.h" |
| #include "moses/Syntax/SVertexStack.h" |
| #include "moses/Word.h" |
|
|
| #include "Forest.h" |
| #include "HyperTree.h" |
| #include "PVertexToStackMap.h" |
|
|
| namespace Moses |
| { |
| namespace Syntax |
| { |
|
|
| struct SHyperedge; |
|
|
| namespace F2S |
| { |
|
|
| template<typename RuleMatcher> |
| class Manager : public Syntax::Manager |
| { |
| public: |
| Manager(ttasksptr const& ttask); |
|
|
| void Decode(); |
|
|
| |
| const SHyperedge *GetBestSHyperedge() const; |
|
|
| typedef std::vector<boost::shared_ptr<KBestExtractor::Derivation> > kBestList_t; |
| void ExtractKBest(std::size_t k, kBestList_t& kBestList, |
| bool onlyDistinct=false) const; |
|
|
| void OutputDetailedTranslationReport(OutputCollector *collector) const; |
|
|
| private: |
| const Forest::Vertex &FindRootNode(const Forest &); |
|
|
| void InitializeRuleMatchers(); |
|
|
| void InitializeStacks(); |
|
|
| bool IsUnknownSourceWord(const Word &) const; |
|
|
| void RecombineAndSort(const std::vector<SHyperedge*> &, SVertexStack &); |
|
|
| boost::shared_ptr<const Forest> m_forest; |
| const Forest::Vertex *m_rootVertex; |
| std::size_t m_sentenceLength; |
| PVertexToStackMap m_stackMap; |
| boost::shared_ptr<HyperTree> m_glueRuleTrie; |
| std::vector<boost::shared_ptr<RuleMatcher> > m_mainRuleMatchers; |
| boost::shared_ptr<RuleMatcher> m_glueRuleMatcher; |
| }; |
|
|
| } |
| } |
| } |
|
|
| |
| #include "Manager-inl.h" |
|
|