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 PhraseDictionaryMemoryPerSentenceOnDemand : public PhraseDictionary 00015 { 00016 friend std::ostream& operator<<(std::ostream&, const PhraseDictionaryMemoryPerSentenceOnDemand&); 00017 00018 public: 00019 PhraseDictionaryMemoryPerSentenceOnDemand(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 void SetParameter(const std::string& key, const std::string& value); 00032 00033 TargetPhraseCollection::shared_ptr GetTargetPhraseCollectionNonCacheLEGACY(const Phrase &source) const; 00034 00035 TO_STRING(); 00036 00037 00038 protected: 00039 typedef boost::unordered_map<Phrase, TargetPhraseCollection::shared_ptr> Coll; 00040 mutable boost::thread_specific_ptr<Coll> m_coll; 00041 00042 bool m_valuesAreProbabilities; 00043 00044 Coll &GetColl() const; 00045 00046 }; 00047 00048 } // namespace Moses