A menudo un traductor tiene que enfrentarse a tareas tecnológicas que precisan de ciertos conocimientos técnicos y de una serie de herramientas para poder llevarlas a cabo. Unas veces son simples conversiones de formato o el tratamiento de codificaciones de caracteres; otras veces son consultas a recursos remotos o el uso de memorias de traducción de gran tamaño. No todas las herramientas de traducción asistida son capaces de dar una solución satisfactoria a estos pequeños problemas, pero hemos dado con una pequeña gran gema, Okapi Framework, un conjunto de herramientas que puede sacaros de más de un apuro. En este artículo comenzaremos hablando de estas utilidades de modo general y después nos centraremos en una de ellas, Tikal, la funcionalidad que da acceso al resto de funciones de Okapi.
Introducción
Las necesidades tecnológicas se han diversificado enormemente en los últimos años. Esto hace que el traductor necesite una gran cantidad de herramientas informáticas, que no siempre son capaces de dar respuesta a todas estas necesidades. Al mismo tiempo, los formatos estándar basados en XML (TMX, para memorias de traducción; TBX, para bases de datos terminológicas; SRX, para reglas de segmentación y XLIFF, para proyectos de traducción y localización) se han consolidado y actualmente están ampliamente aceptados por la mayoría de herramientas de traducción asistida.
Otro hecho importante que está cambiando los hábitos informáticos de muchos usuarios, entre ellos traductores, es el auge de las herramientas libres.
Otro hecho importante que está cambiando los hábitos informáticos de muchos usuarios, entre ellos traductores, es el auge de las herramientas libres. Ya existen conjuntos ofimáticos con licencia libre que son tanto o más potentes que sus equivalentes propietarios, así como sistemas operativos libres, principalmente Linux, que son tanto o más eficientes que sus equivalentes propietarios, donde todavía reina Microsoft Windows. En este contexto, las herramientas de traducción asistida no son una excepción y en el mercado se encuentran algunas de software libre con una larga tradición y con proyectos de desarrollo muy sólidos (probablemente la más destacada sea OmegaT).
En este universo de utilidades libres relacionadas con la traducción destacan las herramientas Okapi (Okapi Framework), un conjunto de utilidades que ofrecen un amplio abanico de funcionalidades para el traductor o el localizador.
Con este artículo inauguramos una serie dedicada a este grupo: en este primer artículo veremos una introducción general a las utilidades de Okapi y trataremos en detalle Tikal, la herramienta para línea de comandos; en el segundo veremos Rainbow, la interfaz gráfica; y en el tercero y último presentaremos las aplicaciones Checkmate, Ratel y Ocelot, así como los filtros adicionales para OmegaT, que permiten traducir nuevos formatos con esta herramienta. En esta serie de artículos no incluimos Longhorn, ya que está pensada para desarrolladores y administradores de sistemas y, por lo tanto, queda fuera de las necesidades habituales de los traductores.
Estos artículos no pretenden ser manuales de usuario de las herramientas, sino presentar la filosofía y las funcionalidades principales. Procuraremos presentar situaciones habituales en las que se encuentran los traductores y para las cuales las utilidades de Okapi pueden resultar de utilidad.
Las herramientas de Okapi
Al igual que una buena navaja suiza ofrece muchísimas utilidades, conviene tenerlo siempre a mano, no ocupa demasiado espacio y nos puede sacar de más de un apuro.
El título de este primer artículo hace referencia a Okapi como la navaja suiza del traductor. Creo que este símil resume muy bien algunas características de este conjunto: al igual que una buena navaja suiza ofrece muchísimas utilidades, conviene tenerlo siempre a mano, no ocupa demasiado espacio y nos puede sacar de más de un apuro. A diferencia de la navaja, por cierto, este conjunto es gratuito, ya que se distribuye bajo una licencia libre, y no es peligroso: nunca te cortarás con él.
Empezaremos viendo qué no es Okapi. No es una herramienta de traducción asistida en sentido clásico. Es decir, si bien podemos crear proyectos de traducción, no podremos traducirlos con la ayuda de memorias, bases de datos terminológicas y, opcionalmente, traducción automática. Para esto ya existen herramientas libres muy potentes, como OmegaT y Virtaal, por ejemplo.
Las herramientas Okapi se definen a sí mismas como un conjunto de componentes y aplicaciones multiplataforma y de software libre que ofrece un soporte extensivo para la localización y traducción de documentación y software. Es decir, constituyen un conjunto de herramientas libres que ofrece una gran cantidad de funcionalidades relacionadas con la traducción y la localización. Veamos cuáles son:
- Tikal: esta herramienta funciona bajo línea de comandos (Terminal o Símbolo de sistema) y por sí misma ofrece numerosísimas funcionalidades.
- Rainbow: esta aplicación con interfaz gráfica ofrece funcionalidades similares a las de Tikal. También permite crear cadenas de pasos simples que dan lugar a nuevas funcionalidades.
- Checkmate: esta herramienta permite llevar a cabo revisiones y controles de calidad sobre archivos bilingües como XLIFF, TMX, PO, etc.
- Ratel: esta aplicación permite crear, mantener y probar reglas de segmentación. Estas reglas definen cómo se tiene que dividir el texto de un documento en segmentos (unidades similares a una oración) que serán tratados por las herramientas de traducción.
- Ocelot: este editor proporciona funcionalidades avanzadas para revisar y corregir archivos XLIFF.
- Filters Plugin for OmegaT: este complemento permite ampliar el número de archivos admitidos por la herramienta de traducción asistida OmegaT.
- Longhorn: esta aplicación de servidor permite ejecutar procesos de manera remota. Pueden utilizarse procesos ya definidos o bien nuevas funcionalidades creadas con Rainbow mediante las cadenas de pasos simples. Al tratarse de una aplicación para administradores de sistemas o desarrolladores no la explicaremos en esta serie de artículos.
Las herramientas de Okapi se publican bajo una licencia libre, concretamente LGPL-3.0 y Apache 2.0.
Las herramientas de Okapi se publican bajo una licencia libre, concretamente LGPL-3.0 y Apache 2.0. Esto significa que son gratuitas y que además podemos compartirlas libremente con nuestros colegas. También podemos utilizar el código fuente de la herramienta para mejorarla, añadir nuevas funcionalidades o bien crear una nueva.
Obtención e instalación de las herramientas de Okapi
Las herramientas de Okapi son multiplataforma y hay versiones disponibles para Windows, Linux y Mac. Están desarrolladas en Java y el único requisito es que el ordenador disponga de un entorno de ejecución de Java instalado. La versión antigua de Okapi estaba desarrollada en entorno .NET y, aunque todavía se puede obtener, el proyecto de desarrollo ya no está activo. Por lo tanto, si accedéis a la antigua página de Okapi, seguid el enlace que os lleva a la versión desarrollada en Java.
Desde la página principal de las herramientas de Okapi podemos acceder directamente a la página de descarga de la distribución estable más reciente. Simplemente hay que tener en cuenta el sistema operativo y si es de 32 o 64 bits. Se descargará un archivo zip que se tendrá que guardar y descomprimir en un directorio de Okapi. No es necesario realizar ningún tipo de instalación. En el directorio donde hayamos descomprimido el archivo zip dispondremos de las aplicaciones ya operativas.
Las aplicaciones que disponen de interfaz gráfica (Rainbow, Checkmate, Ratel y Ocelot) se podrán ejecutar haciendo doble clic sobre ellas desde el explorador de archivos. En cambio, Tikal es una aplicación que funciona bajo línea de comandos y se tendrá que ejecutar desde el Terminal (en Linux y Mac) o la pantalla Símbolo de sistema (en Windows). En la figura 1 podemos observar la interfaz gráfica principal de Rainbow.
Tikal
Tikal es el programa principal de Okapi y el que ofrece el mayor número de funcionalidades. Esta herramienta carece de interfaz gráfica.
Tikal es el programa principal de Okapi y el que ofrece el mayor número de funcionalidades. Esta herramienta carece de interfaz gráfica, por lo que, como hemos dicho, debe utilizarse en Terminal (Linux y Mac) o en la pantalla Símbolo de sistema (Windows).
Una vez en Terminal o en Símbolo de sistema, accederemos al directorio donde tengamos el programa (no es necesario si hemos incluido las herramientas de Okapi en la variable Path) y escribiremos:
./tikal.sh
(en Terminal)
o
tikal.bat
(en Símbolo de sistema)
Si no incluimos ningún parámetro, el programa responderá con un resumen de todas sus funcionalidades:
------------------------------------------------------------------------
Okapi Tikal - Localization Toolset
Version: 2.0.31
------------------------------------------------------------------------
Shows this screen: -?
Shows version and other information: -i or --info
Opens the user guide page: -h or --help
Lists all available filter configurations: -lfc or --listconf
Outputs all messages to the current logger instead of the console: -logger
Outputs debug messages when in console mode (no effect on logger): -trace
Does not abort batch processing in case of individual errors: -continue
Edits or view filter configurations (UI-dependent command):
-e [[-fc] configId] [-pd configDirectory]
Extracts a file to XLIFF (and optionally segment and pre-translate):
-x[1|2] inputFile [inputFile2...] [-fc configId] [-ie encoding] [-sl srcLang]
[-tl trgLang] [-seg [srxFile]] [-tt [url]|-mm [key]
|-pen tmDirectory|-gs configFile|-apertium [configFile]
|-ms configFile|-tda configFile|-gg configFile|-bi bilingFile|-lingo24 configFile]
[-maketmx [tmxFile]] [-opt threshold] [-od outputDirectory]
[-rd rootDirectory] [-nocopy] [-noalttrans] [-pd configDirectory]
-x and -x1: use original file for merge, -x2: use JSON skeleton file for merge
Merges an XLIFF document back to its original format:
-m[1|2] xliffFile [xliffFile2...] [-fc configId] [-ie encoding] [-oe encoding]
[-sd sourceDirectory] [-od outputDirectory] [-pd configDirectory]
[-sl srcLang] [-tl trgLang] [-av|-v |-vp ]|-vc
-m and -m1: use original file for merge, -m2: use JSON skeleton file for merge
Translates a file:
-t inputFile [inputFile2...] [-fc configId] [-ie encoding] [-oe encoding]
[-sl srcLang] [-tl trgLang] [-seg [srxFile]] [-tt [url]
|-mm [key]|-pen tmDirectory|-gs configFile|-apertium [configFile]
|-ms configFile|-tda configFile|-gg configFile|-bi bilingFile|-lingo24 [configFile]
....
De esta manera siempre podremos consultar todas las funciones y los parámetros necesarios.
Tikal ofrece una gran cantidad de funcionalidades que se pueden agrupar en las siguientes categorías: extracción, consulta y traducción, conversión, creación y gestión de memorias de traducción en formato Pensieve, y otras.
Pensieve
Las herramientas de Okapi utilizan un formato específico de memoria de traducción, denominado Pensieve; se trata de una memoria indexada por n-gramas; es decir, por combinaciones de caracteres. Ante un nuevo segmento, la búsqueda de un segmento similar se puede realizar muy rápidamente utilizando los índices. Estas memorias se crean a partir de archivos que contienen segmentos originales con sus correspondientes traducciones a una o más lenguas (típicamente memorias TMX, pero también se pueden crear a partir de archivos PO u otros formatos de archivo bilingüe). Debemos tener en cuenta que las memorias Pensieve son bilingües y unidireccionales; es decir, si tenemos una memoria con lengua de partida inglés y lengua de llegada español, no se podrá utilizar para proyectos de traducción del español al inglés.
Si tenemos una memoria con lengua de partida inglés y lengua de llegada español, no se podrá utilizar para proyectos de traducción del español al inglés.
Las memorias Pensieve son en realidad un directorio que contiene una serie de archivos, que incluyen los segmentos y los índices correspondientes. En una misma memoria se pueden importar tantas memorias de traducción como sea necesario. A su vez, las memorias Pensieve se pueden exportar de nuevo a formato TMX.
Creación de memorias
Para crear una memoria Pensieve o bien para añadir más segmentos de traducción se utiliza el comando -imp de Tikal, que tiene la siguiente sintaxis:
-imp tmDirectory inputFile [inputFile2...] [-fc configId]
[-ie encoding] [-sl srcLang] [-tl trgLang]
[-trgsource|-trgempty] [-all] [-over] [-rd rootDirectory]
[-pd configDirectory] [-approved]
Por ejemplo, si tenemos una memoria TMX que se llama memo.tmx y que contiene segmentos en inglés (en-gb) y español (es-es) (el archivo TMX podría contener más lenguas) y queremos crear una memoria Pensieve que se llame memoria1.pentm con lengua de partida inglés y lengua de llegada español, utilizaremos la siguiente instrucción (indicamos la sintaxis para Windows; tanto en este como en los demás ejemplos, para Linux y Mac se tiene que ejecutar tikal.sh):
tikal.bat -imp memoria1.pentm memo.tmx -sl en-gb -tl es-es
Si queremos convertir la memoria Pensieve de nuevo a TMX, basta con utilizar el comando de exportación -exp:
tikal.bat -exp memoria1.pentm -sl en-gb -tl es-es
Esta instrucción creará el archivo memoria1.pentm.tmx.
Consulta
Tikal ofrece una serie de funcionalidades para consultar diversos recursos, desde la consulta a una memoria de traducción Pensieve o un archivo bilingüe como la consulta a recursos externos; por ejemplo, el servidor GlobalSight TM, el servidor Translate Toolkit TM, MyMemory TM, Google MT, el servidor Apertium MT (ya sea de forma local o remota), el servicio de Microsoft Translator, el repositorio de traducciones TDA, Lingo24 Premium MT o un servidor ModernMT. Conviene recordar que algunos de estos recursos implican una suscripción, pueden ser de pago y las condiciones de uso, e incluso la disponibilidad de algunos recursos, pueden variar con el tiempo.
Si queremos realizar una consulta en una memoria de traducción Pensieve, por ejemplo, lo haríamos de la siguiente manera (en las consultas a memorias Pensieve los parámetros -sl y -tl no son necesarios; con el parámetro -opt 60:5 le indicamos que la similitud mínima debe ser del 60 % y que nos debe devolver las 5 mejores coincidencias):
tikal.bat -q "Only two new elements were introduced to
the system in 2010" -pen memo1.pentm -sl en-gn -tl es-es
-opt 60:5
Esta instrucción nos mostraría en pantalla los resultados de la consulta.
La función de consulta de Tikal, sin embargo, no está pensada para realizar consultas manuales a estos recursos, sino para presentarlas en el momento de creación de un proyecto de traducción. En este caso, se utiliza el parámetro -pen; veremos algunos ejemplos de su uso en los dos apartados siguientes.
Extracción
Tikal puede crear un archivo XLIFF, compatible con cualquier herramienta de traducción asistida, mediante el comando -x:
Extracts a file to XLIFF (and optionally segment and pre-translate):
-x[1|2] inputFile [inputFile2...] [-fc configId] [-ie encoding] [-sl srcLang]
[-tl trgLang] [-seg [srxFile]] [-tt [url]|-mm [key]
|-pen tmDirectory|-gs configFile|-apertium [configFile]
|-ms configFile|-tda configFile|-gg configFile|-bi bilingFile|-lingo24 configFile]
[-maketmx [tmxFile]] [-opt threshold] [-od outputDirectory]
[-rd rootDirectory] [-nocopy] [-noalttrans] [-pd configDirectory]
-x and -x1: use original file for merge, -x2: use JSON skeleton file for merge
Por ejemplo, podemos crear un archivo XLIFF a partir de un documento Open/Libre Office y, en la misma instrucción, segmentarlo (con las reglas especificadas en el archivo SRX de segmentación) y pretraducirlo (con la memoria Pensieve). Nos bastaría con la siguiente instrucción:
tikal.sh -x documento.odt -sl en-gb -tl es-es -seg
segmentation.srx -pen memoria1.pentm -opt 90
Mediante esta instrucción, el programa crea el archivo XLIFF documento.odt.xlf con los idiomas inglés y español, lo segmenta según las reglas de segmentation.srx y pretraduce con la memoria memoria1.pentm los segmentos con una similitud mínima del 90 %. En el resultado, además, nos informa sobre el número de segmentos procesados y el número de segmentos recuperados de manera exacta y parcial.
Extraction
Segmentation: segmentation.srx
Source language: en-gb
Target language: es-es
Default input encoding: UTF-8
Filter configuration: okf_openoffice
Output: documento.odt.xlf
Input: documento.odt
Leveraging settings: Pensieve TM
Database: memoria1.pentm
Processeed segments = 200
Best matches that are exact = 5
Best matches that are fuzzy = 15
Totals:
Processed segments = 200
Best matches that are exact = 5
Best matches that are fuzzy = 15
Done in 0.738s
Si en la instrucción añadimos el parámetro -maketmx podemos obtener también una memoria de traducción TMX con los segmentos utilizados.
tikal.sh -x documento.odt -sl en-gb -tl es-es -seg
segmentation.srx -pen memoria1.pentm -opt 90 -maketmx
Recordemos que OmegaT indexa las memorias de traducción cada vez que abrimos un determinado proyecto de traducción, por lo que existe un límite dado por la memoria física del ordenador.
Esta opción puede ser de gran interés en muchos casos; por ejemplo, si trabajamos con un colaborador y le queremos enviar una memoria de traducción que solo contenga los segmentos útiles para el proyecto en el que vayamos a colaborar. También resulta de gran utilidad si trabajamos con OmegaT y disponemos de una memoria de un tamaño muy grande (como las que podemos obtener descargando los corpus paralelos de Opus Corpus). Recordemos que OmegaT indexa las memorias de traducción cada vez que abrimos un determinado proyecto de traducción, por lo que existe un límite dado por la memoria física del ordenador. Gracias a Tikal podremos indexar estas memorias de gran tamaño en una memoria Pensieve y crear submemorias que contengan únicamente los segmentos útiles para el proyecto específico de traducción.
El archivo XLIFF que obtenemos se puede traducir con cualquier herramienta de traducción asistida; una vez traducido, se puede recuperar su formato original utilizando el comando –m.
Merges an XLIFF document back to its original format:
-m[1|2] xliffFile [xliffFile2...] [-fc configId] [-ie encoding] [-oe encoding]
[-sd sourceDirectory] [-od outputDirectory] [-pd configDirectory]
[-sl srcLang] [-tl trgLang] [-av|-v |-vp ]|-vc
-m and -m1: use original file for merge, -m2: use JSON skeleton file for merge
Así, en el ejemplo que nos ocupa escribiríamos la instrucción siguiente:
tikal.bat -m1 documento.odt.xlf -sl en-gb -tl es-es
El resultado estaría en el archivo documento.out.odt.
Traducción
Tikal también nos permite traducir directamente un documento utilizando diversos recursos, como memorias Pensieve o sistemas de traducción automática, mediante el comando –t.
Translates a file:
-t inputFile [inputFile2...] [-fc configId] [-ie encoding] [-oe encoding]
[-sl srcLang] [-tl trgLang] [-seg [srxFile]] [-tt [url]
|-mm [key]|-pen tmDirectory|-gs configFile|-apertium [configFile]
|-ms configFile|-tda configFile|-gg configFile|-bi bilingFile|-lingo24 [configFile]
[-maketmx [tmxFile]] [-opt threshold] [-pd configDirectory]
[-rd rootDirectory]
Si se quiere utilizar un sistema de traducción automática es preciso contar con un archivo de configuración que aporte los datos necesarios. Por ejemplo, si queremos utilizar Google Translate, necesitaremos un archivo que incluya los siguientes datos:
#v1
apiKey=mypersonalappkey
Este archivo es simplemente un archivo de texto donde incluiremos nuestros datos de configuración al servicio (sustituyendo mypersonalappkey por el valor concreto de nuestra clave de acceso).
Y podremos traducir el documento (documento.odt) mediante la siguiente instrucción (los datos de configuración del servicio están en el archivo configuration.txt):
tikal.bat -t documento.odt -sl en -tl es -seg
segmetation.srx -gs configuration.txt
La traducción del documento estará en el archivo documento.out.odt.
Conversión
Como hemos comentado, Tikal ofrece diversas funcionalidades de conversión de formatos: PO, TMX y tabla (archivos CSV y de texto tabulado).
Por ejemplo, podemos convertir una memoria en formato TMX a un formato de texto tabulado, con el comando -2tbl. El resultado de esta instrucción es el archivo memoria.tmx.txt:
tikal.bat -2tbl memoria.tmx -sl en-gb -tl es-es -tab
La función inversa, es decir, la conversión de un texto tabulado en una memoria TMX, se lleva a cabo con el comando -2tmx. El resultado de esta instrucción es el archivo memo.txt.tmx:
tikal.bat -2tmx memo.txt -sl en-gb -tl es-es
No podemos ofrecer en este artículo todas las funcionalidades que proporciona Tikal, pero hemos visto las más relevantes y ya conocemos la forma genérica de utilizar el programa. De esta manera el lector podrá probar el resto de funcionalidades. Se pueden encontrar las instrucciones detalladas y actualizadas en la wiki de Okapi.
Conclusiones
Aprender a utilizar la línea de comandos es muy aconsejable, ya que permite acceder a una gran cantidad de pequeños programas y scripts.
En este primer artículo de la serie dedicada a Okapi hemos ofrecido una panorámica general de las herramientas y después nos hemos centrado en Tikal. Esta es seguramente la herramienta principal del conjunto, ya que es la que concentra la mayoría de funcionalidades. Somos conscientes de que puede resultar extraña para la mayoría de usuarios actuales, ya que no suelen estar habituados al uso del Terminal o la pantalla de Símbolo de sistema. Sin embargo, aprender a utilizar la línea de comandos es muy aconsejable, ya que permite acceder a una gran cantidad de pequeños programas y scripts que se pueden encontrar libremente en Internet. No es difícil y el rendimiento que se obtiene de este conocimiento es notable. Aquellos usuarios que crean que no vale la pena, no deben preocuparse; en el próximo artículo de la serie presentaremos Rainbow, una aplicación con interfaz gráfica que proporciona un acceso sencillo a la mayoría de funcionalidades de Tikal.
Antoni Oliver
Antoni Oliver es profesor agregado de los Estudios de Artes y Humanidades de la Universitat Oberta de Catalunya (UOC, Barcelona, España) y director del Máster en Traducción y Tecnologías. De formación es ingeniero técnico de Telecomunicaciones (UPC), licenciado en Filología Eslava (UB), máster universitario en Software Libre (UOC) y doctor en Lingüística (UB). Sus áreas de docencia e investigación principales son el procesamiento del lenguaje natural, la traducción automática y las herramientas de ayuda a la traducción. Ha participado en diversos proyectos de investigación y transferencia de tecnología y actualmente es el investigador principal del proyecto Traducción automática neuronal para las lenguas románicas de la península ibérica (TAN-IBE). Ha desarrollado numerosas herramientas libres relacionadas con la traducción automática (entre las que destaca el proyecto MTUOC) y la extracción automática de terminología (recogidas en el proyecto TBXTools). Es autor de numerosos artículos en revistas científicas y del libro Herramientas tecnológicas para traductores.