summaryrefslogtreecommitdiff
path: root/inputmethods/dasher/LanguageModel.cpp
Unidiff
Diffstat (limited to 'inputmethods/dasher/LanguageModel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/dasher/LanguageModel.cpp77
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 @@
1// LanguageModel.cpp
2//
3/////////////////////////////////////////////////////////////////////////////
4//
5// Copyright (c) 2001-2002 David Ward
6//
7/////////////////////////////////////////////////////////////////////////////
8
9#include "LanguageModel.h"
10
11using namespace Dasher;
12using namespace std;
13
14// I have removed the following as it doesn't seem to compile in gcc:
15
16// using CLanguageModel::CNodeContext;
17
18///////////////////////////////////////////////////////////////////
19
20CLanguageModel::CLanguageModel(CAlphabet* Alphabet, int Normalization)
21 : m_Alphabet(Alphabet), m_iNorm(Normalization)
22{
23 m_iModelChars = m_Alphabet->GetNumberSymbols();
24}
25
26
27///////////////////////////////////////////////////////////////////
28
29void CLanguageModel::EnterText(CNodeContext* NodeContext, string TheText)
30{
31 vector<symbol> Symbols;
32 m_Alphabet->GetSymbols(&Symbols, &TheText, false);
33 for (unsigned int i=0; i<Symbols.size(); i++)
34 EnterSymbol((CContext*) NodeContext, (modelchar) Symbols[i]);
35}
36
37///////////////////////////////////////////////////////////////////
38
39void CLanguageModel::LearnText(CNodeContext* NodeContext, string* TheText, bool IsMore)
40{
41 vector<symbol> Symbols;
42
43 m_Alphabet->GetSymbols(&Symbols, TheText, IsMore);
44
45 for (unsigned int i=0; i<Symbols.size(); i++)
46 LearnSymbol((CContext*) NodeContext, (modelchar) Symbols[i]);
47}
48
49///////////////////////////////////////////////////////////////////
50
51bool CLanguageModel::GetNodeProbs(CNodeContext* Context, vector<symbol> &NewSymbols,
52 vector<unsigned int> &Groups, vector<unsigned int> &Probs, double AddProb)
53{
54 // make sure it is a valid context
55 if (Context) {
56 int s = m_Alphabet->GetNumberSymbols();
57 NewSymbols.resize(s);
58 Groups.resize(s);
59 for (int i=0;i<s;i++) {
60 NewSymbols[i]=i; // This will be replaced by something that works out valid nodes for this context
61 Groups[i]=m_Alphabet->get_group(i);
62 }
63 GetProbs((CContext*) Context,Probs,AddProb);
64 return true;
65 }
66 return false;
67}
68
69int CLanguageModel::GetColour(int character)
70{
71 std::string colour=m_Alphabet->GetColour(character);
72 if (colour!="") {
73 return atoi(colour.c_str());
74 } else {
75 return 0;
76 }
77}