FreeLing no es solo para C, con Java también habla

freeling

A título personal, que un sistema informático pueda analizar y entender lo que estás diciendo, lo veo muy útil. Es genial poder pedir cosas a un sistema sin necesidad de escribir nada y que te comprenda. Sí, lo sé, puedo parecer un poco vago,  pero es algo magnifico. Una vez dicho esto, os voy a comentar los pasos que sigo para realizar la instalación desde el SVN de FreeLing en Ubuntu para después utilizarlo con Java.

Todo esto que voy a detallar se hace desde la consola de comandos y teniendo instalado en el sistema el idioma inglés. No hace falta que esté seleccionado dicho idioma, solo instalado. Lo primero es instalar las librerías, programas y demás recursos que se van a utilizar. Todas ellas están en los repositorios de Ubuntu 13.10 y se pueden instalar desde aptitude o apt-get. Yo me voy a aptitude.

A fecha de abril de 2014, se debe instalar lo siguiente: build-essential automake autoconf libboost-regex-dev libicu-dev libboost-filesystem-dev libboost-program-options-dev subversion ant swig libtool libboost-thread-dev zlib1g-dev libpcre3-dev libdb6.0-dev. Las herramientas instaladas, no solo son para FreeLing, sino que también nos van a servir para la parte de Java que más adelante detallaré. Ahora creamos la carpeta de freeling donde nos dé la gana, yo normalmente la suelo poner en el escritorio para tenerla a mano para realizar pruebas y consultas, pero la podéis poner donde os venga en gana. Dentro de ella, hacemos la copia del repositorio SVN de freeling desde su sitio. Esto puede tardar un rato. Una vez que tenemos descargado la copia, tenemos que verificar si satisfacemos todas las necesidades para la instalación. Para ello, entramos dentro de la carpeta que hemos descargado, trunk, y ejecutamos autoreconf –install. Hasta la versión 2474, se hacía aclocal; libtoolize; autoconf; automake –a.

Después de este comando, ejecutamos ./configure y rezamos para que no casque nada y obtengamos el OK. Una vez que tengamos el OK vienen los pasos más largos. Ejecutamos make y como root make install. Una vez ejecutado este comando y si no ha fallado nada, ya tenemos instalado freeling en el sistema. Para comprobarlo podemos ejecutar echo “he logrado instalar el programa” | analyze –f analyze -f /usr/local/share/freeling/config/es.cfg. Este comando nos analizará la frase “he logrado instalar el programa” dándonos un resultado semejante a este:

He haber VAIP1S0 0.993808
logrado lograr VMP00SM 1
instalar instalar VMN0000 1
el el DA0MS0 1
programa programa NCMS000 0.953488

Ahora vamos a pegarnos con la parte de Java. En la carpeta de freeling que hemos creado, entramos hasta trunk/APIs/java. En esta carpeta tenemos las herramientas necesarias para generar, mediante JNI, las clases necesarias para realizar las llamadas a freeling para poder procesar las frases desde una aplicación Java. En este punto es donde necesitamos instalar el JDK de Java. Yo os recomiendo instalar el de Oracle, porque en anteriores ocasiones he tenido problemas con el openJDK, pero bueno, que cada uno elija lo que desee.

Con Java, lo de siempre, meter en el .bashrc el JAVA_HOME y, esto es importante , debemos crear, también en el .bashrc, la variable de LD_LIBRARY_PATH que apunte a /usr/local/lib y a la carpeta de freeling donde está la api de Java, trunk/APIs/java.

Una vez que ya tengamos instalado Java y creado la variable de freeling en el .bashrc, tenemos que crear la librería .jar y las clases para comunicarnos con el core de freeling. Para ello, solamente tenemos que revisar el makefile que hay en la carpeta de la api de java, poniendo bien la ruta a los ejecutables de java. Una vez creada la librería, tenemos un Analyze.java para verificar que podemos comunicarnos con freeling mediante java.

Espero que os sirva este manual para la instalación y uso de esta completa librería de Procesado de Lenguaje Natural. En mi página personal tenéis los comandos que he utilizado aquí.

Patxi Galan García
Acerca de
Investigador de S3lab
Expertise: Natural Language Processing, Android, Cyberbullying