  This paper proposes an unsupervised classification method that partitions a
set of files into non-overlapping dialects based upon their behaviors,
determined by messages produced by a collection of programs that consume them.
The pattern of messages can be used as the signature of a particular kind of
behavior, with the understanding that some messages are likely to co-occur,
while others are not. Patterns of messages can be used to classify files into
dialects. A dialect is defined by a subset of messages, called the required
messages. Once files are conditioned upon dialect and its required messages,
the remaining messages are statistically independent.
  With this definition of dialect in hand, we present a greedy algorithm that
deduces candidate dialects from a dataset consisting of a matrix of
file-message data, demonstrate its performance on several file formats, and
prove conditions under which it is optimal. We show that an analyst needs to
consider fewer dialects than distinct message patterns, which reduces their
cognitive load when studying a complex format.
