def main(): if len(sys.argv) == 2: filename = sys.argv[1] with open(filename) as f: lines = f.read().splitlines() j = int(lines[0]) observations = lines[2] symbols = lines[4].split(' ') states = lines[6].split(' ') transition = defaultdict(list) linenum = 9 for i in range(len(states)): line = lines[linenum].split('\t') transition[line[0]] = map(float,line[1:]) linenum += 1 emission = defaultdict(list) linenum += 2 for i in range(len(states)): line = lines[linenum].split('\t') emission[line[0]] = map(float,line[1:]) linenum += 1 transition,emission = viterbiLearning(j,observations,symbols,states,transition,emission) HMMparaest.printtransition(transition,states) print "--------" HMMparaest.printemission(emission,states,symbols)
def viterbiLearning(j,observations,symbols,states,transition,emission): while j > 0: hiddenpath = viterbialgorithm(observations, symbols,states,transition, emission) transition,emission = HMMparaest.hmmParameterEstimation(observations,symbols,hiddenpath,states) j -= 1 return transition,emission