| | #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); |
| |
|
| |
|
| | } |
| |
|