Discriminative language modeling with conditional random fields and the perceptron algorithm | Synapse