00001 00002 #pragma once 00003 00004 #include "PhraseDictionary.h" 00005 #include "moses/TypeDef.h" 00006 #include "moses/TranslationTask.h" 00007 00008 namespace Moses 00009 { 00010 class ChartParser; 00011 class ChartCellCollectionBase; 00012 class ChartRuleLookupManager; 00013 00014 class PhraseDictionaryMemoryPerSentence : public PhraseDictionary 00015 { 00016 friend std::ostream& operator<<(std::ostream&, const PhraseDictionaryMemoryPerSentence&); 00017 00018 public: 00019 PhraseDictionaryMemoryPerSentence(const std::string &line); 00020 00021 void Load(AllOptions::ptr const& opts); 00022 00023 void InitializeForInput(ttasksptr const& ttask); 00024 00025 // for phrase-based model 00026 void GetTargetPhraseCollectionBatch(const InputPathList &inputPathQueue) const; 00027 00028 // for syntax/hiero model (CKY+ decoding) 00029 ChartRuleLookupManager* CreateRuleLookupManager(const ChartParser&, const ChartCellCollectionBase&, std::size_t); 00030 00031 TO_STRING(); 00032 00033 00034 protected: 00035 typedef boost::unordered_map<Phrase, TargetPhraseCollection::shared_ptr> Coll; 00036 mutable boost::thread_specific_ptr<Coll> m_coll; 00037 00038 Coll &GetColl() const; 00039 00040 }; 00041 00042 } // namespace Moses