delete Hypothesis::GetSourcePhrase(). Take it directly from TranslationOption::GetSourcePhrase()

This commit is contained in:
Hieu Hoang 2013-08-05 13:46:54 +01:00
parent 6872689bc2
commit a83c166678
5 changed files with 21 additions and 22 deletions

View File

@ -349,7 +349,7 @@ void OutputInput(std::vector<const Phrase*>& map, const Hypothesis* hypo)
{ {
if (hypo->GetPrevHypo()) { if (hypo->GetPrevHypo()) {
OutputInput(map, hypo->GetPrevHypo()); OutputInput(map, hypo->GetPrevHypo());
map[hypo->GetCurrSourceWordsRange().GetStartPos()] = hypo->GetSourcePhrase(); map[hypo->GetCurrSourceWordsRange().GetStartPos()] = &hypo->GetTranslationOption().GetSourcePhrase();
} }
} }

View File

@ -1,6 +1,7 @@
#include "PhraseBoundaryFeature.h" #include "PhraseBoundaryFeature.h"
#include "moses/Hypothesis.h" #include "moses/Hypothesis.h"
#include "moses/TranslationOption.h"
using namespace std; using namespace std;
@ -77,12 +78,12 @@ FFState* PhraseBoundaryFeature::Evaluate
const Word* rightTargetWord = &(targetPhrase.GetWord(0)); const Word* rightTargetWord = &(targetPhrase.GetWord(0));
AddFeatures(leftTargetWord,rightTargetWord,m_targetFactors,"tgt",scores); AddFeatures(leftTargetWord,rightTargetWord,m_targetFactors,"tgt",scores);
const Phrase* sourcePhrase = cur_hypo.GetSourcePhrase(); const Phrase& sourcePhrase = cur_hypo.GetTranslationOption().GetSourcePhrase();
const Word* leftSourceWord = pbState->GetSourceWord(); const Word* leftSourceWord = pbState->GetSourceWord();
const Word* rightSourceWord = &(sourcePhrase->GetWord(0)); const Word* rightSourceWord = &(sourcePhrase.GetWord(0));
AddFeatures(leftSourceWord,rightSourceWord,m_sourceFactors,"src",scores); AddFeatures(leftSourceWord,rightSourceWord,m_sourceFactors,"src",scores);
const Word* endSourceWord = &(sourcePhrase->GetWord(sourcePhrase->GetSize()-1)); const Word* endSourceWord = &(sourcePhrase.GetWord(sourcePhrase.GetSize()-1));
const Word* endTargetWord = &(targetPhrase.GetWord(targetPhrase.GetSize()-1)); const Word* endTargetWord = &(targetPhrase.GetWord(targetPhrase.GetSize()-1));
//if end of sentence add EOS //if end of sentence add EOS

View File

