Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHieu Hoang <hieuhoang@gmail.com>2016-09-29 18:46:51 +0300
committerHieu Hoang <hieuhoang@gmail.com>2016-09-29 18:46:51 +0300
commit269481742e64bec0173e483b221fb2f0e9d65873 (patch)
tree678148ff73693e05f6119d69865b52859e8c4f8e
parent4c3bb20860649abb35b3fa725c1d0b4e3f9741b1 (diff)
fill target phrase with words
-rw-r--r--contrib/moses2/TranslationModel/CompactPT/PhraseDecoder.cpp28
-rw-r--r--contrib/moses2/Word.cpp1
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());