The program apertium-tagger achieves this by using a Hidden Markov Model, a statistical model using bigrams (trigram training is also possible). Training of apertium-tagger can be supervised or unsupervised; there is also target-language tagger training where training is based on how good the translations given by the tagging are, using a target-language language model. If a certain bigram sequence is impossible, one may explicitly tell the tagger this with FORBID or ENFORCE rules.

Some language pairs use Constraint Grammar (CG) to remove more readings before apertium-tagger; CG lets you write rule-based taggers which allows more complex rules.