PLN en español – etiquetado gramatical, lematización e inflexión automática

El PLN, o sea, el procesamiento de lenguajes naturales, forma parte de la disciplina conocida como la inteligencia artificial. Consiste en algoritmos y métodos de aprendizaje automático para realizar un análisis automático de texto. Es decir, ayuda a un ordenador a entender mejor el ser humano, y lo que se comunica mediante su lengua. Sin duda existen muchos recursos para realizar el PLN en inglés, pero ¿cómo se hace eso en español? En este tutorial, vamos a aprender a lematizar, analizar y generar español. 😃

Herramientas para el PLN en español

Lo primero que tenemos que hacer es instalar Python 3.7. Después de eso, hay que ejecutar los comandos siguientes:

python3 -m pip install uralicNLP
python3 -m uralicNLP.download -l spa

¿Cómo lematizar texto en español?

Cuando hablamos o escribimos la lengua castellana, no siempre usamos las palabras en la misma forma morfológica. Por ejemplo, se dice yo puedo, pero tú puedes. En ambos casos, el verbo es el mismo: poder. Estas cadenas de caracteres se ven muy diferentes desde el punto de vista de un ordenador, y por eso, tenemos que lematizar nuestro texto. El resultado de un proceso de lematización sería yo poder y tú poder. ¿Lo ves? Ya no es tan difícil para el ordenador de saber que tanto puedo como puedes se refieren a la misma palabra poder.

El proceso de lematización es muy sencillo con uralicNLP. Solo tienes que crear y ejecutar el siguiente script de Python.

from uralicNLP import uralicApi
print(uralicApi.lemmatize("poder","spa"))

>> ["poder"]

Esto debería producir una lista de lemas para el input, en nuestro caso, el resultado es [«poder»]. El segundo argumento, spa, es el código del idioma que queremos usar. UralicNLP también tiene soporte para otras lenguas, por si acaso lo necesitas. ¡Ojo! Solo puedes pasar una palabra a la vez a la función, si quieres procesar un texto entero, tienes que realizar tokenización primero.

Análisis morfológico y etiquetas gramaticales

El análisis morfológico nos da mucha más información que el proceso de lematización. Nos ayuda a entender la función morfosintáctica de la palabra y su categoría gramatical, es decir, su etiqueta POS.

from uralicNLP import uralicApi
print(uralicApi.analyze("como","spa"))

>> [('comer<vblex><pri><p1><sg>', 0.0), ('como<adv>', 0.0), ('como<cnjadv>', 0.0), ('como<pr>', 0.0), ('como<rel><adv>', 0.0)]

El análisis nos enseña que la palabra como puede ser una forma del verbo comer en la primera persona del singular o bien algún tipo de adverbio o pronombre.

Inflexión automática de palabras españolas

Como bien sabemos, los verbos se conjugan según varios criterios como la persona, el número, el tiempo y el modo. También declinamos nombres y adjetivos en número y género. Podemos utilizar las mismas etiquetas morfológicas que obtuvimos del analizador para la conjugación y declinación. Por ejemplo, si queremos conjugar el verbo comer en la primera persona del singular, ejecutamos el siguiente script en Python:

from uralicNLP import uralicApi
print(uralicApi.generate("comer<vblex><pri><p1><sg>","spa"))
>> [('como', 0.0)]

Referencia

Si usas uralicNLP en alguna publicación académica, por favor, cita este artículo:

Hämäläinen, Mika. (2019). UralicNLP: An NLP Library for Uralic Languages. Journal of open source software, 4(37), [1345]. https://doi.org/10.21105/joss.01345

Consulta la página GitHub del proyecto para más información y ejemplos de uso.