From 6aa6131b844e5e08b4644692fa48c4d85fd2cf81 Mon Sep 17 00:00:00 2001 From: Nicola Bertoldi Date: Mon, 29 Jun 2015 09:30:26 +0200 Subject: introduced flag for the existence of TtaskSptr in TargetPhrase --- moses/LM/Base.cpp | 6 +++++- moses/StaticData.cpp | 4 +++- moses/TargetPhrase.cpp | 23 +++++++++++++++-------- moses/TargetPhrase.h | 11 ++++++----- 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/moses/LM/Base.cpp b/moses/LM/Base.cpp index 9e74b0d81..8b69626ac 100644 --- a/moses/LM/Base.cpp +++ b/moses/LM/Base.cpp @@ -78,7 +78,11 @@ void LanguageModel::EvaluateInIsolation(const Phrase &source float fullScore, nGramScore; size_t oovCount; - CalcScoreWithContext(targetPhrase.GetTtask(), targetPhrase, fullScore, nGramScore, oovCount); + if (targetPhrase.HasTtaskSPtr()){ + CalcScoreWithContext(targetPhrase.GetTtask(), targetPhrase, fullScore, nGramScore, oovCount); + }else{ + CalcScore(targetPhrase, fullScore, nGramScore, oovCount); + } //CalcScore(targetPhrase, fullScore, nGramScore, oovCount); float estimateScore = fullScore - nGramScore; diff --git a/moses/StaticData.cpp b/moses/StaticData.cpp index 28d9f7831..83da42a9e 100644 --- a/moses/StaticData.cpp +++ b/moses/StaticData.cpp @@ -1115,7 +1115,9 @@ void StaticData::LoadSparseWeightsFromConfig() } std::map > weights = m_parameter->GetAllWeights(); - for (auto iter = weights.begin(); iter != weights.end(); ++iter) { + std::map >::iterator iter; +// for (auto iter = weights.begin(); iter != weights.end(); ++iter) { + for (iter = weights.begin(); iter != weights.end(); ++iter) { // this indicates that it is sparse feature if (featureNames.find(iter->first) == featureNames.end()) { UTIL_THROW_IF2(iter->second.size() != 1, "ERROR: only one weight per sparse feature allowed: " << iter->first); diff --git a/moses/TargetPhrase.cpp b/moses/TargetPhrase.cpp index 9151f4bb9..893edca08 100644 --- a/moses/TargetPhrase.cpp +++ b/moses/TargetPhrase.cpp @@ -48,10 +48,9 @@ TargetPhrase::TargetPhrase( std::string out_string, const PhraseDictionary *pt) , m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo()) , m_lhsTarget(NULL) , m_ruleSource(NULL) + , m_ttask_flag(false) , m_container(pt) - , m_ttask(NULL) { - //ACAT const StaticData &staticData = StaticData::Instance(); // XXX should this really be InputFactorOrder??? @@ -68,8 +67,9 @@ TargetPhrase::TargetPhrase(ttasksptr& ttask, std::string out_string, const Phras , m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo()) , m_lhsTarget(NULL) , m_ruleSource(NULL) - , m_container(pt) , m_ttask(ttask) + , m_ttask_flag(true) + , m_container(pt) { //ACAT @@ -88,8 +88,9 @@ TargetPhrase::TargetPhrase(ttasksptr& ttask, const PhraseDictionary *pt) , m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo()) , m_lhsTarget(NULL) , m_ruleSource(NULL) - , m_container(pt) , m_ttask(ttask) + , m_ttask_flag(true) + , m_container(pt) { } @@ -101,8 +102,9 @@ TargetPhrase::TargetPhrase(ttasksptr& ttask, const Phrase &phrase, const PhraseD , m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo()) , m_lhsTarget(NULL) , m_ruleSource(NULL) - , m_container(pt) , m_ttask(ttask) + , m_ttask_flag(true) + , m_container(pt) { } @@ -114,8 +116,8 @@ TargetPhrase::TargetPhrase(const PhraseDictionary *pt) , m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo()) , m_lhsTarget(NULL) , m_ruleSource(NULL) + , m_ttask_flag(false) , m_container(pt) - , m_ttask(NULL) { } @@ -127,8 +129,8 @@ TargetPhrase::TargetPhrase(const Phrase &phrase, const PhraseDictionary *pt) , m_alignNonTerm(&AlignmentInfoCollection::Instance().GetEmptyAlignmentInfo()) , m_lhsTarget(NULL) , m_ruleSource(NULL) + , m_ttask_flag(false) , m_container(pt) - , m_ttask(NULL) { } @@ -141,8 +143,9 @@ TargetPhrase::TargetPhrase(const TargetPhrase ©) , m_alignTerm(copy.m_alignTerm) , m_alignNonTerm(copy.m_alignNonTerm) , m_properties(copy.m_properties) - , m_container(copy.m_container) , m_ttask(copy.m_ttask) + , m_ttask_flag(true) + , m_container(copy.m_container) { if (copy.m_lhsTarget) { m_lhsTarget = new Word(*copy.m_lhsTarget); @@ -174,6 +177,10 @@ void TargetPhrase::WriteToRulePB(hgmert::Rule* pb) const } #endif +bool TargetPhrase::HasTtaskSPtr() const { + return m_ttask_flag; +} + const ttasksptr& TargetPhrase::GetTtask() const { return m_ttask; } diff --git a/moses/TargetPhrase.h b/moses/TargetPhrase.h index 63b8f01fd..4e6b1278b 100644 --- a/moses/TargetPhrase.h +++ b/moses/TargetPhrase.h @@ -53,16 +53,16 @@ class PhraseDictionary; class TargetPhrase: public Phrase { public: - typedef std::map > - ScoreCache_t; + typedef std::map > ScoreCache_t; ScoreCache_t const& GetExtraScores() const; Scores const* GetExtraScores(FeatureFunction const* ff) const; - void SetExtraScores(FeatureFunction const* ff, - boost::shared_ptr const& scores); - ttasksptr m_ttask; + void SetExtraScores(FeatureFunction const* ff,boost::shared_ptr const& scores); + private: ScoreCache_t m_cached_scores; + ttasksptr m_ttask; + bool m_ttask_flag; private: friend std::ostream& operator<<(std::ostream&, const TargetPhrase&); @@ -93,6 +93,7 @@ public: TargetPhrase(ttasksptr &ttask, std::string out_string, const PhraseDictionary *pt = NULL); explicit TargetPhrase(ttasksptr &ttask, const Phrase &targetPhrase, const PhraseDictionary *pt); const ttasksptr& GetTtask() const; + bool HasTtaskSPtr() const; ~TargetPhrase(); -- cgit v1.2.3