@ -48,7 +48,6 @@ ObjectPool<Hypothesis> Hypothesis::s_objectPool("Hypothesis", 300000);
Hypothesis::Hypothesis(Manager& manager, InputType const& source, const TargetPhrase &emptyTarget) Hypothesis::Hypothesis(Manager& manager, InputType const& source, const TargetPhrase &emptyTarget)
: m_prevHypo(NULL) : m_prevHypo(NULL)
, m_targetPhrase(emptyTarget) , m_targetPhrase(emptyTarget)
, m_sourcePhrase(0)
, m_sourceCompleted(source.GetSize(), manager.m_source.m_sourceCompleted) , m_sourceCompleted(source.GetSize(), manager.m_source.m_sourceCompleted)
, m_sourceInput(source) , m_sourceInput(source)
, m_currSourceWordsRange( , m_currSourceWordsRange(
@ -80,7 +79,6 @@ Hypothesis::Hypothesis(Manager& manager, InputType const& source, const TargetPh
Hypothesis::Hypothesis(const Hypothesis &prevHypo, const TranslationOption &transOpt) Hypothesis::Hypothesis(const Hypothesis &prevHypo, const TranslationOption &transOpt)
: m_prevHypo(&prevHypo) : m_prevHypo(&prevHypo)
, m_targetPhrase(transOpt.GetTargetPhrase()) , m_targetPhrase(transOpt.GetTargetPhrase())
, m_sourcePhrase(&transOpt.GetSourcePhrase())
, m_sourceCompleted (prevHypo.m_sourceCompleted ) , m_sourceCompleted (prevHypo.m_sourceCompleted )
, m_sourceInput (prevHypo.m_sourceInput) , m_sourceInput (prevHypo.m_sourceInput)
, m_currSourceWordsRange (transOpt.GetSourceWordsRange()) , m_currSourceWordsRange (transOpt.GetSourceWordsRange())
@ -348,8 +346,12 @@ void Hypothesis::PrintHypothesis() const
} }
TRACE_ERR( ")"<<endl); TRACE_ERR( ")"<<endl);
TRACE_ERR( "\tbase score "<< (m_prevHypo->m_totalScore - m_prevHypo->m_futureScore) <<endl); TRACE_ERR( "\tbase score "<< (m_prevHypo->m_totalScore - m_prevHypo->m_futureScore) <<endl);
TRACE_ERR( "\tcovering "<<m_currSourceWordsRange.GetStartPos()<<"-"<<m_currSourceWordsRange.GetEndPos()<<": " TRACE_ERR( "\tcovering "<<m_currSourceWordsRange.GetStartPos()<<"-"<<m_currSourceWordsRange.GetEndPos()<<": ");
<< *m_sourcePhrase <<endl);
if (m_transOpt) {
TRACE_ERR(m_transOpt->GetSourcePhrase());
}
TRACE_ERR(endl);
TRACE_ERR( "\ttranslated as: "<<(Phrase&) m_targetPhrase<<endl); // <<" => translation cost "<<m_score[ScoreType::PhraseTrans]; TRACE_ERR( "\ttranslated as: "<<(Phrase&) m_targetPhrase<<endl); // <<" => translation cost "<<m_score[ScoreType::PhraseTrans];
if (m_wordDeleted) TRACE_ERR( "\tword deleted"<<endl); if (m_wordDeleted) TRACE_ERR( "\tword deleted"<<endl);
@ -440,14 +442,12 @@ std::string Hypothesis::GetSourcePhraseStringRep(const vector<FactorType> factor
if (!m_prevHypo) { if (!m_prevHypo) {
return ""; return "";
} }
return m_sourcePhrase->GetStringRep(factorsToPrint); if (m_transOpt) {
#if 0 return m_transOpt->GetSourcePhrase().GetStringRep(factorsToPrint);
if(m_sourcePhrase) { }
return m_sourcePhrase->GetSubString(m_currSourceWordsRange).GetStringRep(factorsToPrint); else {
} else { return "";
return m_sourceInput.GetSubString(m_currSourceWordsRange).GetStringRep(factorsToPrint);
} }
#endif
} }
std::string Hypothesis::GetTargetPhraseStringRep(const vector<FactorType> factorsToPrint) const std::string Hypothesis::GetTargetPhraseStringRep(const vector<FactorType> factorsToPrint) const
{ {

View File

@ -70,7 +70,6 @@ protected:
const Hypothesis* m_prevHypo; /*! backpointer to previous hypothesis (from which this one was created) */ const Hypothesis* m_prevHypo; /*! backpointer to previous hypothesis (from which this one was created) */
// const Phrase &m_targetPhrase; /*! target phrase being created at the current decoding step */ // const Phrase &m_targetPhrase; /*! target phrase being created at the current decoding step */
const TargetPhrase &m_targetPhrase; /*! target phrase being created at the current decoding step */ const TargetPhrase &m_targetPhrase; /*! target phrase being created at the current decoding step */
Phrase const* m_sourcePhrase; /*! input sentence */
WordsBitmap m_sourceCompleted; /*! keeps track of which words have been translated so far */ WordsBitmap m_sourceCompleted; /*! keeps track of which words have been translated so far */
//TODO: how to integrate this into confusion network framework; what if //TODO: how to integrate this into confusion network framework; what if
//it's a confusion network in the end??? //it's a confusion network in the end???
@ -156,10 +155,6 @@ public:
return m_currTargetWordsRange.GetEndPos() + 1; return m_currTargetWordsRange.GetEndPos() + 1;
} }
inline const Phrase* GetSourcePhrase() const {
return m_sourcePhrase;
}
std::string GetSourcePhraseStringRep(const std::vector<FactorType> factorsToPrint) const; std::string GetSourcePhraseStringRep(const std::vector<FactorType> factorsToPrint) const;
std::string GetTargetPhraseStringRep(const std::vector<FactorType> factorsToPrint) const; std::string GetTargetPhraseStringRep(const std::vector<FactorType> factorsToPrint) const;
std::string GetSourcePhraseStringRep() const; std::string GetSourcePhraseStringRep() const;

View File

@ -21,9 +21,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
***********************************************************************/ ***********************************************************************/
#include <iostream> #include <iostream>
#include "SentenceStats.h"
#include "moses/TranslationOption.h"
using std::cout; using std::cout;
using std::endl; using std::endl;
#include "SentenceStats.h"
namespace Moses namespace Moses
{ {
@ -41,8 +43,9 @@ void SentenceStats::AddDeletedWords(const Hypothesis& hypo)
{ {
//don't check either a null pointer or the empty initial hypothesis (if we were given the empty hypo, the null check will save us) //don't check either a null pointer or the empty initial hypothesis (if we were given the empty hypo, the null check will save us)
if(hypo.GetPrevHypo() != NULL && hypo.GetPrevHypo()->GetCurrSourceWordsRange().GetNumWordsCovered() > 0) AddDeletedWords(*hypo.GetPrevHypo()); if(hypo.GetPrevHypo() != NULL && hypo.GetPrevHypo()->GetCurrSourceWordsRange().GetNumWordsCovered() > 0) AddDeletedWords(*hypo.GetPrevHypo());
if(hypo.GetCurrTargetWordsRange().GetNumWordsCovered() == 0) { if(hypo.GetCurrTargetWordsRange().GetNumWordsCovered() == 0) {
m_deletedWords.push_back(hypo.GetSourcePhrase()); m_deletedWords.push_back(&hypo.GetTranslationOption().GetSourcePhrase());
} }
} }