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.