Diffstat (limited to 'inputmethods/dasher/LanguageModel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | inputmethods/dasher/LanguageModel.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/inputmethods/dasher/LanguageModel.cpp b/inputmethods/dasher/LanguageModel.cpp new file mode 100644 index 0000000..9635273 --- a/dev/null +++ b/inputmethods/dasher/LanguageModel.cpp @@ -0,0 +1,77 @@ +// LanguageModel.cpp +// +///////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2001-2002 David Ward +// +///////////////////////////////////////////////////////////////////////////// + +#include "LanguageModel.h" + +using namespace Dasher; +using namespace std; + +// I have removed the following as it doesn't seem to compile in gcc: + +// using CLanguageModel::CNodeContext; + +/////////////////////////////////////////////////////////////////// + +CLanguageModel::CLanguageModel(CAlphabet* Alphabet, int Normalization) + : m_Alphabet(Alphabet), m_iNorm(Normalization) +{ + m_iModelChars = m_Alphabet->GetNumberSymbols(); +} + + +/////////////////////////////////////////////////////////////////// + +void CLanguageModel::EnterText(CNodeContext* NodeContext, string TheText) +{ + vector<symbol> Symbols; + m_Alphabet->GetSymbols(&Symbols, &TheText, false); + for (unsigned int i=0; i<Symbols.size(); i++) + EnterSymbol((CContext*) NodeContext, (modelchar) Symbols[i]); +} + +/////////////////////////////////////////////////////////////////// + +void CLanguageModel::LearnText(CNodeContext* NodeContext, string* TheText, bool IsMore) +{ + vector<symbol> Symbols; + + m_Alphabet->GetSymbols(&Symbols, TheText, IsMore); + + for (unsigned int i=0; i<Symbols.size(); i++) + LearnSymbol((CContext*) NodeContext, (modelchar) Symbols[i]); +} + +/////////////////////////////////////////////////////////////////// + +bool CLanguageModel::GetNodeProbs(CNodeContext* Context, vector<symbol> &NewSymbols, + vector<unsigned int> &Groups, vector<unsigned int> &Probs, double AddProb) +{ + // make sure it is a valid context + if (Context) { + int s = m_Alphabet->GetNumberSymbols(); + NewSymbols.resize(s); + Groups.resize(s); + for (int i=0;i<s;i++) { + NewSymbols[i]=i; // This will be replaced by something that works out valid nodes for this context + Groups[i]=m_Alphabet->get_group(i); + } + GetProbs((CContext*) Context,Probs,AddProb); + return true; + } + return false; +} + +int CLanguageModel::GetColour(int character) +{ + std::string colour=m_Alphabet->GetColour(character); + if (colour!="") { + return atoi(colour.c_str()); + } else { + return 0; + } +} |