lattice decoding with sparse features

This commit is contained in:
Hieu Hoang 2013-09-08 17:02:59 +02:00
parent 7214be82d4
commit 42fc86b259
2 changed files with 7 additions and 7 deletions

View File

@ -11,15 +11,15 @@ namespace Moses
void ScorePair::PlusEquals(const ScorePair &other) void ScorePair::PlusEquals(const ScorePair &other)
{ {
PlusEquals(other.denseScores); PlusEquals(other.denseScores);
std::map<std::string, float>::const_iterator iter; std::map<StringPiece, float>::const_iterator iter;
for (iter = other.sparseScores.begin(); iter != other.sparseScores.end(); ++iter) { for (iter = other.sparseScores.begin(); iter != other.sparseScores.end(); ++iter) {
PlusEquals(iter->first, iter->second); PlusEquals(iter->first, iter->second);
} }
} }
void ScorePair::PlusEquals(const std::string &key, float value) void ScorePair::PlusEquals(const StringPiece &key, float value)
{ {
std::map<std::string, float>::iterator iter; std::map<StringPiece, float>::iterator iter;
iter = sparseScores.find(key); iter = sparseScores.find(key);
if (iter == sparseScores.end()) { if (iter == sparseScores.end()) {
sparseScores[key] = value; sparseScores[key] = value;
@ -245,9 +245,9 @@ void ScoreComponentCollection::PlusEquals(const FeatureFunction* sp, const Score
{ {
PlusEquals(sp, scorePair.denseScores); PlusEquals(sp, scorePair.denseScores);
std::map<std::string, float>::const_iterator iter; std::map<StringPiece, float>::const_iterator iter;
for (iter = scorePair.sparseScores.begin(); iter != scorePair.sparseScores.end(); ++iter) { for (iter = scorePair.sparseScores.begin(); iter != scorePair.sparseScores.end(); ++iter) {
const string &key = iter->first; const StringPiece &key = iter->first;
float value = iter->second; float value = iter->second;
PlusEquals(sp, key, value); PlusEquals(sp, key, value);
} }

View File

@ -47,10 +47,10 @@ namespace Moses
struct ScorePair struct ScorePair
{ {
std::vector<float> denseScores; std::vector<float> denseScores;
std::map<std::string, float> sparseScores; std::map<StringPiece, float> sparseScores;
void PlusEquals(const ScorePair &other); void PlusEquals(const ScorePair &other);
void PlusEquals(const std::string &key, float value); void PlusEquals(const StringPiece &key, float value);
void PlusEquals(const std::vector<float> &other) void PlusEquals(const std::vector<float> &other)
{ {