  This paper addresses the problem of correcting spelling errors that result in
valid, though unintended words (such as ``peace'' and ``piece'', or ``quiet''
and ``quite'') and also the problem of correcting particular word usage errors
(such as ``amount'' and ``number'', or ``among'' and ``between''). Such
corrections require contextual information and are not handled by conventional
spelling programs such as Unix `spell'. First, we introduce a method called
Trigrams that uses part-of-speech trigrams to encode the context. This method
uses a small number of parameters compared to previous methods based on word
trigrams. However, it is effectively unable to distinguish among words that
have the same part of speech. For this case, an alternative feature-based
method called Bayes performs better; but Bayes is less effective than Trigrams
when the distinction among words depends on syntactic constraints. A hybrid
method called Tribayes is then introduced that combines the best of the
previous two methods. The improvement in performance of Tribayes over its
components is verified experimentally. Tribayes is also compared with the
grammar checker in Microsoft Word, and is found to have substantially higher
performance.
