diff --git a/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.cpp b/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.cpp index 4675d06c8..072e482de 100644 --- a/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.cpp +++ b/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.cpp @@ -8,7 +8,7 @@ using namespace std; namespace Moses { PhraseDictionaryMemoryPerSentenceOnDemand::PhraseDictionaryMemoryPerSentenceOnDemand(const std::string &line) - : PhraseDictionary(line, true) + : PhraseDictionary(line, true), m_valuesAreProbabilities(true) { ReadParameters(); } @@ -67,8 +67,10 @@ void PhraseDictionaryMemoryPerSentenceOnDemand::InitializeForInput(ttasksptr con // score for this phrase table vector scores = Tokenize(toks[2]); - std::transform(scores.begin(), scores.end(), scores.begin(),TransformScore); - std::transform(scores.begin(), scores.end(), scores.begin(),FloorScore); + if (m_valuesAreProbabilities) { + std::transform(scores.begin(), scores.end(), scores.begin(),TransformScore); + std::transform(scores.begin(), scores.end(), scores.begin(),FloorScore); + } target->GetScoreBreakdown().PlusEquals(this, scores); // score of all other ff when this rule is being loaded @@ -129,6 +131,8 @@ PhraseDictionaryMemoryPerSentenceOnDemand::SetParameter(const std::string& key, { if (key == "path") { UTIL_THROW(util::Exception, "PhraseDictionaryMemoryPerSentenceOnDemand does not support key \"path\"."); + } else if (key == "valuesAreProbabilities") { + m_valuesAreProbabilities = Scan(value); } else { PhraseDictionary::SetParameter(key, value); } diff --git a/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.h b/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.h index bcda0ef77..e3fe6514a 100644 --- a/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.h +++ b/moses/TranslationModel/PhraseDictionaryMemoryPerSentenceOnDemand.h @@ -39,6 +39,8 @@ protected: typedef boost::unordered_map Coll; mutable boost::thread_specific_ptr m_coll; + bool m_valuesAreProbabilities; + Coll &GetColl() const; };