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>2015-01-21 19:07:50 +0300
committerMarcin Junczys-Dowmunt <junczys@amu.edu.pl>2015-01-22 14:25:02 +0300
commitad6f3a802622ba6aff9ce31b82dc81315dd32755 (patch)
tree24c5345240acc222bd286d0379593f4e2b23bf4c /moses/ChartTranslationOptions.cpp
parentec547fa56ac8ca1221956ed390062f3a0fd3b2eb (diff)
option to sort translation options after EvaluateAfterSourceContext
Diffstat (limited to 'moses/ChartTranslationOptions.cpp')
-rw-r--r--moses/ChartTranslationOptions.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/moses/ChartTranslationOptions.cpp b/moses/ChartTranslationOptions.cpp
index 6d4e1a816..03a869109 100644
--- a/moses/ChartTranslationOptions.cpp
+++ b/moses/ChartTranslationOptions.cpp
@@ -51,6 +51,18 @@ ChartTranslationOptions::~ChartTranslationOptions()
}
+//! functor to compare (chart) hypotheses by (descending) score
+class ChartTranslationOptionScoreOrderer
+{
+public:
+ bool operator()(const boost::shared_ptr<ChartTranslationOption> &transOptA
+ , const boost::shared_ptr<ChartTranslationOption> &transOptB) const {
+ const ScoreComponentCollection &scoresA = transOptA->GetScores();
+ const ScoreComponentCollection &scoresB = transOptB->GetScores();
+ return scoresA.GetWeightedScore() > scoresB.GetWeightedScore();
+ }
+};
+
void ChartTranslationOptions::EvaluateWithSourceContext(const InputType &input, const InputPath &inputPath)
{
SetInputPath(&inputPath);
@@ -79,6 +91,15 @@ void ChartTranslationOptions::EvaluateWithSourceContext(const InputType &input,
size_t newSize = m_collection.size() - numDiscard;
m_collection.resize(newSize);
+
+ // sort if necessary
+ const StaticData &staticData = StaticData::Instance();
+ if (staticData.RequireSortingAfterSourceContext()) {
+ std::sort(m_collection.begin()
+ , m_collection.begin() + newSize
+ , ChartTranslationOptionScoreOrderer());
+ }
+
}
void ChartTranslationOptions::SetInputPath(const InputPath *inputPath)