Provides a set of interfaces and classes that are used to define the search graph used by the decoder. Implementations of the `Linguist` interface are used by the decoder to create the search graph. The search graph is a directed graph formed by `SearchState` and `SearchStateArc` objects. Some implementations of the `Linguist` may build the search graph based upon a `Grammar`, which represents a graph of words and probabilities. This package provides a number of different implementations of `Grammar`