| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #include <limits> |
| #include <iostream> |
| #include <sstream> |
|
|
| #include "SingleFactor.h" |
| #include "PointerState.h" |
| #include "moses/FF/FFState.h" |
| #include "moses/TypeDef.h" |
| #include "moses/Util.h" |
| #include "moses/FactorCollection.h" |
| #include "moses/Phrase.h" |
| #include "moses/StaticData.h" |
| #include "moses/FactorTypeSet.h" |
|
|
| using namespace std; |
|
|
| namespace Moses |
| { |
|
|
| LanguageModelSingleFactor::LanguageModelSingleFactor(const std::string &line) |
| :LanguageModelImplementation(line) |
| ,m_factorType(0) |
| { |
| m_nullContextState = new PointerState(NULL); |
| m_beginSentenceState = new PointerState(NULL); |
| } |
|
|
| LanguageModelSingleFactor::~LanguageModelSingleFactor() |
| { |
| delete m_nullContextState; |
| delete m_beginSentenceState; |
| } |
|
|
| const FFState *LanguageModelSingleFactor::GetNullContextState() const |
| { |
| return m_nullContextState; |
| } |
|
|
| const FFState *LanguageModelSingleFactor::GetBeginSentenceState() const |
| { |
| return m_beginSentenceState; |
| } |
|
|
| FFState *LanguageModelSingleFactor::NewState(const FFState *from) const |
| { |
| return new PointerState(from ? static_cast<const PointerState*>(from)->lmstate : NULL); |
| } |
|
|
| LMResult LanguageModelSingleFactor::GetValueForgotState(const std::vector<const Word*> &contextFactor, FFState &outState) const |
| { |
| return GetValue(contextFactor, &static_cast<PointerState&>(outState).lmstate); |
| } |
|
|
| bool LanguageModelSingleFactor::IsUseable(const FactorMask &mask) const |
| { |
| bool ret = mask[m_factorType]; |
| return ret; |
| } |
|
|
| void LanguageModelSingleFactor::SetParameter(const std::string& key, const std::string& value) |
| { |
| if (key == "factor") { |
| m_factorType = Scan<FactorType>(value); |
| } else { |
| LanguageModelImplementation::SetParameter(key, value); |
| } |
| } |
|
|
| std::string LanguageModelSingleFactor::DebugContextFactor(const std::vector<const Word*> &contextFactor) const |
| { |
| std::string ret; |
| for (size_t i = 0; i < contextFactor.size(); ++i) { |
| const Word &word = *contextFactor[i]; |
| ret += word.ToString(); |
| } |
|
|
| return ret; |
| } |
|
|
| } |
|
|
|
|
|
|
|
|
|
|