diff options
author | Hieu Hoang <hieuhoang@gmail.com> | 2015-01-21 19:07:50 +0300 |
---|---|---|
committer | Marcin Junczys-Dowmunt <junczys@amu.edu.pl> | 2015-01-22 14:25:02 +0300 |
commit | ad6f3a802622ba6aff9ce31b82dc81315dd32755 (patch) | |
tree | 24c5345240acc222bd286d0379593f4e2b23bf4c /moses/ChartTranslationOptions.cpp | |
parent | ec547fa56ac8ca1221956ed390062f3a0fd3b2eb (diff) |
option to sort translation options after EvaluateAfterSourceContext
Diffstat (limited to 'moses/ChartTranslationOptions.cpp')
-rw-r--r-- | moses/ChartTranslationOptions.cpp | 21 |
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) |