static void SolveViterbiLearning() { // read data StreamReader input = new StreamReader("data.txt"); HiddenMarkovModel HMM = new HiddenMarkovModel(); int iterations = Int32.Parse(input.ReadLine().Trim()); input.ReadLine(); string outcome = input.ReadLine().Trim(); input.ReadLine(); ReadAlphabet(input, HMM); ReadStates(input, HMM); ReadTransition(input, HMM); ReadEmission(input, HMM); for (int i = 0; i < iterations; ++i) { double prob = 0.0; string path = HMM.DecodePath(outcome, ref prob); HMM.EstimateParameters(outcome, path); } StreamWriter output = new StreamWriter("result.txt"); output.Write(HMM._transition.ToString()); output.WriteLine("--------"); output.Write(HMM._emission.ToString()); output.Flush(); }
static void SolveParameterEstimation() { // read data StreamReader input = new StreamReader("data.txt"); HiddenMarkovModel HMM = new HiddenMarkovModel(); string outcome = input.ReadLine().Trim(); input.ReadLine(); ReadAlphabet(input, HMM); string path = input.ReadLine().Trim(); input.ReadLine(); ReadStates(input, HMM); HMM.EstimateParameters(outcome, path); StreamWriter output = new StreamWriter("result.txt"); output.Write(HMM._transition.ToString()); output.WriteLine("--------"); output.Write(HMM._emission.ToString()); output.Flush(); }