Fix: internals shouldn't change if not training

The only time the classifier's internals should change is during
training. This fixes the cases when giving the classifier previously
unseen tokens causes an unintended entry to be created.

In addition, the internal model variables have been prepended with an
underscore to indicate that they are meant to be internal and may have
unintended consequences if accessed from outside the class.