La normalización es un proceso de canonizar los tokens para que al momento de almacenarlos se puedan recuperar, a pesar de contener diferencias superficiales de caracteres. Por ejemplo, si realizamos una búsqueda por "USA", deberíamos también obtener los tokens que digan "U.S.A". Esto se hace realizando clases equivalentes, que usualmente son llamadas por un mismo término.
También es importante considerar los otros elementos como acentos, apóstrofes, guiones, etcétera. Si tenemos la palabra "lower-case", el sistema debe ser capaz de encontrar la palabra buscando "lower-case" "lower case" o "lowercase".
En el caso de palabras juntas que pueden ser separadas, por ejemplo en el Alemán, que tienen la tendencia a juntar las palabras, la solución sería separarlas. Si tenemos la palabra "Computerlinguistik" debería subdividirse en dos palabras "Computer" y "linguistik". En español, la palabra "pena" y "peña" tienen un significado completamente diferente.
Con las mayúsculas sucede lo mismo. Una solución que se puede realizar es pasando todos los tokens a minúscula, incluso si son al principio de una oración. El único caso en que se pueden dejar en minúscula es cuando las palabras tienen que ir con mayúscula, ya sea siglas, o nombres propios.
Los documentos usualmente usan derivados que usan las mismas palabras raiz, por ejemplo organización, organizar, organizando. El proceso de Stemming consiste en reducir dichos términos a su base original recortando sus terminaciones.
Por ejemplo:
- am, are, is = be
- car, cars, car's, cars' = car
- gatos, gato = gato