miércoles, 21 de noviembre de 2012

N-Gramas: Stupid Backoff Smoothing

Cuando estamos trabajando con enormes cantidades de palabras y por ende de n-gramas, como es el caso de la web (pueden ver los n-gramas que Google publicó, dejé el link en este post), es muy común utilizar un algoritmo de Smoothing llamado: "Stupid Backoff".

Se lo llama así porque es muy simple aunque funciona muy bien, de hecho con grandes volúmenes de datos funciona mejor que otros métodos.

martes, 20 de noviembre de 2012

N-Gramas: Good Turing Smoothing y Kneser-Ney Smoothing


Howard Wolowitz: ¡Se pone mejor! Alguien tiene que ir con el telescopio como especialista y adivinen quién es ese alguien.
Sheldon Cooper: Mohammed Lee.
         (todo el mundo mira confundido)
Howard Wolowitz: ¿Quién es Mohammed Lee?
Sheldon Cooper: Mohammed es el nombre más común en el mundo, y Lee el apellido más común. Como yo no sabía la respuesta, pensé que me daría una ventaja matemática.




¿Por qué está mal Sheldon Cooper? 
Sheldon está utilizando el modelo de lenguaje probabilístico más simple que vimos: unigramas, las probabilidades por separado de cada palabra son altas pero la probabilidad conjunta es prácticamente cero, P(Lee | Mohammed  0

Esto nos lleva de nuevo a la pregunta: ¿Cómo lidiar con secuencias de palabras nunca antes vistas?, vimos una forma de resolver esto: Add-One Smoothing, (también conocido como Laplace Smoothing) pero no es realmente un método muy utilizado. Veamos otros: