|
|
|
|
|
|
|
|
|
#ifndef SCORER_IMPL_H |
|
#define SCORER_IMPL_H |
|
|
|
#include "phrasetable.h" |
|
#include "scorer.h" |
|
|
|
class MLPhraseScorer : public PhraseScorer |
|
{ |
|
private: |
|
explicit MLPhraseScorer(PhraseTable &pd, bool reverse) : |
|
PhraseScorer(pd, reverse) {} |
|
|
|
virtual void do_score_phrases(); |
|
virtual Score do_get_score(const PhraseTable::const_iterator &it); |
|
|
|
public: |
|
static PhraseScorer *create_scorer(const char *argv[], int &argp, bool reverse, const PhraseScorerFactory &ptf); |
|
}; |
|
|
|
class WittenBellPhraseScorer : public PhraseScorer |
|
{ |
|
private: |
|
explicit WittenBellPhraseScorer(PhraseTable &pd, bool reverse) : |
|
PhraseScorer(pd, reverse) {} |
|
|
|
virtual Score do_get_score(const PhraseTable::const_iterator &it); |
|
|
|
public: |
|
static PhraseScorer *create_scorer(const char *argv[], int &argp, bool reverse, const PhraseScorerFactory &ptf); |
|
}; |
|
|
|
class AbsoluteDiscountPhraseScorer : public PhraseScorer |
|
{ |
|
private: |
|
Score discount_; |
|
|
|
explicit AbsoluteDiscountPhraseScorer(PhraseTable &pd, bool reverse) : |
|
PhraseScorer(pd, reverse) {} |
|
|
|
virtual void do_score_phrases(); |
|
virtual Score do_get_score(const PhraseTable::const_iterator &it); |
|
|
|
public: |
|
Score get_discount(); |
|
static PhraseScorer *create_scorer(const char *argv[], int &argp, bool reverse, const PhraseScorerFactory &ptf); |
|
}; |
|
|
|
class KNDiscount1PhraseScorer : public PhraseScorer |
|
{ |
|
private: |
|
Count total_distinct_; |
|
Score discount_; |
|
Count total_count_; |
|
|
|
explicit KNDiscount1PhraseScorer(PhraseTable &pd, bool reverse) : |
|
PhraseScorer(pd, reverse) {} |
|
|
|
virtual void do_score_phrases(); |
|
virtual Score do_get_score(const PhraseTable::const_iterator &it); |
|
|
|
public: |
|
static PhraseScorer *create_scorer(const char *argv[], int &argp, bool reverse, const PhraseScorerFactory &ptf); |
|
}; |
|
|
|
class KNDiscount3PhraseScorer : public PhraseScorer |
|
{ |
|
private: |
|
Score discount1_; |
|
Score discount2_; |
|
Score discount3plus_; |
|
|
|
Count total_distinct_n1_; |
|
Count total_distinct_n2_; |
|
Count total_distinct_n3plus_; |
|
|
|
explicit KNDiscount3PhraseScorer(PhraseTable &pd, bool reverse) : |
|
PhraseScorer(pd, reverse) {} |
|
|
|
virtual void do_score_phrases(); |
|
virtual Score do_get_score(const PhraseTable::const_iterator &it); |
|
|
|
public: |
|
static PhraseScorer *create_scorer(const char *argv[], int &argp, bool reverse, const PhraseScorerFactory &ptf); |
|
}; |
|
|
|
class LexicalWeightPhraseScorer : public PhraseScorer |
|
{ |
|
private: |
|
typedef std::map<std::pair<Count,Count>,Score> WeightMapType_; |
|
|
|
WeightMapType_ weight_map_; |
|
bool overall_max_score_; |
|
const Count null_word_; |
|
|
|
LexicalWeightPhraseScorer(PhraseTable &pd, bool reverse, const String &weights, bool overall_max = true); |
|
|
|
Score get_weight(const String &s_src, const String &s_tgt) const; |
|
Score get_weight(Count src, Count tgt) const; |
|
|
|
virtual void do_score_phrases(); |
|
virtual Score do_get_score(const PhraseTable::const_iterator &it); |
|
|
|
public: |
|
static PhraseScorer *create_scorer(const char *argv[], int &argp, bool reverse, const PhraseScorerFactory &ptf); |
|
}; |
|
|
|
class ConstantPhraseScorer : public PhraseScorer |
|
{ |
|
private: |
|
Score constant_; |
|
|
|
ConstantPhraseScorer(PhraseTable &pt, bool reverse, Score constant) : PhraseScorer(pt, reverse), constant_(constant) {} |
|
|
|
virtual Score do_get_score(const PhraseTable::const_iterator &it); |
|
|
|
public: |
|
static PhraseScorer *create_scorer(const char *argv[], int &argp, bool reverse, const PhraseScorerFactory &ptf); |
|
}; |
|
|
|
#endif |
|
|