diff options
author | Hieu Hoang <hieuhoang@gmail.com> | 2016-09-29 18:46:51 +0300 |
---|---|---|
committer | Hieu Hoang <hieuhoang@gmail.com> | 2016-09-29 18:46:51 +0300 |
commit | 269481742e64bec0173e483b221fb2f0e9d65873 (patch) | |
tree | 678148ff73693e05f6119d69865b52859e8c4f8e | |
parent | 4c3bb20860649abb35b3fa725c1d0b4e3f9741b1 (diff) |
fill target phrase with words
-rw-r--r-- | contrib/moses2/TranslationModel/CompactPT/PhraseDecoder.cpp | 28 | ||||
-rw-r--r-- | contrib/moses2/Word.cpp | 1 |
2 files changed, 16 insertions, 13 deletions
diff --git a/contrib/moses2/TranslationModel/CompactPT/PhraseDecoder.cpp b/contrib/moses2/TranslationModel/CompactPT/PhraseDecoder.cpp index 81983c011..0f75acf57 100644 --- a/contrib/moses2/TranslationModel/CompactPT/PhraseDecoder.cpp +++ b/contrib/moses2/TranslationModel/CompactPT/PhraseDecoder.cpp @@ -276,7 +276,7 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( unsigned phraseStopSymbol = 0; AlignPoint alignStopSymbol(-1, -1); - std::vector<Word> words; + std::vector<Word> targetWords; std::vector<float> scores; std::set<AlignPointSizeT> alignment; @@ -288,7 +288,7 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( if(state == New) { // Creating new TargetPhrase on the heap - words.clear(); + targetWords.clear(); alignment.clear(); scores.clear(); @@ -316,12 +316,12 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( wordString = GetTargetSymbol(GetTranslation(sourceWords[srcPos], rank)); if(m_phraseDictionary.m_useAlignmentInfo) { - size_t trgPos = words.size(); + size_t trgPos = targetWords.size(); alignment.insert(AlignPoint(srcPos, trgPos)); } } else if(type == 3) { size_t rank = DecodeREncSymbol3(symbol); - size_t srcPos = words.size(); + size_t srcPos = targetWords.size(); if(srcPos >= sourceWords.size()) return TargetPhraseVectorPtr(); @@ -335,7 +335,7 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( Word word; word.CreateFromString(vocab, system, wordString); - words.push_back(word); + targetWords.push_back(word); } else if(m_coding == PREnc) { // if the symbol is just a word if(GetPREncType(symbol) == 1) { @@ -343,7 +343,7 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( Word word; word.CreateFromString(vocab, system, GetTargetSymbol(decodedSymbol)); - words.push_back(word); + targetWords.push_back(word); } // if the symbol is a subphrase pointer else { @@ -351,7 +351,7 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( int right = DecodePREncSymbol2Right(symbol); unsigned rank = DecodePREncSymbol2Rank(symbol); - int srcStart = left + words.size(); + int srcStart = left + targetWords.size(); int srcEnd = srcSize - right - 1; // false positive consistency check @@ -384,12 +384,12 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( for(AlignmentInfo::const_iterator it = subTp.GetAlignTerm().begin(); it != subTp.GetAlignTerm().end(); it++) { alignment.insert(AlignPointSizeT(srcStart + it->first, - words.size() + it->second)); + targetWords.size() + it->second)); } } for (size_t i = 0; i < subTp.GetSize(); ++i) { - words.push_back(subTp[i]); + targetWords.push_back(subTp[i]); } } else return TargetPhraseVectorPtr(); @@ -397,7 +397,7 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( } else { Word word; word.CreateFromString(vocab, system, GetTargetSymbol(symbol)); - words.push_back(word); + targetWords.push_back(word); } } } else if(state == Score) { @@ -422,8 +422,12 @@ TargetPhraseVectorPtr PhraseDecoder::DecodeCollection( } if(state == Add) { - size_t targetSize = words.size(); - TargetPhraseImpl *targetPhrase = new TargetPhraseImpl(mgr.GetPool(), m_phraseDictionary, system, targetSize); + size_t targetSize = targetWords.size(); + TargetPhraseImpl *targetPhrase = new (mgr.GetPool().Allocate<TargetPhraseImpl>()) TargetPhraseImpl(mgr.GetPool(), m_phraseDictionary, system, targetSize); + + for (size_t i = 0; i < targetWords.size(); ++i) { + (*targetPhrase)[i] = targetWords[i]; + } if(m_phraseDictionary.m_useAlignmentInfo) { size_t sourceSize = sourcePhrase.GetSize(); diff --git a/contrib/moses2/Word.cpp b/contrib/moses2/Word.cpp index a92bd4d34..fe10330e7 100644 --- a/contrib/moses2/Word.cpp +++ b/contrib/moses2/Word.cpp @@ -119,7 +119,6 @@ void Word::OutputToStream(const System &system, std::ostream &out) const } } - std::string Word::GetString(const FactorList &factorTypes) const { assert(factorTypes.size()); |