public void train(List<LabeledLocalTrigramContext> labeledLocalTrigramContexts) { // collect word-tag counts for (LabeledLocalTrigramContext labeledLocalTrigramContext : labeledLocalTrigramContexts) { String word = labeledLocalTrigramContext.getCurrentWord(); String tag = labeledLocalTrigramContext.getCurrentTag(); if (!wordsToTags.keySet().contains(word)) { // word is currently unknown, so tally its tag in the unknown tag counter unknownWordTags.incrementCount(tag, 1.0); } wordsToTags.incrementCount(word, tag, 1.0); seenTagTrigrams.add( makeTrigramString( labeledLocalTrigramContext.getPreviousPreviousTag(), labeledLocalTrigramContext.getPreviousTag(), labeledLocalTrigramContext.getCurrentTag())); } wordsToTags = Counters.conditionalNormalize(wordsToTags); unknownWordTags = Counters.normalize(unknownWordTags); }