miércoles, marzo 08, 2006

Algoritmo de Porter enespañol

Antes ya habíamos hablado del algoritmo de Porter, pero en [Panessi y
Bordignon, 2001] encontré una descripción mejor que la que habíamos dado
y por tanto paso a resumir.

El algoritmo de Porter permite hacer stemming, esto es extraer los
sufijos y prefijos comunes de palabras literalmente diferentes pero con
una raíz común que pueden ser consideradas como un sólo término.

Al realizar una búsqueda, el usuario puede perderse porque las palabras
están escritas de otra forma y con poca frecuencia en el documento.

Al aplicar stemming, se asegura que la forma de las palabras no penalice
la frecuencia de estas.

Los algoritmos de stemming, o lematización para quienes hablamos
español, más conocidos son: Lovins (1968), Porter (1980) y Paice (1990).
Todos eliminan "los finales" de las palabras en forma iterativa, y
requieren de una serie de pasos para llegar a la raíz, pero no requieren
"a priori" conocer todas las posibles terminaciones.

Originalmente todos fueron hechos para el inglés, y se diferencian en la
eficiencia del código y la elección de sufijos que identifican e
eliminan.

Estudios no definitivos, indican que los resultados conseguidos con
algoritmo de Lovins no concuerda con los resultados obtenidos con los
otros dos que se mencionaron.

La raíz de la lematización es un concepto distinto del de la lingüística
(orígen de las palabras) y no aporta al objetivo que persigue la
lematización.

No hay razón teórica para que los algoritmos de lematización no puedan
quitar también los prefijos (in, ante, anti, etc.), pero la mayor parte
de los métodos de stemmer sólo quitan sufijos.

La razón puede ser decidir cuándo es un prefijo y no parte de la raíz
(indispensable, introducción, etc.) o porque se puede quitar el
significado de la palabra.

El problema se extiende a cuando es un sufijo y no parte de la palabra.
Esto se resuelve fijando un mínimo de letras aceptables para la raíz y
con apoyo de una lista de palabras exentas de la aplicación de la regla.
Adicionalmente, hay reglas que indican cuándo un sufijo no debe
eliminarse.

Otro problema es el cambio de raíz en algunas palabras, por ejemplo, en
plural (repite, repetidos), donde en castellano el problema es mayor.

Los métodos de lematización son dependientes del idioma.

Tienen la ventaja que permiten la reducción de los índices, lo que
aumenta la velocidad de procesamiento.

El algoritmo de Porter tiene la ventaja de ir quitando sufijos por
etapas, en cambio Lovins requiere de la definición de todas las posibles
combinaciones de sufijos.

El algoritmo de Porter se publicó en 1980. Básicamente lee un archivo,
toma una serie de caracteres, y de esa serie, una palabra; luego valida
que todos los caracteres de la palabra sean letras y finalmente aplica
la lematización.

El lematizador hace pasar la palabra por varios conjuntos de reglas,
cada conjunto formado por "n" reglas y cada regla está constituida por:

1. un identificador de la regla
2. un sufijo a identificar
3. el texto por el que se reemplaza el sufijo
4. el tamaño del sufijo
5. el tamaño del texto de reemplazo
6. el tamaño minimo que debe tener la raíz resultante luego de aplicar
la regla (para no procesar palabras demasiado pequeñas).
7. Una función de validación (verifica si se debe aplicar la función una
vez encontrado el sufijo)

Cuando ya no queden más conjuntos de reglas por aplicar, se devuelve la
palabra resultante y se imprime.

Para traducir el algoritmo de Porter al español, se debe:

1. Ubicar los sufijos que ocurren frecuentemente en español.
2. Identificar los sufijos que ocurren juntos.
3. Establecer el orden en que ocurren

Para la selección de los grupos y orden de procesamiento, se deben tener
en cuenta:

1. Dos sufijos que ocurren juntos no pueden pertenecer al mismo
conjunto.
2. Las reglas que quiten sufijos más al final de cada palabra deben ser
procesados en un paso anterior a los que quitan otros.
3. Si un sufimo aparece siempre que ocurra otro, este sufijo es
condicional a la aparición del anterior.

Hay además reglas propias del castellano. Por ejemplo, el sufijo "nos",
que NO ES sufijo en palabras como campesinos, casinos, caminos, etc.;
pero sí en hacernos, ponernos, presentarnos, etc.

Para depurar el algoritmo hay que considerar 3 pasos:
1. Las palabras terminadas en "r", conceptualmente similares, suelen
quedar con distinta raíz, como en los verbos. Por ejemplo, caminar y
caminando. Primero se debe eliminar "ndo". Por lo que la eliminación de
las "r" es uno de los últimos pasos.

2. Similarmente, las palabras que terminan con vocales, por ejemplo, las
palabras terminación y terminal y/o terminó, se dejan para el final.

3. En último término, se aplica una tercer regla que elimina los tildes
de la raíz resultante. Por ejemplo, en diálogo y dialogó.