Posts Tagged ‘alineación geométrica’

h1

Convertir TEI con Python

19 de abril de 2013

Hace unos días, un colega que está trabajando en un algoritmo de alineación geométrica me pidió un vocabulario básico inglés-español. Él trabaja normalmente con árabe e inglés y quería probar sus prototipos con español, para ver cómo se comparan los resultados de esos pares de idiomas.

(La alineación geométrica es un método de alineación de segmentos bilingües que no se basa en la longitud relativa de los segmentos ni en la frecuencia de las palabras conocidas, sino en inferencias geométricas basadas en la posición de las palabras dentro del texto. Es particularmente útil en el caso del árabe porque la puntuación y la segmentación, escollos habituales para la alineación de textos árabes con textos en otras lenguas, tienen una importancia relativa.)

Me puse a buscar diccionarios bilingües gratuitos por la red y me topé con FreeDict.org. Este sitio tiene una cantidad enorme de diccionarios bilingües de tipo «BBB», o sea, «Bad But Big» (malos, pero grandes), justamente lo que mi amigo necesitaba. No hacía falta que la lista fuese muy precisa, pero sí que contuviera muchísimas palabras.

El diccionario inglés-español que encontré era un auténtico desastre: las entradas con más de una palabra están truncadas (las inglesas) o pegadas unas a otras (las españolas), señal evidente de que quien lo creó lo hizo con herramientas automatizadas y, fiel al principio BBB, no se preocupó en absoluto de comprobar el resultado. Quizá ni siquiera sabía español (en realidad no hace falta).

Los archivos descargables de FreeDict.org están en formato TEI (Text Encoding Initiative). El consorcio TEI es el creador y custodio del formato que lleva su nombre, dedicado a la representación de textos en formato digital. TEI es un lenguage SGML bastante sencillo con muchísimas aplicaciones prácticas.

Yo nunca había manejado este formato. Tengo scripts para leer HTML y XML (sobre todo para TMX), pero no para TEI. Por fortuna, una búsqueda rápida me llevó a esta página web de Mike Giarlo en la que afirma que leer TEI con Python «está chupado» (literalmente dice, en inglés, que es «simple as pie»). Y tiene razón.

La librería ideal para conseguirlo se llama BeautifulSoup, interesante nombre que procede de un poema de Lewis Carroll. Quien tenga curiosidad puede leerlo en el capítulo X de Alicia en el país de las maravillas (Lewis Carroll). Esta librería es, ¿cómo decirlo?, una bendición. No tardé ni media hora en aprender a usarla y escribir el script que me devolvió el diccionario entero, en el formato requerido (término-tabulador-término) y sin errores. El único tropiezo, muy breve, fue la forma de importar la librería, puesto que el código de la página de Mike Giarlo está un poco desfasado.

El script está aquí. Es muy elemental, pero ilustra el uso de la librería para esta estructura de datos concreta. Espero que sea útil.