Un lematizador para el español con R... ¿cutre? ¿mejorable?
Uno de los pasos previos para realizar lo que se viene llamando minería de texto es lematizar el texto. Desafortunadamente, no existen buenos lematizadores en español. Al menos, buenos lematizadores libres.
Existen el llamado algoritmo de porter y snowball pero, o son demasiado crudos o están más pensados para un lenguaje con muchas menos variantes morfológicas que el español.
Sinceramente, no sé a qué se dedican —me consta que los hay— los lingüistas computacionales de la hispanidad entera: ¿no son capaces de liberar una herramienta de lematización medianamente decente que podamos usar los demás? Lo más parecido a esa herramienta aparentemente inexistente que conozco es Grampal, que funciona a través de una interfaz web.
Y me ha servido para construir un lematizador rudimentario y francamente perfectible:
require(XML)
lematiza <- function(frase){
palabra <- gsub( " ", "+", frase )
base.url <- paste(
"http://cartago.lllf.uam.es/grampal/grampal.cgi?m=etiqueta&e=",
palabra, sep = "" )
tmp <- readLines( base.url, encoding = 'utf8' )
tmp <- iconv( tmp, "utf-8" )
tmp <- gsub(" ", " ", tmp)
tmp <- readHTMLTable( tmp )
tmp <- as.character(tmp[[1]]$V3)
tmp <- do.call(rbind, strsplit( tmp, " "))[,4]
tmp
}
Con él, desde R,
> lematiza( "des" )
[1] "DAR"
> lematiza( "anduve" )
[1] "ANDAR"
> lematiza( "casitas" )
[1] "CASITA"
> lematiza( "comimos" )
[1] "COMER"
> lematiza( "queremos comer patatas" )
[1] "QUERER" "COMER" "PATATA"
No es rapidísimo, debería mejorar el tratamiento de la codificación y muchas cosas más.
¿Se anima a mejorarlo alguno de mis lectores?