File size: 1,131 Bytes
158b61b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#pragma once
#include <string>
#include "lm/model.hh"
namespace Moses2
{
class KenOSMBase
{
public:
virtual ~KenOSMBase() {}
virtual float Score(const lm::ngram::State&, StringPiece,
lm::ngram::State&) const = 0;
virtual const lm::ngram::State &BeginSentenceState() const = 0;
virtual const lm::ngram::State &NullContextState() const = 0;
};
template <class KenModel>
class KenOSM : public KenOSMBase
{
public:
KenOSM(const char *file, const lm::ngram::Config &config)
: m_kenlm(file, config) {}
float Score(const lm::ngram::State &in_state,
StringPiece word,
lm::ngram::State &out_state) const {
return m_kenlm.Score(in_state, m_kenlm.GetVocabulary().Index(word),
out_state);
}
const lm::ngram::State &BeginSentenceState() const {
return m_kenlm.BeginSentenceState();
}
const lm::ngram::State &NullContextState() const {
return m_kenlm.NullContextState();
}
private:
KenModel m_kenlm;
};
typedef KenOSMBase OSMLM;
OSMLM* ConstructOSMLM(const char *file, util::LoadMethod load_method);
} // namespace
|