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>2013-09-10 17:36:21 +0400
committerHieu Hoang <hieuhoang@gmail.com>2013-09-10 17:36:21 +0400
commitf379e5cb8a1d7e04072b4931b4f852b9a8ceb979 (patch)
tree483cd36ec820b3ce66d2b5f9db1a65c2a6bf9943 /moses/ScoreComponentCollection.cpp
parent52bb3bdf5aeaadba612a350d525201e55b6bf368 (diff)
lattice decoding with sparse features
Diffstat (limited to 'moses/ScoreComponentCollection.cpp')
-rw-r--r--moses/ScoreComponentCollection.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/moses/ScoreComponentCollection.cpp b/moses/ScoreComponentCollection.cpp
index 7cd9be701..0ce50d992 100644
--- a/moses/ScoreComponentCollection.cpp
+++ b/moses/ScoreComponentCollection.cpp
@@ -1,6 +1,6 @@
// $Id$
#include <vector>
-
+#include "util/exception.hh"
#include "ScoreComponentCollection.h"
#include "StaticData.h"
@@ -30,6 +30,20 @@ void ScorePair::PlusEquals(const StringPiece &key, float value)
}
}
+std::ostream& operator<<(std::ostream& os, const ScorePair& rhs)
+{
+ for (size_t i = 0; i < rhs.denseScores.size(); ++i) {
+ os << rhs.denseScores[i] << ",";
+ }
+
+ std::map<StringPiece, float>::const_iterator iter;
+ for (iter = rhs.sparseScores.begin(); iter != rhs.sparseScores.end(); ++iter) {
+ os << iter->first << "=" << iter->second << ",";
+ }
+
+ return os;
+}
+
ScoreComponentCollection::ScoreIndexMap ScoreComponentCollection::s_scoreIndexes;
size_t ScoreComponentCollection::s_denseVectorSize = 0;
@@ -206,6 +220,21 @@ void ScoreComponentCollection::Assign(const FeatureFunction* sp, const string li
}
}
+void ScoreComponentCollection::Assign(const FeatureFunction* sp, const std::vector<float>& scores) {
+ IndexPair indexes = GetIndexes(sp);
+ size_t numScores = indexes.second - indexes.first;
+
+ if (scores.size() != numScores) {
+ UTIL_THROW(util::Exception, "Feature function " << sp->GetScoreProducerDescription() << " specified "
+ << numScores << " dense scores or weights. Actually has " << scores.size());
+ }
+
+ for (size_t i = 0; i < scores.size(); ++i) {
+ m_scores[i + indexes.first] = scores[i];
+ }
+}
+
+
void ScoreComponentCollection::InvertDenseFeatures(const FeatureFunction* sp)
{