1. A computer-implemented method of normalizing strings, comprising: tokenizing a string into a sequence of components; generating one or more sequences of tags by assigning tags to the components based on lookup tables; determining, using a processor, a sequence of states of the components based on the one or more sequences of tags; and generating a normalized string by normalizing the sequence of the states.