| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #ifndef moses_LexicalReorderingTableCompact_h |
| #define moses_LexicalReorderingTableCompact_h |
|
|
| #include "BlockHashIndex.h" |
| #include "CanonicalHuffman.h" |
| #include "StringVector.h" |
| #include "../../TypeDef.h" |
| #include "../../Phrase.h" |
|
|
| namespace Moses2 |
| { |
|
|
| |
| class LexicalReorderingTable |
| { |
| public: |
| LexicalReorderingTable(const FactorList& f_factors, |
| const FactorList& e_factors, const FactorList& c_factors) : |
| m_FactorsF(f_factors), m_FactorsE(e_factors), m_FactorsC(c_factors) { |
| } |
|
|
| virtual ~LexicalReorderingTable() { |
| } |
|
|
| public: |
|
|
| virtual std::vector<float> |
| GetScore(const Phrase<Moses2::Word>& f, const Phrase<Moses2::Word>& e, const Phrase<Moses2::Word>& c) = 0; |
|
|
| virtual |
| void InitializeForInput() { |
| |
| } |
| ; |
|
|
| virtual |
| void InitializeForInputPhrase(const Phrase<Moses2::Word>&) { |
| } |
|
|
| const FactorList& GetFFactorMask() const { |
| return m_FactorsF; |
| } |
| const FactorList& GetEFactorMask() const { |
| return m_FactorsE; |
| } |
| const FactorList& GetCFactorMask() const { |
| return m_FactorsC; |
| } |
|
|
| virtual |
| void DbgDump(std::ostream* out) const { |
| *out << "Overwrite in subclass...\n"; |
| } |
| ; |
| |
|
|
| protected: |
| FactorList m_FactorsF; |
| FactorList m_FactorsE; |
| FactorList m_FactorsC; |
| }; |
|
|
| |
| class LexicalReorderingTableCompact: public LexicalReorderingTable |
| { |
| private: |
| static bool s_inMemoryByDefault; |
| bool m_inMemory; |
|
|
| size_t m_numScoreComponent; |
| bool m_multipleScoreTrees; |
|
|
| BlockHashIndex m_hash; |
|
|
| typedef CanonicalHuffman<float> ScoreTree; |
| std::vector<ScoreTree*> m_scoreTrees; |
|
|
| StringVector<unsigned char, unsigned long, MmapAllocator> m_scoresMapped; |
| StringVector<unsigned char, unsigned long, std::allocator> m_scoresMemory; |
|
|
| std::string MakeKey(const Phrase<Moses2::Word>& f, const Phrase<Moses2::Word>& e, const Phrase<Moses2::Word>& c) const; |
| std::string MakeKey(const std::string& f, const std::string& e, |
| const std::string& c) const; |
|
|
| public: |
| LexicalReorderingTableCompact(const std::string& filePath, |
| const std::vector<FactorType>& f_factors, |
| const std::vector<FactorType>& e_factors, |
| const std::vector<FactorType>& c_factors); |
|
|
| LexicalReorderingTableCompact(const std::vector<FactorType>& f_factors, |
| const std::vector<FactorType>& e_factors, |
| const std::vector<FactorType>& c_factors); |
|
|
| virtual |
| ~LexicalReorderingTableCompact(); |
|
|
| virtual std::vector<float> |
| GetScore(const Phrase<Moses2::Word>& f, const Phrase<Moses2::Word>& e, const Phrase<Moses2::Word>& c); |
|
|
| static LexicalReorderingTable* |
| CheckAndLoad(const std::string& filePath, |
| const std::vector<FactorType>& f_factors, |
| const std::vector<FactorType>& e_factors, |
| const std::vector<FactorType>& c_factors); |
|
|
| void |
| Load(std::string filePath); |
|
|
| }; |
|
|
| } |
|
|
| #endif |
|
|