⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lexicalreorderingtable.h.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
#ifndef LEXICAL_REORDERING_TABLE_H#define LEXICAL_REORDERING_TABLE_H//stdlib dependencies:#include <vector>#include <map>#include <string>#include <iostream>//moses dependencies:#include "TypeDef.h"#include "Phrase.h"#include "InputType.h"#include "ConfusionNet.h"#include "Sentence.h"#include "PrefixTreeMap.h"class Phrase;class InputType;class ConfusionNet;//additional typestypedef std::vector<float>      Score;typedef std::vector<FactorType> FactorList;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:  static LexicalReorderingTable* LoadAvailable(const std::string& filePath, const FactorList& f_factors, const FactorList& e_factors, const FactorList& c_factors); public:  virtual Score GetScore(const Phrase& f, const Phrase& e, const Phrase& c) = 0;  virtual void InitializeForInput(const InputType&){    /* override for on-demand loading */  };  virtual void InitializeForInputPhrase(const Phrase&){  };  /*  int GetNumScoreComponents() const {    return m_NumScores;  }  */  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 LexicalReorderingTableMemory : public LexicalReorderingTable {  //implements LexicalReorderingTable saving all scores in one large std::map<> thingy  //to be used for non binary tables... uses a LOT of memory public:  LexicalReorderingTableMemory( const std::string& filePath,				const std::vector<FactorType>& f_factors,                                 const std::vector<FactorType>& e_factors,				const std::vector<FactorType>& c_factors);  virtual ~LexicalReorderingTableMemory(); public:  virtual std::vector<float> GetScore(const Phrase& f, const Phrase& e, const Phrase& c);  void DbgDump(std::ostream* out) const; private:  std::string MakeKey(const Phrase& f, const Phrase& e, const Phrase& c) const;  std::string MakeKey(const std::string& f, const std::string& e, const std::string& c) const;    void LoadFromFile(const std::string& filePath); private:  typedef std::map< std::string, std::vector<float> > TableType;  TableType m_Table; };class LexicalReorderingTableTree : public LexicalReorderingTable {  //implements LexicalReorderingTable using the crafty PDT code... public:  LexicalReorderingTableTree(const std::string& filePath,							 const std::vector<FactorType>& f_factors, 							 const std::vector<FactorType>& e_factors,							 const std::vector<FactorType>& c_factors);  ~LexicalReorderingTableTree(); public:  bool IsCacheEnabled() const {    return m_UseCache;  };  void EnableCache() {    m_UseCache = true;  };  void DisableCache() {    m_UseCache = false;  };  void ClearCache(){	m_Cache.clear();  };  virtual std::vector<float> GetScore(const Phrase& f, const Phrase& e, const Phrase& c);  virtual void InitializeForInput(const InputType& input);  virtual void InitializeForInputPhrase(const Phrase& f){	ClearCache();	auxCacheForSrcPhrase(f);  } public:  static bool Create(std::istream& inFile, const std::string& outFileName); private:  std::string MakeCacheKey(const Phrase& f, const Phrase& e) const;  IPhrase     MakeTableKey(const Phrase& f, const Phrase& e) const;    void Cache(const ConfusionNet& input);  void Cache(const Sentence& input);  void  auxCacheForSrcPhrase(const Phrase& f);  Score auxFindScoreForContext(const Candidates& cands, const Phrase& contex); private:  //typedef LexicalReorderingCand          CandType;  typedef std::map< std::string, Candidates > CacheType;  typedef PrefixTreeMap        TableType;    static const int SourceVocId = 0;  static const int TargetVocId = 1;  bool      m_UseCache;  CacheType m_Cache;  TableType m_Table;};#endif //LEXICAL_REORDERING_TABLE_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -