diff --git a/defer/PhraseDictionaryInterpolated.cpp b/defer/PhraseDictionaryInterpolated.cpp index 93c74d956..83abf73ba 100644 --- a/defer/PhraseDictionaryInterpolated.cpp +++ b/defer/PhraseDictionaryInterpolated.cpp @@ -105,10 +105,10 @@ bool PhraseDictionaryInterpolated::Load( return true; } -void PhraseDictionaryInterpolated::InitializeForInput(InputType const& source) +void PhraseDictionaryInterpolated::InitializeForInput(ttasksptr const& ttask) { for (size_t i = 0; i < m_dictionaries.size(); ++i) { - m_dictionaries[i]->InitializeForInput(source); + m_dictionaries[i]->InitializeForInput(ttask); } } diff --git a/defer/PhraseDictionaryInterpolated.h b/defer/PhraseDictionaryInterpolated.h index 9bb4dcc3c..aee1de6fa 100644 --- a/defer/PhraseDictionaryInterpolated.h +++ b/defer/PhraseDictionaryInterpolated.h @@ -53,7 +53,7 @@ public: , float weightWP); virtual const TargetPhraseCollection *GetTargetPhraseCollection(const Phrase& src) const; - virtual void InitializeForInput(InputType const& source); + virtual void InitializeForInput(ttasksptr const& ttask); virtual ChartRuleLookupManager *CreateRuleLookupManager( const InputType &, const ChartCellCollectionBase &) { diff --git a/moses/FF/FeatureFunction.cpp b/moses/FF/FeatureFunction.cpp index baa2b5563..5eab202ae 100644 --- a/moses/FF/FeatureFunction.cpp +++ b/moses/FF/FeatureFunction.cpp @@ -190,12 +190,12 @@ void FeatureFunction::SetTuneableComponents(const std::string& value) } } -void -FeatureFunction -::InitializeForInput(ttasksptr const& ttask) -{ - InitializeForInput(*(ttask->GetSource().get())); -} +// void +// FeatureFunction +// ::InitializeForInput(ttasksptr const& ttask) +// { +// InitializeForInput(*(ttask->GetSource().get())); +// } void FeatureFunction diff --git a/moses/FF/FeatureFunction.h b/moses/FF/FeatureFunction.h index 56f6cdff0..d3d6ab168 100644 --- a/moses/FF/FeatureFunction.h +++ b/moses/FF/FeatureFunction.h @@ -121,15 +121,13 @@ public: size_t SetIndex(size_t const idx); protected: - virtual void - InitializeForInput(InputType const& source) { } virtual void CleanUpAfterSentenceProcessing(InputType const& source) { } public: //! Called before search and collecting of translation options virtual void - InitializeForInput(ttasksptr const& ttask); + InitializeForInput(ttasksptr const& ttask) { }; // clean up temporary memory, called after processing each sentence virtual void diff --git a/moses/FF/GlobalLexicalModel.cpp b/moses/FF/GlobalLexicalModel.cpp index d52d62a49..f4df403ae 100644 --- a/moses/FF/GlobalLexicalModel.cpp +++ b/moses/FF/GlobalLexicalModel.cpp @@ -3,6 +3,7 @@ #include "moses/StaticData.h" #include "moses/InputFileStream.h" #include "moses/TranslationOption.h" +#include "moses/TranslationTask.h" #include "moses/FactorCollection.h" #include "util/exception.hh" @@ -108,10 +109,13 @@ void GlobalLexicalModel::Load() } } -void GlobalLexicalModel::InitializeForInput( Sentence const& in ) +void GlobalLexicalModel::InitializeForInput(ttasksptr const& ttask) { + UTIL_THROW_IF2(ttask->GetSource()->GetType() != SentenceInput, + "GlobalLexicalModel works only with sentence input."); + Sentence const* s = reinterpret_cast(ttask->GetSource().get()); m_local.reset(new ThreadLocalStorage); - m_local->input = ∈ + m_local->input = s; } float GlobalLexicalModel::ScorePhrase( const TargetPhrase& targetPhrase ) const diff --git a/moses/FF/GlobalLexicalModel.h b/moses/FF/GlobalLexicalModel.h index a936c2e92..3d7f559d0 100644 --- a/moses/FF/GlobalLexicalModel.h +++ b/moses/FF/GlobalLexicalModel.h @@ -66,7 +66,7 @@ public: void SetParameter(const std::string& key, const std::string& value); - void InitializeForInput( Sentence const& in ); + void InitializeForInput(ttasksptr const& ttask); bool IsUseable(const FactorMask &mask) const; diff --git a/moses/FF/GlobalLexicalModelUnlimited.cpp b/moses/FF/GlobalLexicalModelUnlimited.cpp index a757c1c4e..434fa7fbb 100644 --- a/moses/FF/GlobalLexicalModelUnlimited.cpp +++ b/moses/FF/GlobalLexicalModelUnlimited.cpp @@ -3,6 +3,7 @@ #include "moses/StaticData.h" #include "moses/InputFileStream.h" #include "moses/Hypothesis.h" +#include "moses/TranslationTask.h" #include "util/string_piece_hash.hh" using namespace std; @@ -104,10 +105,13 @@ bool GlobalLexicalModelUnlimited::Load(const std::string &filePathSource, return true; } -void GlobalLexicalModelUnlimited::InitializeForInput( Sentence const& in ) +void GlobalLexicalModelUnlimited::InitializeForInput(ttasksptr const& ttask) { + UTIL_THROW_IF2(ttask->GetSource()->GetType() != SentenceInput, + "GlobalLexicalModel works only with sentence input."); + Sentence const* s = reinterpret_cast(ttask->GetSource().get()); m_local.reset(new ThreadLocalStorage); - m_local->input = ∈ + m_local->input = s; } void GlobalLexicalModelUnlimited::EvaluateWhenApplied(const Hypothesis& cur_hypo, ScoreComponentCollection* accumulator) const diff --git a/moses/FF/GlobalLexicalModelUnlimited.h b/moses/FF/GlobalLexicalModelUnlimited.h index 33c0d0010..3507da352 100644 --- a/moses/FF/GlobalLexicalModelUnlimited.h +++ b/moses/FF/GlobalLexicalModelUnlimited.h @@ -42,6 +42,7 @@ class GlobalLexicalModelUnlimited : public StatelessFeatureFunction typedef std::map< std::string, short > StringHash; struct ThreadLocalStorage { + // const Sentence *input; const Sentence *input; }; @@ -73,7 +74,7 @@ public: bool Load(const std::string &filePathSource, const std::string &filePathTarget); - void InitializeForInput( Sentence const& in ); + void InitializeForInput(ttasksptr const& ttask); const FFState* EmptyHypothesisState(const InputType &) const { return new DummyState(); diff --git a/moses/FF/LexicalReordering/LexicalReordering.h b/moses/FF/LexicalReordering/LexicalReordering.h index f39374622..fcbc2af1b 100644 --- a/moses/FF/LexicalReordering/LexicalReordering.h +++ b/moses/FF/LexicalReordering/LexicalReordering.h @@ -44,8 +44,8 @@ public: EmptyHypothesisState(const InputType &input) const; void - InitializeForInput(const InputType& i) { - if (m_table) m_table->InitializeForInput(i); + InitializeForInput(ttasksptr const& ttask) { + if (m_table) m_table->InitializeForInput(ttask); } Scores diff --git a/moses/FF/LexicalReordering/LexicalReorderingTable.cpp b/moses/FF/LexicalReordering/LexicalReorderingTable.cpp index 387874c34..e4da6eb6b 100644 --- a/moses/FF/LexicalReordering/LexicalReorderingTable.cpp +++ b/moses/FF/LexicalReordering/LexicalReorderingTable.cpp @@ -7,6 +7,7 @@ #include "moses/GenerationDictionary.h" #include "moses/TargetPhrase.h" #include "moses/TargetPhraseCollection.h" +#include "moses/TranslationTask.h" #if !defined WIN32 || defined __MINGW32__ || defined HAVE_CMPH #include "moses/TranslationModel/CompactPT/LexicalReorderingTableCompact.h" @@ -290,8 +291,9 @@ auxFindScoreForContext(const Candidates& cands, const Phrase& context) void LexicalReorderingTableTree:: -InitializeForInput(const InputType& input) +InitializeForInput(ttasksptr const& ttask) { + const InputType& input = *ttask->GetSource(); ClearCache(); if(ConfusionNet const* cn = dynamic_cast(&input)) { Cache(*cn); diff --git a/moses/FF/LexicalReordering/LexicalReorderingTable.h b/moses/FF/LexicalReordering/LexicalReorderingTable.h index 6c8e7e03c..9b50df1ab 100644 --- a/moses/FF/LexicalReordering/LexicalReorderingTable.h +++ b/moses/FF/LexicalReordering/LexicalReorderingTable.h @@ -54,7 +54,7 @@ public: virtual void - InitializeForInput(const InputType&) { + InitializeForInput(ttasksptr const& ttask) { /* override for on-demand loading */ }; @@ -177,7 +177,7 @@ public: virtual void - InitializeForInput(const InputType& input); + InitializeForInput(ttasksptr const& ttask); virtual void diff --git a/moses/FF/VW/VW.h b/moses/FF/VW/VW.h index bd59a41a4..88ca9ccfa 100644 --- a/moses/FF/VW/VW.h +++ b/moses/FF/VW/VW.h @@ -306,7 +306,8 @@ public: } } - virtual void InitializeForInput(InputType const& source) { + virtual void InitializeForInput(ttasksptr const& ttask) { + InputType const& source = ttask->GetSource(); // tabbed sentence is assumed only in training if (! m_train) return; diff --git a/moses/FF/VW/VWFeatureSourceExternalFeatures.h b/moses/FF/VW/VWFeatureSourceExternalFeatures.h index 09abe517b..4032714be 100644 --- a/moses/FF/VW/VWFeatureSourceExternalFeatures.h +++ b/moses/FF/VW/VWFeatureSourceExternalFeatures.h @@ -39,7 +39,8 @@ public: VWFeatureSource::SetParameter(key, value); } - virtual void InitializeForInput(InputType const& source) { + virtual void InitializeForInput(ttasksptr const& ttask) { + InputType const& source = ttask->GetSource(); UTIL_THROW_IF2(source.GetType() != TabbedSentenceInput, "This feature function requires the TabbedSentence input type"); diff --git a/moses/LM/IRST.cpp b/moses/LM/IRST.cpp index fe83812da..4e4d66571 100644 --- a/moses/LM/IRST.cpp +++ b/moses/LM/IRST.cpp @@ -402,7 +402,7 @@ bool LMCacheCleanup(const int sentences_done, const size_t m_lmcache_cleanup_thr return false; } -void LanguageModelIRST::InitializeForInput(InputType const& source) +void LanguageModelIRST::InitializeForInput(ttasksptr const& ttask) { //nothing to do #ifdef TRACE_CACHE diff --git a/moses/LM/IRST.h b/moses/LM/IRST.h index 63e306db9..e10751663 100644 --- a/moses/LM/IRST.h +++ b/moses/LM/IRST.h @@ -104,7 +104,7 @@ public: */ - void InitializeForInput(InputType const& source); + void InitializeForInput(ttasksptr const& ttask); void CleanUpAfterSentenceProcessing(const InputType& source); void set_dictionary_upperbound(int dub) { diff --git a/moses/LM/LDHT.cpp b/moses/LM/LDHT.cpp index 7a3b0ebd5..335fa94d6 100644 --- a/moses/LM/LDHT.cpp +++ b/moses/LM/LDHT.cpp @@ -83,7 +83,7 @@ public: LDHT::Client* getClientSafe(); LDHT::Client* initTSSClient(); virtual ~LanguageModelLDHT(); - virtual void InitializeForInput(InputType const& source); + virtual void InitializeForInput(ttasksptr const& ttask); virtual void CleanUpAfterSentenceProcessing(const InputType &source); virtual const FFState* EmptyHypothesisState(const InputType& input) const; virtual void CalcScore(const Phrase& phrase, @@ -189,7 +189,7 @@ LDHT::Client* LanguageModelLDHT::initTSSClient() return client; } -void LanguageModelLDHT::InitializeForInput(InputType const& source) +void LanguageModelLDHT::InitializeForInput(ttasksptr const& ttask) { getClientSafe()->clearCache(); m_start_tick = LDHT::Util::rdtsc(); diff --git a/moses/LM/Rand.cpp b/moses/LM/Rand.cpp index acd9b71c6..edf06fd05 100644 --- a/moses/LM/Rand.cpp +++ b/moses/LM/Rand.cpp @@ -134,7 +134,7 @@ LMResult LanguageModelRandLM::GetValue(const vector &contextFactor, return ret; } -void LanguageModelRandLM::InitializeForInput(InputType const& source) +void LanguageModelRandLM::InitializeForInput(ttasksptr const& ttask) { m_lm->initThreadSpecificData(); // Creates thread specific data iff // compiled with multithreading. } diff --git a/moses/LM/Rand.h b/moses/LM/Rand.h index 11aa5156d..caf367c8c 100644 --- a/moses/LM/Rand.h +++ b/moses/LM/Rand.h @@ -41,7 +41,7 @@ public: void Load(); virtual LMResult GetValue(const std::vector &contextFactor, State* finalState = NULL) const; - void InitializeForInput(InputType const& source); + void InitializeForInput(ttasksptr const& ttask); void CleanUpAfterSentenceProcessing(const InputType& source); protected: diff --git a/moses/LM/oxlm/OxLM.cpp b/moses/LM/oxlm/OxLM.cpp index 7700a9237..129bc2b07 100644 --- a/moses/LM/oxlm/OxLM.cpp +++ b/moses/LM/oxlm/OxLM.cpp @@ -176,9 +176,10 @@ void OxLM::savePersistentCache(const string& cache_file) const } template -void OxLM::InitializeForInput(const InputType& source) +void OxLM::InitializeForInput(ttasksptr const& ttask) { - LanguageModelSingleFactor::InitializeForInput(source); + const InputType& source = ttask->GetSource(); + LanguageModelSingleFactor::InitializeForInput(ttask); if (persistentCache) { if (!cache.get()) { diff --git a/moses/LM/oxlm/OxLM.h b/moses/LM/oxlm/OxLM.h index 446758b2a..4056ccab9 100644 --- a/moses/LM/oxlm/OxLM.h +++ b/moses/LM/oxlm/OxLM.h @@ -30,7 +30,7 @@ public: const std::vector &contextFactor, State* finalState = 0) const; - virtual void InitializeForInput(const InputType& source); + virtual void InitializeForInput(ttasksptr const& ttask); virtual void CleanUpAfterSentenceProcessing(const InputType& source); diff --git a/moses/LM/oxlm/SourceOxLM.cpp b/moses/LM/oxlm/SourceOxLM.cpp index 408208e3b..9e41b3bb7 100644 --- a/moses/LM/oxlm/SourceOxLM.cpp +++ b/moses/LM/oxlm/SourceOxLM.cpp @@ -101,9 +101,10 @@ void SourceOxLM::SetParameter(const string& key, const string& value) } } -void SourceOxLM::InitializeForInput(const InputType& source) +void SourceOxLM::InitializeForInput(ttasksptr const& ttask) { - BilingualLM::InitializeForInput(source); + const InputType& source = ttasksptr->GetSource(); + BilingualLM::InitializeForInput(ttask, source); if (persistentCache) { if (!cache.get()) { diff --git a/moses/LM/oxlm/SourceOxLM.h b/moses/LM/oxlm/SourceOxLM.h index 945bbda6e..11290ebc7 100644 --- a/moses/LM/oxlm/SourceOxLM.h +++ b/moses/LM/oxlm/SourceOxLM.h @@ -31,7 +31,7 @@ private: void SetParameter(const std::string& key, const std::string& value); - void InitializeForInput(const InputType& source); + void InitializeForInput(ttasksptr const& ttask); void CleanUpAfterSentenceProcessing(const InputType& source); diff --git a/moses/TranslationModel/PhraseDictionary.h b/moses/TranslationModel/PhraseDictionary.h index 6c30d5acd..9cdb81089 100644 --- a/moses/TranslationModel/PhraseDictionary.h +++ b/moses/TranslationModel/PhraseDictionary.h @@ -117,7 +117,7 @@ public: virtual TargetPhraseCollection const * - GetTargetPhraseCollectionLEGACY(ttasksptr const& ttask, const Phrase& src) { + GetTargetPhraseCollectionLEGACY(ttasksptr const& ttask, const Phrase& src) const { return GetTargetPhraseCollectionLEGACY(src); } @@ -133,7 +133,7 @@ public: } //! Create entry for translation of source to targetPhrase - virtual void InitializeForInput(InputType const& source) { + virtual void InitializeForInput(ttasksptr const& ttask) { } // clean up temporary memory, called after processing each sentence virtual void CleanUpAfterSentenceProcessing(const InputType& source) { diff --git a/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.cpp b/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.cpp index 04f3630ca..5fc569c90 100644 --- a/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.cpp +++ b/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.cpp @@ -145,7 +145,7 @@ void PhraseDictionaryDynamicCacheBased::SetParameter(const std::string& key, con } } -void PhraseDictionaryDynamicCacheBased::InitializeForInput(InputType const& source) +void PhraseDictionaryDynamicCacheBased::InitializeForInput(ttasksptr const& ttask) { ReduceCache(); } diff --git a/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.h b/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.h index 41037ba34..8aee16051 100644 --- a/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.h +++ b/moses/TranslationModel/PhraseDictionaryDynamicCacheBased.h @@ -123,7 +123,7 @@ public: void SetParameter(const std::string& key, const std::string& value); - void InitializeForInput(InputType const& source); + void InitializeForInput(ttasksptr const& ttask); // virtual void InitializeForInput(InputType const&) { // /* Don't do anything source specific here as this object is shared between threads.*/ diff --git a/moses/TranslationModel/PhraseDictionaryMultiModel.h b/moses/TranslationModel/PhraseDictionaryMultiModel.h index 78016b676..eb3152c3c 100644 --- a/moses/TranslationModel/PhraseDictionaryMultiModel.h +++ b/moses/TranslationModel/PhraseDictionaryMultiModel.h @@ -85,7 +85,7 @@ public: #endif // functions below required by base class virtual const TargetPhraseCollection* GetTargetPhraseCollectionLEGACY(const Phrase& src) const; - virtual void InitializeForInput(InputType const&) { + virtual void InitializeForInput(ttasksptr const& ttask) { /* Don't do anything source specific here as this object is shared between threads.*/ } ChartRuleLookupManager *CreateRuleLookupManager(const ChartParser &, const ChartCellCollectionBase&, std::size_t); diff --git a/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h b/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h index 725c66eb9..7e4f32f30 100644 --- a/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h +++ b/moses/TranslationModel/PhraseDictionaryMultiModelCounts.h @@ -96,7 +96,7 @@ public: std::vector MinimizePerplexity(std::vector > &phrase_pair_vector); #endif // functions below required by base class - virtual void InitializeForInput(InputType const&) { + virtual void InitializeForInput(ttasksptr const& ttask) { /* Don't do anything source specific here as this object is shared between threads.*/ } diff --git a/moses/TranslationModel/PhraseDictionaryTreeAdaptor.cpp b/moses/TranslationModel/PhraseDictionaryTreeAdaptor.cpp index 9879bc3f8..ca1638708 100644 --- a/moses/TranslationModel/PhraseDictionaryTreeAdaptor.cpp +++ b/moses/TranslationModel/PhraseDictionaryTreeAdaptor.cpp @@ -13,6 +13,7 @@ #include "moses/StaticData.h" #include "moses/UniqueObject.h" #include "moses/PDTAimp.h" +#include "moses/TranslationTask.h" #include "util/exception.hh" using namespace std; @@ -40,8 +41,9 @@ void PhraseDictionaryTreeAdaptor::Load() SetFeaturesToApply(); } -void PhraseDictionaryTreeAdaptor::InitializeForInput(InputType const& source) +void PhraseDictionaryTreeAdaptor::InitializeForInput(ttasksptr const& ttask) { + InputType const& source = *ttask->GetSource(); const StaticData &staticData = StaticData::Instance(); ReduceCache(); diff --git a/moses/TranslationModel/PhraseDictionaryTreeAdaptor.h b/moses/TranslationModel/PhraseDictionaryTreeAdaptor.h index 0810afda2..0ed8ed612 100644 --- a/moses/TranslationModel/PhraseDictionaryTreeAdaptor.h +++ b/moses/TranslationModel/PhraseDictionaryTreeAdaptor.h @@ -61,7 +61,7 @@ public: // returns null pointer if nothing found TargetPhraseCollection const* GetTargetPhraseCollectionNonCacheLEGACY(Phrase const &src) const; - void InitializeForInput(InputType const& source); + void InitializeForInput(ttasksptr const& ttask); void CleanUpAfterSentenceProcessing(InputType const& source); virtual ChartRuleLookupManager *CreateRuleLookupManager( diff --git a/moses/TranslationModel/ProbingPT/ProbingPT.cpp b/moses/TranslationModel/ProbingPT/ProbingPT.cpp index 5abc9ccdd..19b7e8795 100644 --- a/moses/TranslationModel/ProbingPT/ProbingPT.cpp +++ b/moses/TranslationModel/ProbingPT/ProbingPT.cpp @@ -61,7 +61,7 @@ void ProbingPT::Load() } } -void ProbingPT::InitializeForInput(InputType const& source) +void ProbingPT::InitializeForInput(ttasksptr const& ttask) { ReduceCache(); } diff --git a/moses/TranslationModel/ProbingPT/ProbingPT.h b/moses/TranslationModel/ProbingPT/ProbingPT.h index b879760cb..c6cc69c89 100644 --- a/moses/TranslationModel/ProbingPT/ProbingPT.h +++ b/moses/TranslationModel/ProbingPT/ProbingPT.h @@ -23,7 +23,7 @@ public: void Load(); - void InitializeForInput(InputType const& source); + void InitializeForInput(ttasksptr const& ttask); // for phrase-based model void GetTargetPhraseCollectionBatch(const InputPathList &inputPathQueue) const; diff --git a/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.cpp b/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.cpp index 63ec38599..b1f684124 100644 --- a/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.cpp +++ b/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.cpp @@ -11,6 +11,7 @@ #include "moses/InputType.h" #include "moses/InputFileStream.h" #include "moses/TypeDef.h" +#include "moses/TranslationTask.h" #include "moses/StaticData.h" #include "Loader.h" #include "LoaderFactory.h" @@ -36,8 +37,9 @@ void PhraseDictionaryALSuffixArray::Load() SetFeaturesToApply(); } -void PhraseDictionaryALSuffixArray::InitializeForInput(InputType const& source) +void PhraseDictionaryALSuffixArray::InitializeForInput(ttasksptr const& ttask) { + InputType const& source = *ttask->GetSource(); // populate with rules for this sentence long translationId = source.GetTranslationId(); diff --git a/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.h b/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.h index 4a448ee05..79c8e11c5 100644 --- a/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.h +++ b/moses/TranslationModel/RuleTable/PhraseDictionaryALSuffixArray.h @@ -24,7 +24,7 @@ class PhraseDictionaryALSuffixArray : public PhraseDictionaryMemory public: PhraseDictionaryALSuffixArray(const std::string &line); void Load(); - void InitializeForInput(InputType const& source); + void InitializeForInput(ttasksptr const& ttask); void CleanUpAfterSentenceProcessing(const InputType& source); protected: diff --git a/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.cpp b/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.cpp index 95bd70e27..5f7ddf85d 100644 --- a/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.cpp +++ b/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.cpp @@ -43,6 +43,7 @@ #include "moses/TranslationModel/CYKPlusParser/ChartRuleLookupManagerMemoryPerSentence.h" #include "moses/TranslationModel/fuzzy-match/FuzzyMatchWrapper.h" #include "moses/TranslationModel/fuzzy-match/SentenceAlignment.h" +#include "moses/TranslationTask.h" #include "util/file.hh" #include "util/exception.hh" #include "util/random.hh" @@ -172,8 +173,9 @@ int removedirectoryrecursively(const char *dirname) return 1; } -void PhraseDictionaryFuzzyMatch::InitializeForInput(InputType const& inputSentence) +void PhraseDictionaryFuzzyMatch::InitializeForInput(ttasksptr const& ttask) { + InputType const& inputSentence = *ttask->GetSource(); #if defined __MINGW32__ char dirName[] = "moses.XXXXXX"; #else diff --git a/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.h b/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.h index 7759a0267..8751b7956 100644 --- a/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.h +++ b/moses/TranslationModel/RuleTable/PhraseDictionaryFuzzyMatch.h @@ -51,7 +51,7 @@ public: const ChartParser &parser, const ChartCellCollectionBase &, std::size_t); - void InitializeForInput(InputType const& inputSentence); + void InitializeForInput(ttasksptr const& ttask); void CleanUpAfterSentenceProcessing(const InputType& source); void SetParameter(const std::string& key, const std::string& value); diff --git a/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.cpp b/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.cpp index 795660c8d..e99385d82 100644 --- a/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.cpp +++ b/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.cpp @@ -25,6 +25,7 @@ #include "moses/InputPath.h" #include "moses/TranslationModel/CYKPlusParser/DotChartOnDisk.h" #include "moses/TranslationModel/CYKPlusParser/ChartRuleLookupManagerOnDisk.h" +#include "moses/TranslationTask.h" #include "OnDiskPt/OnDiskWrapper.h" #include "OnDiskPt/Word.h" @@ -78,8 +79,9 @@ const OnDiskPt::OnDiskWrapper &PhraseDictionaryOnDisk::GetImplementation() const return *dict; } -void PhraseDictionaryOnDisk::InitializeForInput(InputType const& source) +void PhraseDictionaryOnDisk::InitializeForInput(ttasksptr const& ttask) { + InputType const& source = *ttask->GetSource(); ReduceCache(); OnDiskPt::OnDiskWrapper *obj = new OnDiskPt::OnDiskWrapper(); diff --git a/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.h b/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.h index 4deb800f8..246690922 100644 --- a/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.h +++ b/moses/TranslationModel/RuleTable/PhraseDictionaryOnDisk.h @@ -75,7 +75,7 @@ public: const ChartCellCollectionBase &, std::size_t); - virtual void InitializeForInput(InputType const& source); + virtual void InitializeForInput(ttasksptr const& ttask); void GetTargetPhraseCollectionBatch(const InputPathList &inputPathQueue) const; const TargetPhraseCollection *GetTargetPhraseCollection(const OnDiskPt::PhraseNode *ptNode) const; diff --git a/moses/TranslationModel/SkeletonPT.cpp b/moses/TranslationModel/SkeletonPT.cpp index 22d05f1a0..8e2b1daa3 100644 --- a/moses/TranslationModel/SkeletonPT.cpp +++ b/moses/TranslationModel/SkeletonPT.cpp @@ -17,7 +17,7 @@ void SkeletonPT::Load() SetFeaturesToApply(); } -void SkeletonPT::InitializeForInput(InputType const& source) +void SkeletonPT::InitializeForInput(ttasksptr const& ttask) { ReduceCache(); } diff --git a/moses/TranslationModel/SkeletonPT.h b/moses/TranslationModel/SkeletonPT.h index 1c790c0ab..c18571080 100644 --- a/moses/TranslationModel/SkeletonPT.h +++ b/moses/TranslationModel/SkeletonPT.h @@ -18,7 +18,7 @@ public: void Load(); - void InitializeForInput(InputType const& source); + void InitializeForInput(ttasksptr const& ttask); // for phrase-based model void GetTargetPhraseCollectionBatch(const InputPathList &inputPathQueue) const; diff --git a/moses/TranslationModel/UG/mmsapt.cpp b/moses/TranslationModel/UG/mmsapt.cpp index 7eac93b38..4ce775877 100644 --- a/moses/TranslationModel/UG/mmsapt.cpp +++ b/moses/TranslationModel/UG/mmsapt.cpp @@ -593,7 +593,7 @@ namespace Moses inputPath.SetTargetPhrases(*this, targetPhrases, NULL); } } - + TargetPhraseCollection const* Mmsapt:: GetTargetPhraseCollectionLEGACY(const Phrase& src) const @@ -645,6 +645,7 @@ namespace Moses // get context-specific cache of items previously looked up sptr const& scope = ttask->GetScope(); sptr cache = scope->get(cache_key); + if (!cache) cache = m_cache; TPCollWrapper* ret = cache->get(phrasekey, dyn->revision()); // TO DO: we should revise the revision mechanism: we take the length // of the dynamic bitext (in sentences) at the time the PT entry diff --git a/moses/TranslationModel/UG/ptable-lookup.cc b/moses/TranslationModel/UG/ptable-lookup.cc index 94627a02c..81f5b5191 100644 --- a/moses/TranslationModel/UG/ptable-lookup.cc +++ b/moses/TranslationModel/UG/ptable-lookup.cc @@ -1,5 +1,6 @@ #include "mmsapt.h" #include "moses/TranslationModel/PhraseDictionaryTreeAdaptor.h" +#include "moses/TranslationTask.h" #include #include #include @@ -67,17 +68,19 @@ int main(int argc, char* argv[]) string line; while (true) { - Sentence phrase; - if (!phrase.Read(cin,ifo)) break; + boost::shared_ptr phrase(new Sentence); + if (!phrase->Read(cin,ifo)) break; + boost::shared_ptr ttask; + ttask = TranslationTask::create(phrase); if (pdta) { - pdta->InitializeForInput(phrase); + pdta->InitializeForInput(ttask); // do we also need to call CleanupAfterSentenceProcessing at the end? } - Phrase& p = phrase; + Phrase& p = *phrase; cout << p << endl; - TargetPhraseCollection const* trg = PT->GetTargetPhraseCollectionLEGACY(p); + TargetPhraseCollection const* trg = PT->GetTargetPhraseCollectionLEGACY(ttask,p); if (!trg) continue; vector order(trg->GetSize()); for (size_t i = 0; i < order.size(); ++i) order[i] = i;