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

github.com/moses-smt/giza-pp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'GIZA++-v2/ForwardBackward.h')
-rw-r--r--GIZA++-v2/ForwardBackward.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/GIZA++-v2/ForwardBackward.h b/GIZA++-v2/ForwardBackward.h
new file mode 100644
index 0000000..42449d3
--- /dev/null
+++ b/GIZA++-v2/ForwardBackward.h
@@ -0,0 +1,62 @@
+/*
+
+Copyright (C) 1999,2000,2001 Franz Josef Och (RWTH Aachen - Lehrstuhl fuer Informatik VI)
+
+This file is part of GIZA++ ( extension of GIZA ).
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+USA.
+
+*/
+#ifndef NO_EM_MARKOF_ZEUGS_DEFINED
+#define NO_EM_MARKOF_ZEUGS_DEFINED
+#ifndef NO_TRAINING
+#include "myassert.h"
+#include "Array.h"
+#include "Array2.h"
+
+class HMMNetwork
+{
+ public:
+ int as,bs;
+ Array2<double> n;
+ Array<Array2<double> > e;
+ Array<double> alphainit;
+ Array<double> betainit;
+ int ab;
+ double finalMultiply;
+ HMMNetwork(int I,int J)
+ : as(I),bs(J),n(as,bs),/*e(as,as,0.0),*/e(0),alphainit(as,1.0/as),betainit(as,1.0),ab(as*bs),finalMultiply(1.0)
+ {}
+ double getAlphainit(int i)const{return alphainit[i];}
+ double getBetainit(int i)const{return betainit[i];}
+ inline int size1()const{return as;}
+ inline int size2()const{return bs;}
+ inline const double&nodeProb(int i,int j)const
+ {return n(i,j);}
+ inline const double&outProb(int j,int i1,int i2)const
+ {/*massert(e[min(int(e.size())-1,j)](i1,i2) );*/ return e[min(int(e.size())-1,j)](i1,i2);}
+ friend ostream&operator<<(ostream&out,const HMMNetwork&x)
+ {
+ return out <<"N: \n"<< x.n << endl << "E: \n" << x.e << "A:\n" << x.alphainit << "B:\n" << x.betainit << endl;
+ }
+};
+double ForwardBackwardTraining(const HMMNetwork&mc,Array<double>&gamma,Array<Array2<double> >&epsilon);
+void HMMViterbi(const HMMNetwork&mc,Array<int>&vit);
+double HMMRealViterbi(const HMMNetwork&net,Array<int>&vit,int pegi=-1,int pegj=-1,bool verbose=0);
+double MaximumTraining(const HMMNetwork&net,Array<double>&g,Array<Array2<double> >&e);
+void HMMViterbi(const HMMNetwork&net,Array<double>&g,Array<int>&vit);
+#endif
+#endif