En POSTDATA usamos la librería de procesamiento de lenguaje natural para Python, spaCy. Se está convirtiendo en un estándar en la industria, pero, aunque generalmente funciona bien, todavía hay que pulir un poco el soporte para español.
Un problema que nos surgió con esta librería fue que no detecta bien los pronombres clíticos (por ejemplo, en palabras como «dímelo», «piérdete» o «hazme»). Esto se debe a que spaCy usa un modelo de datos para español que no ha sido entrenado de manera apropiada para este tipo de palabras.
Para solucionar este problema hemos estado trabajando en una extensión para spaCy que nos permite una identificación y separación apropiada, tanto de la palabra raíz, como de sus sufijos. Esta herramienta open source ha sido liberada y se puede instalar muy fácilmente desde python con un simple «pip install spacy_affixes». En la página de github del proyecto se puede encontrar toda la documentación necesaria:
https://github.com/linhd-postdata/spacy-affixes
¿Cómo funciona?
El funcionamiento es muy simple: nos bajamos archivos de reglas para afijos (que obtendremos de la herramienta Freeling http://nlp.lsi.upc.edu/freeling/index.php/node/1 ) y tras implementar sus reglas en python, añadimos este nuevo comportamiento al «pipeline» (el flujo de trabajo) de spaCy. Gracias a esto obtenemos unos resultados mucho más precisos de los que obtiene spaCy en esta tarea. Es una pieza clave de las herramientas desarrolladas por el equipo de POSTDATA dentro de la suite de PoetryLab y nos enorgullece mucho poder liberarla y compartirla con el resto de la comunidad NLP. Es nuestro granito de arena en un campo en el que hay tan pocos recursos libres para español, como es el de procesamiento del lenguaje natural.