I haven't publicized this code because I may give the same assignment again, but I have given it to others and you can write to me for it (jason@cs.jhu.edu). The assignment itself is at http://www.cs.jhu.edu/~jason/465/hw5 . If you want a real HMM trigram part-of-speech tagger, try TnT from Thorsten Brants at PARC. Or you could use a transformation-based tagger, like fnTBL, by Radu Florian and Grace Ngai at Johns Hopkins. The vtag code is an overly simple bigram HMM tagger that I wrote quickly in order to try out a homework assignment before giving it to the class. I just wanted to make sure that the assignment was doable, and would run okay even in a slow language like Perl, and I wanted to give the students appropriate hints and provide a reference implementation for grading. Also see http://www.cs.jhu.edu/~jason/papers/#tnlp02 for a bigram tagger implemented via a spreadsheet (!) -- also for pedagogical reasons.