Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'moses/LM/ExampleLM.cpp')
-rw-r--r--moses/LM/ExampleLM.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/moses/LM/ExampleLM.cpp b/moses/LM/ExampleLM.cpp
new file mode 100644
index 000000000..034afef2e
--- /dev/null
+++ b/moses/LM/ExampleLM.cpp
@@ -0,0 +1,54 @@
+
+#include "ExampleLM.h"
+#include "moses/FactorCollection.h"
+
+using namespace std;
+
+namespace Moses
+{
+ExampleLM::ExampleLM(const std::string &line)
+ :LanguageModelSingleFactor(line)
+{
+ ReadParameters();
+
+ UTIL_THROW_IF2(m_nGramOrder == NOT_FOUND, "Must set order");
+ UTIL_THROW_IF2(m_nGramOrder <= 1, "Ngram order must be more than 1");
+
+ FactorCollection &factorCollection = FactorCollection::Instance();
+
+ // needed by parent language model classes. Why didn't they set these themselves?
+ m_sentenceStart = factorCollection.AddFactor(Output, m_factorType, BOS_);
+ m_sentenceStartWord[m_factorType] = m_sentenceStart;
+
+ m_sentenceEnd = factorCollection.AddFactor(Output, m_factorType, EOS_);
+ m_sentenceEndWord[m_factorType] = m_sentenceEnd;
+}
+
+ExampleLM::~ExampleLM()
+{
+}
+
+LMResult ExampleLM::GetValue(const vector<const Word*> &contextFactor, State* finalState) const
+{
+ LMResult ret;
+ ret.score = contextFactor.size();
+ ret.unknown = false;
+
+ // use last word as state info
+ const Factor *factor;
+ size_t hash_value(const Factor &f);
+ if (contextFactor.size()) {
+ factor = contextFactor.back()->GetFactor(m_factorType);
+ } else {
+ factor = NULL;
+ }
+
+ (*finalState) = (State*) factor;
+
+ return ret;
+}
+
+}
+
+
+