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

📄 prefixtreemap.h.svn-base

📁 moses开源的机器翻译系统
💻 SVN-BASE
字号:
#ifndef PREFIX_TREE_MAP_H#define PREFIX_TREE_MAP_H#include<vector>#include<climits>#include<iostream>#include "PrefixTree.h"#include "File.h"#include "LVoc.h"#include "ObjectPool.h"typedef PrefixTreeF<LabelId,OFF_T> PTF;typedef FilePtr<PTF>               CPT;typedef std::vector<CPT>           Data;typedef LVoc<std::string>          WordVoc;class GenericCandidate {public:  typedef std::vector<IPhrase>              PhraseList;  typedef std::vector< std::vector<float> > ScoreList;public:  GenericCandidate(){  };  GenericCandidate(const GenericCandidate& other)    : m_PhraseList(other.m_PhraseList), m_ScoreList(other.m_ScoreList) {  };  GenericCandidate(const PhraseList& p, const ScoreList& s)	: m_PhraseList(p), m_ScoreList(s) {  };  ~GenericCandidate(){  };public:  size_t NumPhrases() const {    return m_PhraseList.size();  };  size_t NumScores()  const {    return m_ScoreList.size();  };  const IPhrase& GetPhrase(unsigned int i) const {    return m_PhraseList.at(i);  }  const std::vector<float>& GetScore(unsigned int i) const {    return m_ScoreList.at(i);  }  void readBin(FILE* f);  void writeBin(FILE* f) const;private:  PhraseList m_PhraseList;  ScoreList  m_ScoreList;};/*class PPtr { public:  typedef unsigned IndexType; public:  PPtr(PTF const* p, IndexType i, bool isRoot)    : m_Ptr(p), m_Index(i), m_IsRoot(isRoot){  };  ~PPtr(){  };};*/struct PPimp {         PTF const*p;unsigned idx;bool root;                  PPimp(PTF const* x,unsigned i,bool b) : p(x),idx(i),root(b) {}         bool isValid() const {return root || (p && idx<p->size());}          bool isRoot() const {return root;}         PTF const* ptr() const {return p;}};class Candidates : public std::vector<GenericCandidate> {  typedef std::vector<GenericCandidate> MyBase; public:  Candidates() : MyBase() {  };	void writeBin(FILE* f) const;	void readBin(FILE* f);};class PrefixTreeMap { public:  PrefixTreeMap() : m_FileSrc(0), m_FileTgt(0) {    PTF::setDefault(InvalidOffT);  }  ~PrefixTreeMap() {    if(m_FileSrc) {fClose(m_FileSrc);}    if(m_FileTgt) {fClose(m_FileTgt);}    FreeMemory();  } public:  static const LabelId MagicWord;  public:  void FreeMemory();  int Read(const std::string& fileNameStem, int numVocs = -1);	  void GetCandidates(const IPhrase& key, Candidates* cands);  void GetCandidates(const PPimp& p, Candidates* cands);  std::vector< std::string const * > ConvertPhrase(const IPhrase& p, unsigned int voc) const;  IPhrase ConvertPhrase(const std::vector< std::string >& p, unsigned int voc) const;  LabelId ConvertWord(const std::string& w, unsigned int voc) const;  std::string ConvertWord(LabelId w, unsigned int voc) const;public: //low level   PPimp* GetRoot();  PPimp* Extend(PPimp* p, LabelId wi);  PPimp* Extend(PPimp* p, const std::string w, size_t voc){    return Extend(p, ConvertWord(w,voc));  } private:  Data  m_Data;  FILE* m_FileSrc;   FILE* m_FileTgt;  std::vector<WordVoc*> m_Voc;  ObjectPool<PPimp>     m_PtrPool; };#endif //PREFIX_TREE_MAP_H

⌨️ 快捷键说明

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