Algoritmo de Porter para el Español en Java*

La frecuencia de una palabra en un texto puede ser útil para muchas tareas, por ejemplo para clasificación de textos o clustering, recuperación de información, generación de resúmenes, etc.

He ahí donde radica la importancia del algoritmo de Porter, pues este algoritmo asegura que la forma de las palabras no penalice la frecuencia de éstas. Es decir, una palabra puede estar conjugada en cualquier género, número, persona, etc… y solo se considerará (en muchas ocasiones) como un solo término.

Ejemplo:Aquel es un caballo de la caballería militar, los otros caballos no.”

La frecuencia del termino caball (que hace referencia a caballo) es 3.

El algoritmo de Porter nos permite realizar stemming, esto es remover los sufijos comunes morfológicos e inflexionales de palabras literalmente diferentes pero con un stem común, que pueden ser consideradas como un sólo término. Este algoritmo requiere de un conjunto de pasos para llegar al stem. Existen algunos otros algoritmos de stemming, como Lovins y Paice, pero el más conocido es el de Porter.

En la web encontré dos implementaciones del algoritmo de Porter para el español, una en PHP y una en Java, la segunda está basada en la primera. Sin embargo cuando corrí dichas aplicaciones encontré algunos errores. Entonces decidí basarme en el algoritmo original. Ahí pude darme cuenta de los pequeños errores que se cometió en las implementaciones anteriores y los corregí, bueno al menos según el test de Snowball, de las 28390 palabras todo corre OK.

Bueno pueden descargar está implementación del algoritmo de Porter para el Español en mi repositorio GitHub, recuerden es CopyLeft, ósea pueden utilizarlo y realizar las modificaciones que crean convenientes.

Aquí les muestro unos screenshots de la implementación.

*Este post fue publicado en el 2011 en mi otro blog el cual ya no está disponible.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.