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:
authorNicola Bertoldi <bertoldi@fbk.eu>2014-04-30 10:32:46 +0400
committerNicola Bertoldi <bertoldi@fbk.eu>2014-04-30 10:32:46 +0400
commitfe1ed42f812072f548cc98418f4aaa06fed98695 (patch)
treee5a55e73456df1e5d77df07e0ed00ccd2234c35f /moses/TranslationOptionCollectionConfusionNet.cpp
parent0313523d7dbc4a7c576e290043880959a87e94df (diff)
parentae4ab9aae0643defd9edaaa7c9d11b6589d4811b (diff)
Merge branch 'master' into dynamic-models
Diffstat (limited to 'moses/TranslationOptionCollectionConfusionNet.cpp')
-rw-r--r--moses/TranslationOptionCollectionConfusionNet.cpp32
1 files changed, 27 insertions, 5 deletions
diff --git a/moses/TranslationOptionCollectionConfusionNet.cpp b/moses/TranslationOptionCollectionConfusionNet.cpp
index 39877f2bc..98a4440c7 100644
--- a/moses/TranslationOptionCollectionConfusionNet.cpp
+++ b/moses/TranslationOptionCollectionConfusionNet.cpp
@@ -1,6 +1,7 @@
// $Id$
#include <list>
+#include <vector>
#include "TranslationOptionCollectionConfusionNet.h"
#include "ConfusionNet.h"
#include "DecodeGraph.h"
@@ -10,6 +11,7 @@
#include "FF/InputFeature.h"
#include "TranslationModel/PhraseDictionaryTreeAdaptor.h"
#include "util/exception.hh"
+#include <boost/foreach.hpp>
using namespace std;
@@ -17,11 +19,21 @@ namespace Moses
{
/** constructor; just initialize the base class */
-TranslationOptionCollectionConfusionNet::TranslationOptionCollectionConfusionNet(
- const ConfusionNet &input
- , size_t maxNoTransOptPerCoverage, float translationOptionThreshold)
- : TranslationOptionCollection(input, maxNoTransOptPerCoverage, translationOptionThreshold)
+TranslationOptionCollectionConfusionNet::
+TranslationOptionCollectionConfusionNet(const ConfusionNet &input,
+ size_t maxNoTransOptPerCoverage,
+ float translationOptionThreshold)
+ : TranslationOptionCollection(input, maxNoTransOptPerCoverage,
+ translationOptionThreshold)
{
+ // Prefix checkers are phrase dictionaries that provide a prefix check
+ // to indicate that a phrase table entry with a given prefix exists.
+ // If no entry with the given prefix exists, there is no point in
+ // expanding it further.
+ vector<PhraseDictionary*> prefixCheckers;
+ BOOST_FOREACH(PhraseDictionary* pd, PhraseDictionary::GetColl())
+ if (pd->ProvidesPrefixCheck()) prefixCheckers.push_back(pd);
+
const InputFeature &inputFeature = InputFeature::Instance();
UTIL_THROW_IF2(&inputFeature == NULL, "Input feature must be specified");
@@ -91,6 +103,11 @@ TranslationOptionCollectionConfusionNet::TranslationOptionCollectionConfusionNet
Phrase subphrase(prevPhrase);
subphrase.AddWord(word);
+ bool OK = prefixCheckers.size() == 0;
+ for (size_t k = 0; !OK && k < prefixCheckers.size(); ++k)
+ OK = prefixCheckers[k]->PrefixExists(subphrase);
+ if (!OK) continue;
+
const ScorePair &scores = col[i].second;
ScorePair *inputScore = new ScorePair(*prevInputScore);
inputScore->PlusEquals(scores);
@@ -105,6 +122,9 @@ TranslationOptionCollectionConfusionNet::TranslationOptionCollectionConfusionNet
} // for (iterPath = prevPaths.begin(); iterPath != prevPaths.end(); ++iterPath) {
}
}
+ // cerr << "HAVE " << m_inputPathQueue.size()
+ // << " input paths of max. length "
+ // << maxSizePhrase << "." << endl;
}
InputPathList &TranslationOptionCollectionConfusionNet::GetInputPathList(size_t startPos, size_t endPos)
@@ -229,7 +249,9 @@ void TranslationOptionCollectionConfusionNet::CreateTranslationOptionsForRangeLE
// go thru each intermediate trans opt just created
const vector<TranslationOption*>& partTransOptList = oldPtoc->GetList();
vector<TranslationOption*>::const_iterator iterPartialTranslOpt;
- for (iterPartialTranslOpt = partTransOptList.begin() ; iterPartialTranslOpt != partTransOptList.end() ; ++iterPartialTranslOpt) {
+ for (iterPartialTranslOpt = partTransOptList.begin();
+ iterPartialTranslOpt != partTransOptList.end();
+ ++iterPartialTranslOpt) {
TranslationOption &inputPartialTranslOpt = **iterPartialTranslOpt;
if (transStep) {