예제 #1
0
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)
예제 #2
0
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