Detección de género para nombres de personas

Estoy trabajando en un programa que indica si el nombre de una persona es de género masculino o femenino. Esta es la primera versión que funciona bastante bien, a pesar de no identificar correctamente algunos nombres. En la página del programa hay una demostración de su uso y las instrucciones para acceder por medio de una interfaz de programación (API) que permite obtener los datos en formatos como JSON y XML.

El programa funciona con un clasificador bayesiano sencillo que deduce los criterios para determinar cuándo se trata de un nombre de hombre o de mujer. Para esto esto tiene en cuenta únicamente las últimas letras de cada nombre y no se basa en una lista de nombres conocidos. Sin embargo, por ahora estoy utilizando una lista de excepciones para corregir los errores conocidos del clasificador.

Escribí el programa en Python utilizando varias librerías adicionales. Primero, implementé el clasificador usando NLTK prácticamente siguiendo los pasos descritos en el libro Natural Language Processing with Python (consultar el capítulo 6). Era la primera que utilizaba esta librería para hacer algo serio y me sorprendió que fuera tan fácil de aprender a utilizar; además de la documentación completa, está el libro, que no sólo es gratuito sino que también explica muy bien los conceptos básicos de procesamiento de lenguaje natural. Por otro lado, para la interfaz web utilicé dos herramientas conocidas: Django y Tastypie.

Los datos de ejemplo fueron reparados minuciosamente por Luis Alfredo Rodríguez y el equipo de Congreso Visible, a quienes agradezco por su trabajo.

Este es el primero de los programas que incluiré dentro de data-toolkit.cavorite.com, el proyecto que agrupará herramientas para la extracción y recuperación de información, el procesamiento de lenguaje natural y el procesamiento de datos en general. Es una iniciativa similar a datasciencetoolkit.org y text-processing.com, pero enfocada en proporcionar herramientas especializadas para acceder a información en español.