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ó.

10 comentarios:

LA QUE BUSCA dijo...

Te envío una referencia bibliográfica por si no la conoces.

La lematización en español: una aplicación para la recuperación de información. Gijón: Trea, 2005 I.S.B.N.: 84-9704-186-0

LeGutier dijo...

Te agradezco el comentario... la verdad es que es el primero que recibo :D, aunque quiero pensar que el tema no merece mayores comentarios y no que lo que escribo nadie lo lee. :'(
Me parece que el libro es de tu autoría. Lo buscaré, lo leo y lo comento en mi blog ;)

Salu2,

Unknown dijo...

Muy interesante tu publicación, yo lo estoy usando porque deseo reducir el tamaño de la representación de los documentos espacio vectorial).

Hago agrupamiento para conocer los temas mas relevantes en redes sociales.


Tal vez no hay muchos comentarios puesto que es un tema mas científico por decirlo así.

Estamos en contacto. Saludos desde México

José Antonio Cabello Galisteo dijo...

Pues yo también aprovecho para agradecerte la información tan clara y detallada. Un saludo

Josue dijo...

basicamente no hay comentarios por que no muchas personas estan iteresadas en esto,pero sin duda el analisis del lenguaje naturale muy complejo e interesante .
saludos

Unknown dijo...

Muchas gracias amigo. Y sí que te leemos, por supuesto que sí...

Kasty dijo...

Muchas gracias, la verdad es que es un tema muy interesante. Estoy estudiando Traducción Automática Asistida en mi carrera y la verdad es que me ha aclarado muchas dudas sobre la reducción de resultados en programas de traducción y extracción terminológica.

Muchas gracias otra vez.

Un saludo

Unknown dijo...

Hola, excelente explicación del algoritmo, pero será que tienes a la mano alguna implementación del mismo en español? es para un trabajo de investigación que estoy haciendo en la universidad. Gracias!

Unknown dijo...

Me ha resultado muy útil. Gracias.

MacPepe dijo...

Trabajo en un conjugador y su opuesto, el lematizador.
El silabeador es completamente guiado por reglas y no consulta BD.
Por lo que estoy analizando, el conjugador también será un autómata razonador.
El lematizador es una criba de reglas donde las concordancias son múltiples (los sufijos por ER e -IR tienen demasiadas congruencias) y en el caso del modelo lematizador el desempate entre una raíz y otra se resolvería en una consulta a BD. En ese punto estoy detenido por el momento.
He deducido correcta y coherentemente las reglas de conjugación universales para la lengua española la cual incluye regulares e irregularidades conocidas. Creo que en no mucho resolveré por via de razonamientos las pequeñas lagunas que aparecen en el cambio de raíz en MENTIR y SENTIR, en el presente subjuntivo :)