#ifndef MERT_PER_SCORER_H_ #define MERT_PER_SCORER_H_ #include #include #include #include "Types.h" #include "StatisticsBasedScorer.h" namespace MosesTuning { class ScoreStats; /** * An implementation of position-independent word error rate. * This is defined as * 1 - (correct - max(0,output_length - ref_length)) / ref_length * In fact, we ignore the " 1 - " so that it can be maximised. */ class PerScorer: public StatisticsBasedScorer { public: explicit PerScorer(const std::string& config = ""); ~PerScorer(); virtual void setReferenceFiles(const std::vector& referenceFiles); virtual void prepareStats(std::size_t sid, const std::string& text, ScoreStats& entry); virtual std::size_t NumberOfScores() const { return 3; } virtual float calculateScore(const std::vector& comps) const; private: // no copying allowed PerScorer(const PerScorer&); PerScorer& operator=(const PerScorer&); // data extracted from reference files std::vector m_ref_lengths; std::vector > m_ref_tokens; }; } #endif // MERT_PER_SCORER_H_