summaryrefslogtreecommitdiff
path: root/mteval
diff options
context:
space:
mode:
Diffstat (limited to 'mteval')
-rw-r--r--mteval/scorer.cc13
-rw-r--r--mteval/scorer.h13
2 files changed, 14 insertions, 12 deletions
diff --git a/mteval/scorer.cc b/mteval/scorer.cc
index ced0cadf..de84e076 100644
--- a/mteval/scorer.cc
+++ b/mteval/scorer.cc
@@ -595,7 +595,6 @@ void DocScorer::Init(
const vector<string>& ref_files,
const string& src_file, bool verbose) {
scorers_.clear();
- this->type = type;
// TODO stop using valarray, start using ReadFile
cerr << "Loading references (" << ref_files.size() << " files)\n";
ReadFile srcrf;
@@ -645,6 +644,9 @@ void DocScorer::Init(
cerr << "Loaded reference translations for " << scorers_.size() << " sentences.\n";
}
+DocStreamScorer::~DocStreamScorer() {
+}
+
void DocStreamScorer::Init(
const ScoreType type,
const vector<string>& ref_files,
@@ -655,17 +657,14 @@ void DocStreamScorer::Init(
this->type = type;
vector<vector<WordID> > refs(1);
string src_line;
- // Empty reference 0
+ // Initialize empty reference
TD::ConvertSentence("", &refs[0]);
- scorers_.push_back(ScorerP(SentenceScorer::CreateSentenceScorer(type, refs, src_line)));
- // Reference 1 starts empty, updated as needed
- scorers_.push_back(ScorerP(SentenceScorer::CreateSentenceScorer(type, refs, src_line)));
+ scorer = ScorerP(SentenceScorer::CreateSentenceScorer(type, refs, src_line));
}
void DocStreamScorer::update(const std::string& ref) {
- scorers_.pop_back();
vector<vector<WordID> > refs(1);
string src_line;
TD::ConvertSentence(ref, &refs[0]);
- scorers_.push_back(ScorerP(SentenceScorer::CreateSentenceScorer(this->type, refs, src_line)));
+ scorer = ScorerP(SentenceScorer::CreateSentenceScorer(type, refs, src_line));
}
diff --git a/mteval/scorer.h b/mteval/scorer.h
index 56c39a7d..bb1e89ae 100644
--- a/mteval/scorer.h
+++ b/mteval/scorer.h
@@ -101,16 +101,16 @@ class DocScorer {
Init(type,ref_files,src_file,verbose);
}
- int size() const { return scorers_.size(); }
- ScorerP operator[](size_t i) const { return scorers_[i]; }
+ virtual int size() const { return scorers_.size(); }
+ virtual ScorerP operator[](size_t i) const { return scorers_[i]; }
virtual void update(const std::string& ref) {}
private:
- ScoreType type;
std::vector<ScorerP> scorers_;
};
class DocStreamScorer : public DocScorer {
public:
+ ~DocStreamScorer();
void Init(const ScoreType type,
const std::vector<std::string>& ref_files,
const std::string& src_file = "",
@@ -124,9 +124,12 @@ class DocStreamScorer : public DocScorer {
{
Init(type,ref_files,src_file,verbose);
}
- ScorerP operator[](size_t i);
- int size();
+ ScorerP operator[](size_t i) const { return scorer; }
+ int size() const { return 1; }
void update(const std::string& ref);
+ private:
+ ScoreType type;
+ ScorerP scorer;
};
#endif