30/6/10

Omyx:encuentro interplanterario



Omyx:encuentro interplanterario (que puede descargarse aquí ) de Raymond Colle es un hiper relato muy interesante en donde la historia, el texto, la madeja de acontecimientos y personajes es lo que realmente importa aportando los enlaces y el hipertexto una lectura más atractiva, no lineal, llena de sorpresas. El lector no sólo puede avanzar por la historia. Además, dispone de una supuesta enciclopedia galáctica, de un catálogo que muestra cada personaje, de una cronología de hechos, etc.

El interface es correcto, agradable a la vista, aunque sea sencillo y no use toda la parafernalia multimedia (pero sí incluye fotografías en algunas pantallas). Se recorre y lee a gusto siempre aunque si a uno no le gusta la ciencia ficción puede no interesarle la novela.


29/6/10

El hombre del botánico



El hombre del botánico (que puede descargarse haciendo click en el enlace) de Raymond Colle es un hiper relato realizado como soporte de un curso universitario. Se trata de una historia negra, bien contada, que aúna reportes policiales ficticios, una agenda de un supuesto doctor Marchant y enlaces a páginas que sirven para profundizar en las materias que el curso imparte. Desgraciadamente, algunos de estos enlaces están rotos. La trama- una agresión relacionada con el espionaje industrial en materia de inteligencia artificial que provoca amnesia en una persona- se ha de ir hilando a medida que se navega por los enlaces. Algunos de ellos sirven para avanzar en la historia, otros para profundizar en las materias del curso. Un interface muy austero, muy sencillo (la obra es de 1999 y las capacidades gráficas de entonces eran limitadas) y una trama bien construida sobre un objetivo un tanto exotérico y confuso a veces pero que, en cualquier caso, atrae el interés del lector.


28/6/10

Alpha Protocol



Aunque, como ya he defendido en otros post anteriores (por ejemplo aquí ), en mi opinión los juegos no son literatura, incluyo hoy un post sobre Alpha Protocol, el nuevo juego de rol de SEGA y Obsidian Entertaiment por tener una carga de diálogos e historia un poco superior a lo que es normal. Se trata de un thriller de espías que se desarrolla en una red compleja de hiperenlaces, de modo que el jugador puede tomar diversas personalidades para un mismo personajes y que, por ejemplo, permite una treintena de desenlaces diferentes. Los diálogos, que tienen una notable ironía y sensualidad en algunos casos, ocurren en tiempo real y están programados de tal modo que se generan teniendo en cuenta los generados anteriormente, de si habla a un aliado o a un enemigo y del tono adoptado. Es más, los diálogos afectan a las posibles ramificaciones del juego. Por lo demás, lo de siempre: tiros, tiros, tiros y más tiros.




27/6/10

Espérame en La Habana

Espérame en La Habana ( MR ediciones, 2008) de Juan Antonio March es una novela a medio camino entre el relato romántico y la política ficción. Por un lado, el autor recrea la historia de Cuba sobre personajes y líderes imaginarios, simulando también un desenlace futuro en su potencial transición política. Por otro, las páginas de March están llenas de una indisimulada admiración por la isla, por sus paisajes, por su color, por sus parajes maravillosos, por su vitalidad, por su forma de vida que, sin ocultar las turbulencias y la maldad inherentes a toda sociedad, genera tanta capacidad de vivir y de amar. Podría achacársele, sin duda, que la panorámica es tan sólo desde el punto de vista de las clases acomodadas o influyentes del país.

Es precisamente en los párrafos que tratan del amor y del desamor , de la ilusión y el desengaño, de la nostalgia por el tiempo pasado y por un futuro mejor, donde March logra la mayor altura con textos de mucha sensibilidad y sensualidad. El escenario político puede en ocasiones resultar farragoso, sobre todo porque es sólo un escenario para lo que realmente importa: la vida de los personajes, el amor ciego de Jorge Basauri o el interesado atractivo de María Silva, los sueños rotos de Mielandra o las aspiraciones de Julio y Héctor. Uno lee deprisa los acontecimientos histórico políticos y se recrea en los capítulos emocionales. Es una novela sencilla, confusa en ciertos pasajes, pero que deja un regusto agridulce y tierno que perdura.


24/6/10

Lingüística computacional (X)




El capítulo anterior de esta serie puede verse
aquí.


El ordenador hablante


Uno de los campos de importancia en la aplicación de los ordenadores al tratamiento de las lenguas, es la conversión de texto a voz y viceversa.

El que un ordenador sea capaz de hablar y mantener una conversación como una persona es una tarea harto compleja y, hoy por hoy, estamos muy lejos de conseguirlo. Esta complejidad viene derivada, especialmente, del acto de comprender y generar mensajes. En todo acto comunicacional existen seis pasos fundamentales tal como se en la figura:




Los pasos extremos: imaginar una idea coherente y comprenderla están hoy por hoy lejos de la capacidad de una computadora. La inteligencia artificial podrá algún día llegar a imaginar algoritmos que realicen estas tareas en igualdad de condiciones con un humano pero no a fecha de hoy.

Respecto a los pasos intermedios, podríamos, en base al desarrollo computacional de las gramáticas formales, llegar a crear frases correctas y determinar si las oraciones recibidas son correctas. Pero de ahí a entender el significado va un largo camino.

Sin embargo, en donde sí se ha avanzado considerablemente es en los pasos centrales. Es decir, emitir electrónicamente los sonidos que conformen una frase de manera correcta y, asimismo, tener la capacidad de reconocer un mensaje vocal y traducirlo a una frase escrita, susceptible de ser analizada con un parser.

Los sistemas de tratamiento de voz tienen un amplio campo de aplicaciones, algunas de las cuales son ya casi de uso rutinario. Así, los mensajes emitidos en los aeropuertos, los mensajes automáticos que nos llegan por teléfono, algunos electrodomésticos que emiten mensajes de alerta, GPSs, los sistemas de ayuda a invidentes, etc. También en el ámbito del reconocimiento de voz, existen ya aplicaciones diarias como los que utilizan las compañías telefónicas para escuchar un mensaje de voz y convertirlo en mensaje de texto SMS con una calidad más que apreciable o los teléfonos y GPS que entiendes, al menos, una serie de mensajes limitados.

Sin duda, como decíamos en el
capítulo 1 de esta serie, el futuro pasa porque la interacción con los ordenadores sea verbal, sin teclados ni ratones. Además de ser la forma comunicativa natural, el uso de la voz permite además la realización de otros trabajos de forma simultánea a dicha comunicación y permiten acceder a una gran cantidad de información en poco tiempo.

En el campo de la literatura, existe una potencial aplicación muy interesante que, hasta donde yo sé, no ha sido aún desarrollada más allá de experiencias de laboratorio: el teatro. Podemos imaginar que un autor de una obra de teatro podría probar cómo se escuchan sus textos antes de publicarlos. Un ordenador capaz no sólo de crear voces sino de matizarlas con expresión, con intención, con sentimiento, le permitiría al autor elegir la mejor forma de expresión, “oír” los diálogos antes de los ensayos con actores reales; saber cómo se escucharía su trabajo; determinar notas al margen para declamar de cierta manera que el autor “ya ha oído” antes en modo virtual; incluso proponer para el casting un tipo de voz determinado que el autor ya sabe que se adapta mejor al discurso porque ya lo ha oído virtualmente.


La conversión texto-voz


La conversión de un texto en voz se basa en sintetizar mediante la adecuada combinación de ondas, la voz humana. Para lograrlo existen tres técnicas principales:

· Codificación de onda sonora por concatenación

· Síntesis de difonos

· Síntesis paramétrica

· Síntesis por reglas


La idea de conseguir que una máquina simulara la voz es antigua. Existen relatos de personajes que lo intentaron a principios de milenio como Aurillac (1003) o Tocino de Roger (1250). En el siglo XVIII, Kratzenstein logró en Dinamarca reproducir vocales usando tubos de órgano especiales. Kampelen, por aquel entonces, logró crear una máquina que lograba reproducir palabras completas. En su libro Mechanismus der menschlichen Sprache nebst Beschreibung einer sprechenden Maschine (1791) incluyó varios dibujos para construirla. Un modelo se conserva hoy en día en un museo de Viena.



En 1837, Wheatsone produjo un modelo perfeccionado del de Kampelen y en 1857, Faber ideó la máquina Euphonia que simulaba aceptablemente algunas palabras.

En 1939 se presentó, disponiendo ya de electricidad, el sistema VODER que fue presentado en varias Ferias internacionales.



que mediante sistemas electromécanicos y manejado por operadores expertos que manejaban teclados similares a los de un piano para ir modificando las frecuencias y las entonaciones, conseguían un resultado pobre pero que, para la época, resultaba extraordinario. Puede oírse el resultado de un Voder
aquí yaquí.

En 1961, Kelly de Juan y Kertsman utilizaron por primera vez un ordenador para sintetizar sonidos, lo que abrió las puertas a sistemas eficientes y realmente realistas para simular la voz humana

Al principio, se pensó que la conversión de un texto en voz sería tan sencillo como pre-grabar todas aquellas palabras que se desease emitir y luego, simplemente, concatenarlas en el orden adecuado.





Pronto surgió un primer problema. ¿Cuál era la unidad a considerar? ¿Deberíamos grabar palabras? ¿O sílabas? ¿frases completas? Si la unidad era grande (por ejemplo, una frase) la calidad del mensaje era muy buena con la entonación precisa y la unión entre palabras sonando de manera totalmente natural. Pero entonces era casi imposible tener un programa general porque es imposible pre-grabar los millones y millones de oraciones distintas que cualquier hablante puede generar, añadiendo además las diversas entonaciones posibles. Sería una labor titánica en el tiempo y casi imposible de manejar por la necesidad de memoria y potencia de cálculo requerida.

Si se elegía como unidad la palabra, entonces la flexibilidad aumentaba mucho porque cualquier frase podía emitirse concatenando las palabras adecuadas. Y la capacidad de memoria no era tan elevada porque, en la práctica, con veinte o treinta mil palabras (considerando flexiones verbales y de entonación) es posible mantener una amplia variedad de conversaciones. Pero los especialistas que trabajaban en este campo se dieron cuenta de que este aproximación al problema implicaba el no conseguir un habla natural porque la concatenación de las palabras sonaba artificial ya que era complicado simular las relaciones entre segmentos adyacentes que se producen en la realidad. En la vida real, las fronteras entre las palabras no son claras y existen solapamientos, alofonías, diafonías, semisílabas, modificación del sonido en función de las palabras adyacentes, etc.

Por último, si se elegía como unidad de trabajo la sílaba u otros sonidos básicos (semisílaba, difonema) se llegaba a disponer de total flexibilidad (cualquier palabra o frase, incluso las nuevas o los extranjerismos) puede ser formada mezclando las unidades y era muy fácil generar la base de datos porque con unos pocos miles de semifonemas podía caracterizarse cualquier lengua natural. Pero los problemas de concatenación se hacían aún más importantes para que sonara un discurso natural. Además, los alófonos son elementos abstractos que no existen en la lengua real y por tanto más complicados de tratar por algoritmos.

Puede decirse que todas estas posibilidades están abiertas. Así, en algunos electrodomésticos o algunos vehículos, la unidad es la frase porque el sistema sólo debe expresar unas pocas ideas previamente establecidas:

- Puerta derecha sin cerrar
- Programa de cocción finalizado
- Recoja su ticket


En otras aplicaciones, como por ejemplo, los mensajes flexibles en algunos aeropuertos, se usa como unidad una mezcla de frases (o conjunto de palabras) sueltas:

- El vuelo con destino a + Mallorca + está listo para embarcarse por la puerta número + dos
- Salida del vuelo + A+T+6+7+0+con destino a + Londres+ está listo para embarcar. Por favor diríjanse a la puerta número + seis.


En ocasiones a este sistema se le denomina síntesis específica para un dominio

Y en otras ocasiones se recurre a utilizar sólo fonemas que permiten la generación de cualquier frase de manera totalmente flexible.



Codificación de la onda sonora por concatenación

Como se trata de una técnica que casi siempre es necesaria, explicaremos primeramente la técnica del muestreo o sampling que permite convertir una onda continua (analógica) en un grupo discreto de valores que pueden tratarse digitalmente.

La voz, como cualquier sonido, es una onda continua generalmente compleja:


Podemos leer el valor de la amplitud de esta onda cada cierto tiempo (por ejemplo, cada milisegundo) de manera que tendremos una sucesión de valores discretos (digitales) que puestos unos tras otro simularán con bastante precisión la onda continua original:







En el ejemplo de la gráfica anterior, la onda continua analógica quedaría caracterizada por la serie de valores digital correspondiente a la amplitud en los momentos del muestreo. Y esta serie de números es ya perfectamente computerizable, modificable y calculable.

Es evidente que si el sampleado se hace cada mucho tiempo, la aproximación lograda será mala (pero requerirá circuitos electrónicos sencillos, lentos y baratos), mientras que si se hace a intervalos muy pequeños, la aproximación será excelente (pero la circuitería será rápida, compleja y costosa). El teorema de muestreo o Teorema de Nyquist establece que es posible capturar toda la información de la forma de onda si se utiliza una frecuencia de muestreo del doble de la frecuencia más elevada contenida en la forma de onda. En los sistemas telefónicos la velocidad de muestreo ha sido establecida a 8000 muestras por segundo pero en el muestreo de música es habitual llegar a frecuencia de 44000 por segundo.



Los conversores análogico-digitales (A/D) convierten la onda de entrada continua en una serie de valores concretos sucesivos. Los conversores digital-analógicos toman una serie sucesiva de valores digitales y reconstruyen la onda continua interpolando entre un valor y otro. Como se ve en la siguiente figura, cuantos más datos digitales existan la interpolación y reconstrucción de la onda será más precisa.


En la codificación de la onda sonora, se parte de conjuntos de valores digitales que describen la onda (bien sean fonemas, palabras o frases completas). Este sistema tiene la gran ventaja de que, si la frecuencia de muestreo es suficiente, se conserva la característica original de la voz del locutor y es un procedimiento barato.

La onda sonora se puede muestrear de varias maneras. Las más sencilla es el muestreo lineal que básicamente es la que hemos visto en las figuras anteriores y en donde la onda queda representada por una sucesión de valores finitos.

La cuantificación PCM (Pulse Code Modulation) muestrea la señal como hemos venido explicando y cuantifica cada muestra con un valor binario (por ejemplo, para 8 bits, entre 0 y 255). Entonces transforma este valor en un tren de pulsos proporcional al valor en base a una codificación binaria.



Una vez puestos todos los pulsos en continuidad, a la salida tendremos, por tanto, una señal de pulsos que será fiel reflejo de la onda analógica de entrada


La técnica DPCM (Differential Pulse Code Modulation) es similar pero tiene en cuenta que, en general, la amplitud de la onda no sufre variaciones abruptas sino que se desarrolla de manera bastante continua. En tal caso, basta codificar y memorizar la diferencia entre un valor y el anterior. Entonces, a partir de un único valor inicial se puede ir formando la curva sumando y restando las pequeñas variaciones sobre el anterior valor. Haciéndolo de esta manera los valores son siempre menores y por tanto requieren menos pulsos para codificarlos, necesitándose menos memoria y obteniendo un procesamiento más rápido.

En todos los casos, lo que finalmente tenemos es un corpus vocal extenso. En ciertos casos se usan los logotomas que son palabras ficticias de 3 sílabas de la que se extrae la central. Se logra, así, memorizar un sonido natural dentro de una palabra, no aislado. Por ejemplo, si grabásemos pa sólo, este sonido quedaría menos natural que si lo extraemos de un logotema ficticio como obpate


Síntesis de difonos

Un difono es el sonido que abarca desde la mitad de la realización de un fonema hasta la mitad de la realización del fonema siguiente. Con ello, se consigue incorporar a la unidad de síntesis la transición de sonido entre fonemas para que la posterior concatenación resulte más natural.

La síntesis por difonos usa una base de datos conteniendo todos los difonos que pueden aparecer en un lenguaje. El número de difonos en español es reducido con solo unos 800 elementos pero en alemán se precisan mínimamente 2500.


Síntesis paramétrica

En vez de memorizar miles de datos tal como se hace en el muestreo lineal, podemos emular la onda de voz mezclando sus formantes más importantes, los parámetros que definen la señal. Esto complica el procesado pero, por el contrario, permite simular con precisión las transiciones e interacciones mutuas entre formantes.

Así como en las técnicas anteriores grababan un valor de la onda sin atender a su procedencia ni a su formación, la síntesis paramétrica intenta recrearla mezclando una serie de parámetros que la recreen lo más aproximadamente posible. Así, la onda se recrea mediante una fuente de ondas básicas (sinusoidales) y unos filtros parametrizables que las van modificando hasta lograr la onda deseada. Se entiende que con un solo filtro podemos crear muchas ondas de salida tan sólo afinando los parámetros que afectan al funcionamiento del filtro.


* Los sintetizadores LPC (Linear Predictive Coding)

Se trata de un procedimiento matemático que permite predecir los valores futuros de un sistema lineal partiendo de los valores anteriores. En estos sistemas se hace pasar la onda original a través de un filtro con unos 15 o 20 pasos de alteración. El cálculo matemático permite conocer cómo se alterará la onda tras pasar por estos pasos, de modo que es posible calcular y predecir la salida en función de los parámetros introducidos a cada paso.

En un sistema de síntesis LPC se memorizan primeramente de las unidades a tratar (fonemas, palabras, etc) mediante el muestreo de los sonidos tomados con un micrófono. Entonces, se calculan – para cada uno de ellos- los valores de los parámetros del filtro que lograría reproducir este sonido. Una vez determinados tales parámetros se guardan. Cuando se requiere producir el sonido, se alteran las ondas puras de un generador al que se le envían los parámetros antes calculados y memorizados. Como resultado, se escucha la palabra deseada. Es evidente que el trabajo de preparación es importante pero, una vez hecho, sólo se requiere memorizar estos parámetros (no millones de sonidos) y la circuitería se reduce porque sólo son necesarios el filtro y el generador de ondas madre.

Existen circuitos integrados, preparados para un cierto idioma y tipo de voz, que incluyen el generador, el filtro y los parámetros almacenados en ROM.

* Los sintetizadores por formantes

Se llaman formantes al grupo de armónicos que caracterizan el sonido. Este sistema de sintetización es similar al anterior pero en vez de usar coeficientes que modifican los filtros se usan formantes. Normalmente, parten de una fuente de ondas madre y de tres filtros en serie o en paralelo que generan armónicos que, al combinarse, dan el sonido deseado.
La síntesis por formantes da muchas veces una voz robótica, como las de las películas de miedo, pero permiten una flexibilidad total.



Síntesis por reglas

En este caso han de determinarse una serie de reglas y pasos que, aplicadas sobre la onda de entrada, acaben por modificarla para ofrecer el sonido final deseado.

Estos pasos son, abreviadamente:

· Normalización que consiste en convertir todo el texto de entrada a palabras. Así, si aparecen números se convertirá su grafía a palabra (Son 3 niños -> Son tres niños), si hay acrónimos se convertirán a letras ( F.B.I. -> Efe be i), etc.
· Localización del acento fonético de cada palabra. Esto no es siempre sencillo para un ordenador. Si existe tilde, es evidente y debe seguirse su posición ( canto vs. cantó) pero en ocasiones no es directo y deben aplicarse las reglas de la gramática habituales de la lengua (cuándo se acentúa una palabra llana, una aguda, etc).
· Localización de los signos de puntuación que permitirán alargar los sonidos ligeramente o hacer pausas para poder simular la prosodia de la frase. O bien para dar el tono interrogativo a una pregunta, por ejemplo.
· Conversión de todas las palabras a fonemas. Se usa una tabla de 42 sonidos básicos que permiten descomponer casi cualquier palabra en cualquier idioma. En español las reglas que relacionan sonidos y letras son sencillas pero en inglés son más complicadas porque una misma letra puede tomar sonidos diferentes (cut vs. run).
· Una vez se tiene la larga secuencia de fonemas se adscriben a cada uno la longitud necesaria y la frecuencia necesaria para la prosodia, un poco más agudo o un poco más grave para obtener mayor naturalidad en el habla. Las reglas que determinan cómo deben ser la duración y frecuencia básica se dedujeron experimentalmente analizando miles de fonemas pronunciados con sentido por locutores. Se redujeron finalmente a una decena de ellas para la duración. Algunas para las vocales y otras para las consonantes. También se logró deducir algoritmos que definían reglas para la frecuencia que define la entonación.
· Aplicación de los parámetros que definen estas reglas a los filtros.

Prosodia
Adicionalmente, pueden existir modulos que filtren la voz generada para otorgarle un flujo musical acorde con el idioma, para que no suene robótico, uniforme, artificial. Esta es una tarea complicada que no está aún lograda en la mayoría de los sistemas.



Reconocimiento de voz

El proceso inverso a la síntesis de voz es el reconocimiento de la misma.

Este proceso se suele hacer en dos pasos.


a) Extracción de fonemas: Los fonemas son las unidades lingüísticas y sonoras más pequeñas en que puede dividirse un conjunto fónico. Por ejemplo, la palabra /casa/ , está formada por una serie de cuatro fonemas /c/+/a/+/s/+/a/. Para extraer los fonemas de la voz de entrada, la señal se analiza espectralmente vía transformadas de Fourier. Mediante un micrófono se graba la señal analógica que será compleja del estilo de la mostrada en la figura:



El análisis por desarrollo de Fourier es una técnica matemática que permite descomponer una onda arbitraria compleja en suma de ondas sencillas (sinusoidales).



Así, en la figura podemos ver que a medida que vamos añadiendo ondas sinusoidales de diferente amplitud y diferente frecuencia, la onda final va cambiando hasta convertirse en cuadrada. Del mismo modo, puede convertirse en cualquier otra onda y el proceso inverso es un cálculo matemático dominado y del que existen eficientes algoritmos


b) Conversión de los fonemas en palabras identificables: este proceso se puede realizar con ayuda de métodos topológicos, probabilísticos y de redes neuronales.

DTW

La técnica DTW ( Dynamic Time Warping) o alineamiento temporal dinámico se basa en comparar la onda grabada con todas las plantillas de referencia memorizadas. Para ello, y aprovechando las pausas o zonas de menor amplitud, se va troceando la señal en unidades individuales que luego se comparan con los patrones.

Es evidente que casi nunca coincidirán los espectros patrones con los espectros grabados por lo que se recurre a calcular la distancia mínima en términos matemáticos para determinar qué patrón es el correcto.

Modelo de Markov

Se basan en el concepto de cadenas de Markov que se puede ver como una máquina de estados finitos en la que el estado siguiente depende únicamente del estado actual, y asociado a cada transición entre estados se produce un vector de parámetros. En reconocimiento de voz, las cadenas de Markov se encargan de ajustar los distintos fonemas captados a fonemas de palabras completas previamente establecidas, adquiridos por entrenamiento.

Redes neuronales

Que utiliza redes de nodos que pueden auto aprender en base a reponderar los pesos de cada nodo en el resultado final.



Algunos programas prácticos

En esta
dirección puede utilizarse un programa en red que pronuncia de manera aceptable un texto que se introduce con el teclado.




Otro programa es SODELS que puede encontrarse
aquí.
En este enlace tenemos Text-to-speech que hace un gran trabajo en inglés, incluido un avatar hablante (ver más adelante):


En este
enlace pueden verse otros programas del mismo tipo.

Incluso el visor PDF de Adobe permite “leer” el texto.

Existen también programas profesionales. Uno, Natural Reader, puede verse
aquí.

Avatares


En ocasiones, el programa que convierte el texto a voz se acompaña de un gráfico que simula a un hablante. Se trata normalmente de una cara que mueve los labios a medida que el sonido se emite. Estos avatares pueden ser más o menos elaborados para simular un diálogo real con un ordenador. Con la potencia de los programas actuales, su calidad y realismo mejoran constantemente. En el ejemplo anterior Text-to-Speech podía verse un pequeño avatar.
Este otro programa dispone de otro avatar:



Voki permite generar avatares:


to be continued....


(El capítulo siguiente de esta serie puede leerse en este enlace)












22/6/10

Digitalización de fondos de la Biblioteca nacional austriaca



La Biblioteca Nacional de Austria , una de las mayores colecciones del mundo de libros y documentos de los siglos XVI al XIX, ha firmado un acuerdo por valor de 30 millones de euros con Google para digitalizar los 400.000 volúmenes de ese periodo (unos 120 millones de páginas). De este modo estarán disponibles on-line toda esa ingente cantidad de libros de dominio público. La disponibilidad de los mismos será gratuita y libre. Asimismo, estarán disponibles en Europeana.

Se puede obtener más información
aquí.



21/6/10

Santa Inocencia/Holy Innocence



Santa Inocencia/Holy Innocence, de Joan Fontcuberta, no es un libro digital pero si un libro sobre lo digital. Y concretamente sobre lo falso en la red, el spam, el timo electrónico que impera en Internet donde una abrumadora mayoría de la información que circula no es, como pudiera pensarse, benéfica sino puro tocomocho. Funtecuberta se ha hecho pasar por un ingenuo lector de emails, de esos que pican en los correos que recibimos brindándonos la ocasión de nuestra vida. El autor combina sus aventuras por la red con un viaje a Alabrracín. Se trata de un género epistolar puesto que Fontcuberta “habla” vía e-mail con todo tipo de timadores. Más sobre el autor, aquí.


Glypho



Glypho es un sitio de Internet que permite escribir relatos colaborativos. Una vez que un participante envía una idea como semilla para una historia, los demás lectores pueden contribuir sugiriendo nuevos personajes, sugiriendo un título, la trama que ha de desarrollarse o bien escribiendo totalmente un capítulo de la obra. Es preciso registrarse para participar lo que evita que actúen indeseables (trolls). Puede, desde el mismo portal, invitarse a amigos o personas que uno cree que pueden aportar textos interesantes a las historias.

Bravo!


El portal digital de la revista brasileña BRAVO! hace una referencia a mi obra Trincheras de Mequinenza, así como a otras obras albergadas en el portal de Literatura electrónica del Cervantes Virtual. Una cita que agradezco.

16/6/10

Lingüística computacional (IX)





El capítulo anterior de esta serie puede verse
aquí.


En los capítulos anteriores hemos visto muy sucintamente algunos aspectos teóricos de los formalismos gramaticales. Es ya momento de pasar a la práctica, es decir a estudiar programas concretos que sirven para analizar frases y determinar si están bien escritas o mal escritas, si son o no son válidas gramaticalmente.

Es evidente que si disponemos de un sistema correcto de análisis sintáctico, el escribir literatura sería bastante sencillo, al menos mala literatura. Bastaría programar un generador de frases aleatorias combinando palabras de un diccionario para, después, pasar estas sentencias por el analizador, filtrando sólo aquellas que estuviesen formadas correctamente. Podría pensarse que este sería un trabajo ingente y con pocas posibilidades de éxito pero si contemplamos que un ordenador rápido puede generar y comprobar un millón de oraciones por segundo es bastante probable que en unas horas de funcionamiento diéramos con un texto breve de calidad aparente.

Parsers

Un Parser es un programa informático que toma una frase y comprueba que está bien formada de acuerdo a una serie de reglas. Su origen está en los programas de ordenador y en los compiladores/intérpetes. En este ámbito tan restrictivo en el que sólo hay unos pocos cientos de palabras válidas y unas pocas combinaciones estructurales correctas, los parsers determinan si las instrucciones que el programador ha escrito son correctas antes de pasarlas al compilador o el intérprete que las traducirá al lenguaje máquina. Así, en BASIC, por ejemplo tenemos un lexicón formado por menos de cien palabras clave ( REM, GOTO, PRINT, WRITE, OPEN, CLOSE, IF, DO, NEXT,….). Sólo estás pueden usarse. Pero además hay una serie de reglas de buena formación de la instrucción que se da al ordenador. Por ejemplo, podremos escribir:

FOR x=1 to 6

Pero no podríamos escribir:

FOR x==1 to 6 ni tampoco FOR X=1 tor 6

Un parser analizaría la primera instrucción y la reconocería como correcta. Al analizar la segunda determinaría que su gramática es incorrecta porque hay dos “=” en vez de uno sólo. Y al estudiar la tercera, determinaría también que es falsa porque la palabra “tor” no está en el lexicón de BASIC.

Otras acciones que realizan los parsers de un lenguaje de programación es comprobar que los paréntesis están emparejados dos a dos. Por ejemplo, la sentencia :


X= (a*2)+ ((b+2)/3)

sería correcta, pero la

x=(a*2)+((b+2)/3

no lo sería.


Normalmente, estos programas ejecutan la tarea de análisis en tres fases. En la primera (lexical analysis) separan los componentes- las palabras- de la sentencia. Así, en la sentencia aritmética:


X= 5 + ((3/8)^3)

El parser separaría los componentes reconocibles en el lexicón (que suelen denominarse tokens):

5, +, (,(,3,/,8,),^,3,).

Si en esta fase aparece algún token que no esté en el lexicón, el programa abortaría el análisis dando un mensaje de error.

La segunda fase, llamada sintáctica, verifica que la sentencia es válida de acuerdo a las reglas. Aquí, el parser determinaría que lo es ya que los paréntesis están emparejados (dos de apertura, dos de cierre), etc.

Finalmente, la tercera fase- llamada semántica- es la que ejecuta las acciones necesarias para interpretar la sentencia. En este caso, esta serie de cálculos:

- Resultado=3/8
- Elevar resultado anterior al cubo
- Sumar 5 al resultado anterior
- Visualizar resultado



Dependiendo de cómo se programe el algoritmo, los parsers pueden funcionar de arriba a abajo (top-down parsing) de abajo a arriba (bottom-up parsing), recursivamente hacia abajo, recursivamente hacia la izquierda, etc.

En cualquier caso, por complejo que sea un lenguaje de programación, el lexicón y las reglas de su gramática son siempre infinitamente simples en comparación con las de un lenguaje natural. De ahí que, aunque el concepto de parser sea válido, la dificultad de crear una gramática computable en un idioma humano es enorme. Amén de que el lexicón es mucho más extenso, la cantidad de reglas puede ser enorme, precisar recursividad profunda y precisar deshacer ambigüedades y retóricas, una característica muy propia de los lenguajes humanos que no se da en ningún lenguaje de ordenador. Si una sentencia de ordenador debe escribirse como:


IF (X < 2) then a=(3-X) else a=(3+x)
IF (X <2) ELSE (a=3+x) THEN (a=3-x)
y mucho menos:
IF (X <2) entonces a=(3-X) else a=(3+x)
Sin embargo es esta una situación habitual en las lenguas naturales:

El balón de Juan se perdió
Se perdió el balón de Juan
Perdiose el balón de Juan
Se perdió el esférico de Juan
Se perdió la pelota de Juan



Los parsers que buscan analizar lenguajes naturales parten de alguna de las gramáticas teóricas vistas en capítulos anteriores pero, por lo general, la simplifican para que puedan ser manejables por un algoritmo de manera eficiente. Evidentemente, esta simplificación hace que su rendimiento merme. Es por eso, por ejemplo, que los traductores automáticos logren traducciones que no suelen ser muy buenas. Además, hoy en día, muchos parsers se fundamentan parcialmente en un corpus extensos de texto real que han sido anotados manualmente de manera que, estadísticamente, comparan la frase a analizar con las existentes en la base de datos. Como los computadores son muy rápidos, este cálculo estadístico extenso puede hacerse de manera muy eficiente.



PATR –II

Uno de los primeros programas- ya anticuado pero que se usa mucho para empezar a trabajar en lingüística computacional- fue PATR-II, un parser de lenguaje natural desarrollado por Stuart M. Shieber. Es un programa que usa una gramática propia libre de contexto con reglas y restricciones.

Con su interface tipo MS-DOS de líneas de comandos resulta hoy muy anticuado, pero su sencillez permite entenderlo rápidamente y el que pueda descargarse de la red invita a practicar casi inmediatamente. Además, sirve para cualquier idioma ya que es el usuario el que define el léxico y la gramática a tratar.

PATR-II puede descargarse
aquí para aquellos que estén interesados en comenzar a juguetear en este campo.

PATR-II necesita dos archivos para poder funcionar. Uno, que debe tener extensión “.lex” contiene el léxico. Otro, con extensión “.grm” contiene las reglas de la gramática. Cada usuario puede crear sus lexicones y sus gramáticas propias en función del ámbito que quiera analizar y de la extensión de los textos que quiera estudiar.

Un ejemplo muy sencillo de parte de un archivo de léxico sería, por ejemplo:

;NOMBRES
\w niño
\c N
\f masc-sing


\w niños
\c N
\f masc-plur
\w niña
\c N
\f fem-sing


\w niñas
\c N
\f fem-plur

\w futbolista
\c N
\f mascfem
< conc num> = sing

\w futbolistas
\c N
\f mascfem
< conc num> = plur

\w la
\c DET
\f < num> = sing
< pers> = 3a
< gen> = fem


\w María
\c N
\f < num> = sing
< sem> = anim
< pers> = 3a
< gen> = fem

\w explica
\c V
\f < num> = sing
< sem> = anim
< pers> = 3a
< tip> = trans

\w explican
\c V
\f < num> = plur
< sem> = anim
< pers> = 3a
< tip> = trans

\w historia
\c N
\f < num> = sing
< sem> = inanim
< pers> = 3a


\w un
\c DET
\f < num> = sing
< pers> = 3a

\w amigo
\c Nla jh
\f < num> = sing
< sem> = anim
< pers> = 3a

\w de
\c PREP

\w infancia
\c N
\f < num> = sing
< sem> = inanim
< pers> = 3a

\w a
\c PREP

\w Ana
\c N
\f < num> = sing
< sem> = anim
< pers> = 3a

\w patatas
\c N
\f < num> = plur
< sem> = inanim
< pers> = 3a
< gen> = fem

\w comen
\c V
\f < num> = plur
< sem> = anim
< pers> = 3a

\w padre
\c N
\m < num> = sing
< sem> = anim
< pers> = 3a

\w habla
\c V
\f < num> = sing
< sem> = anim
< pers> = 3a
< tip> =trans

\w con
\c PREP


Obsérvese que cada línea empieza con una simbología que indica al ordenador de qué estamos hablando. Así “\w” significa que empieza una palabra (Word). Evidentemente, puede complicarse mucho más añadiendo más características (serían rasgos en el sentido de lo estudiado en capítulos anteriores).

Por su parte, el fichero de gramática contendría las reglas explicitadas de manera aproximada como vimos en capítulos anteriores. Por ejemplo:

; primero se define la terminología de abreviación de conjuntos de rasgos del léxico mediante la instrucción de PATR “let--- be”.
; y después las reglas.
;ABREVIATURAS
;
; CONDICIONES

Let masc-sing be
< conc num> = sing
< conc gen> = masc

Let masc-plur be
< conc num> = plur
< conc gen> = masc

Let fem-sing be
< conc num> = sing
< conc gen> = fem

Let fem-plur be
< conc num> = plur
< conc gen> = fem

; condiciones de disjunción

Let mascfem be {[conc_gen: fem]
[conc_gen: masc]
}

;
;comienzan las reglas
;
;
RULE O -> SN SV
RULE SN -> {QUAN/DET/QUAN1R} N ADJ
< DET conc> = < N conc>
< QUAN conc> = < N conc>
< QUAN1R conc> = < N conc>
< N conc> = < ADJ conc>

RULE QUAN1R -> QUAN1 DET
< QUAN1 conc> = < DET conc>
< QUAN1R conc> = < QUAN1 conc>

RULE SV-> V SP
O, por ejemplo, otro fichero de gramática podría ser:

Rule S -> NP VP (SubCl)

< NP head agr> = < VP head agr>
< NP head case> = NOM
< S subj> = < NP>
< S pred> = < VP>

Rule NP -> {(Det) (AdjP) N (PrepP)} / PR
< Det head number> = < N head number>
< NP head> = < N head>
< NP head> = < PR head>

Rule Det -> DT / PR
< PR head case> = GEN
< Det head> = < DT head>
< Det head> = < PR head>

Rule VP -> VerbalP (NP / AdjP) (AdvP)
< NP head case> = ACC
< NP head verbal> = -
< VP head> = < VerbalP head>

Rule VerbalP -> V
< V head finite> = +
< VerbalP head> = < V head>

Rule VerbalP -> AuxP V
< V head finite> = -
< VerbalP head> = < AuxP head>

Rule AuxP -> AUX (AuxP_1)
< AuxP head> = < AUX head>

Rule PrepP -> PP NP
< NP head case> = ACC
< PrepP head> = < PP head>

Rule AdjP -> (AV) AJ (AdjP_1)

Rule AdvP -> {AV / PrepP} (AdvP_1)
Rule SubCl -> CJ SUna vez que tenemos ambos ficheros definidos podemos ejecutar PATR que nos muestra una pantalla del tipo (como se ve nada amigable para los estándares de hoy en día)







Podemos, entonces, introducir unas pocas órdenes. Así, EXIT sirve para finalizar la ejecución; LOAD GRAMMAR cargará en memoria el fichero de gramática que queremos usar; LOAD LEXICON cargará el fichero de léxico que vayamos a usar; PARSE comprobará que una sentencia es correcta o no.

Podríamos por ejemplo ordenar:

PARSE la niña explica historia

Y el ordenador respondería con:


o sea, dictamina que es una frase correcta de acuerdo al léxico existente en el fichero lexicón y a las reglas de gramática del fichero de gramática. Si no se cumpliese alguna condición mostraría un mensaje de error.

En la siguiente figura se ve la salida en pantalla como respuesta a analizar la oración, el niño bueno:




O, para un lexicón y una gramática en inglés, obtendríamos:



La mejor forma de entender lingüística computacional es practicando, de modo que animo a todos a descargarse PATR-II, crear un fichero de léxico, otro de reglas gramaticales y comenzar a parsear



El algoritmo CYK y su parser


Otro parser con el que se puede practicar en red es el CYK. En este
enlace puede disfrutarse de una gramática reducida para inglés. Si, como yo he hecho, introduzco la frase I saw a cat on the roof (se pueden ver las reglas de la gramática en la ventana superior):


el programa nos devolverá el análisis en modo gráfico:





El algoritmo CYK (Cocke-Younger-Kasami) determina si una frase es correcta de acuerdo a las reglas de una gramática libre de contexto. Es un algoritmo del tipo bottom-up. La gramática utiliza el formalismo normal de Chomsky que ya vimos en los capítulos teóricos anteriores. El algoritmo considera cada subconjunto posible de combinaciones de las palabras para determinar si cumplen con las reglas. Lo hace por orden de longitud. Primero, frases de una palabra, luego de dos, etc. Si, al final, toda la sentencia cumple con las reglas, es que es válida.






El analizador THERA en español

En la
dirección puede practicarse con un parser en español. Por ejemplo, introduciendo la frase El día es muy soleado el programa nos devuelve:


Este parser analiza sentencias en español y en catalán.





AMOSINE

Es una analizador desarrollado por el Grupo de Estructuras de Datos y Lingüística computacional con un interfaz moderno y fácil uso. Puede accederse a su página
aquí




Link Grammar Parser

Puede encontrarse
aquí pudiéndose descargar o usar en línea.


Escrito en lenguaje C The Link Grammar Parser es un parser sintáctico en ingles. Introduciendo una frase, el sistema la analiza sintácticamente .
Así, para la frase The man who went to London is rich el parser nos devuelve:





Otros programas on-line

En esta
dirección existe otro parser en inglés. Ante la misma frase The man who went to London is rich devuelve la siguiente pantalla:

aquí se puede encontrar un desambiguador morfosintáctico:


Aquí puede obtenerse TreeForm Syntax que es un diagramador en árbol de frases.


PhpSyntaxTree es un programa para diagramar árboles sintácticos que se han escrito en notación lineal. Por ejemplo, la cadena sintáctica

SC [SD Quiénes_i][C' [C animan_j [+Q]][SF [SD t_i'][F'[F t_j' [Phi]][SV [SD t_i][V'[V t_j][SD la vida]]]]]]]

Y el programa nos dibujará el árbol correspondiente:



Por fin, una herramienta para dibujar árboles sintácticos y X-barras es Linguistic Tree Constructor que no analiza nada pero que permite dibujar a mano y con gran calidad dibujos como los que han ilustrado algunos de estos posts. Puede descargarse
aquí.


Hoy en día pueden encontrarse numerosos recursos de lingüística computacional en red gratuitos y, cómo no, muchos también profesionales. En cualquier caso, nada como practicar. Especialmente con aquellos software que nos obligan a crear el lexicón y las reglas gramaticales lo que no sólo nos ayudará a entender los algoritmos sino que nos permitirá comprender mejor los conceptos teóricos.




To be continued…

(El capítulo siguiente de esta serie puede leerse en este enlace)




Biblioteca digital en portugués


La Biblioteca digital de contenidos es un portal interesante que acumula numerosa documentación literaria y artística en portugués. Pueden encontrarse en él desde novelas digitalizadas hasta vídeos, pasando por biografías, pinturas, dibujos o traducciones al portugués (como la de la Divina Comedia). Incluye también una sección de música y obras corales. Está programada con software libre.



15/6/10

Papel y e-book ligados


Textunes es una firma alemana que, entre otras actividades, convierte libros de otras editoriales en e-books, usualmente en formato e-Pub o bien traslada contenidos para ser visualizados en teléfonos móviles. Una particularidad es que un lector puede comprar los títulos en una plataforma para posteriormente trasladar el contenido a otra (por ejemplo de Ipad a Android).

El pasado mes, Textunes presentó
Die Frau die allein ein ganzer Tisch war (La mujer que era una mesa), de Arge Brinsvaard, publicado por la editorial Onkel & Onkel, que contiene el libro en papel de dicha editorial y un e-book Textunes. Un código dentro del libro convencional actúa como contraseña para poder leer el contenido electrónico.




14/6/10

Accounts of the Glass Sky





Accounts of the Glass Sky, de M. Coverley, es un relato digital fragmentado, ya un tanto antiguo (fue publicado a principios de este siglo), escrito en FLASH que combina texto, imágenes y sonido con pequeños recuerdos de la historia de California que encajan unos con otros a través de enlaces fotográficos dispuestos sobre los rascacielos que hoy cubren la ciudad. En cierto modo rezuma nostalgia, un poco de “cualquier tiempo fue mejor”. Es un trabajo intimista. La obra dispone de sonidos que engarzan bien con el tema. La interface es, en cualquier caso, sencilla y los textos son breves por lo que más se acerca a un mini relato poético que a otra cosa. Puede verse aquí.








Curso digital de periodismo científico



La Federación Mundial de Periodistas Científicos en cooperación con la Red de Ciencia y Desarrollo, SciDev.Net. pone a disposición de todos un breve curso digital de periodismo científico al que puede accederse aquí.


Con ocho lecciones que contienen teoría, preguntas y conferencias, es un interesante recurso en línea que merece la pena visitar.









13/6/10

Los viernes

Fuensanta Sanguineri era una joven agraciada e inteligente pero, a sus veinticinco años, permanecía soltera, hecho que causaba asombro entre sus amistades y enojo a sus padres que hacía ya años que deseaban casarla en un matrimonio de provecho.

Los Sanguineri eran oriundos de Padua pero la familia se había trasladado a Venezuela cuando los ejércitos austrohúngaros arrollaron a los italianos en Caporetto. Entonces, Marco Sanguineri, el abuelo de Fuensanta, había reunido a la familia e informado con voz grave y serena que había tomado la decisión de emigrar a América junto a su esposa, su hijo Giuseppe, su nuera Isabella y la hija de ambos, Fuensanta, de apenas seis años de edad. No hubo peros ni preguntas. Dos meses después, arribaron a Maracaibo y, desde entonces, la chiquilla fue educada como venezolana hasta el punto de que su italiano era mediocre. Unos años después, y tras la muerte de Marco, los padres de la chica se mudaron a Caracas donde la fortuna comenzó a sonreír a Giuseppe ya que su negocio de importación de zapatos italianos iba viento en popa.

Fuensanta era adicta a la literatura y a la música. Se la consideraba, dentro de los selectos ambientes de la alta sociedad caraqueña, una intérprete avezada en Schumann y sus relatos y poemas se publicaban con cierta asiduidad en la gaceta del Ateneo Bolívar del que ella y sus padres eran socios desde hacía muchos años. Además, a juicio de los jóvenes que la cortejaban, era una mujer deliciosamente encantadora, de conversación vivaz e interesante, de talle esbelto y elegante, con unos ojos miel que hechizaban y una expresión dulce que atraía como un imán a los pretendientes. Era difícilmente comprensible, por tanto, que no acabara de encontrar a ningún galán que la interesase. Descartados problemas médicos, Isabella había incluso recurrido a las malas artes para lograr verla esposada. Primero, y por consejo de su comadre Antonia Juana de Fuentes, viuda del conde de Martens, contactó con una bruja que tenía buena fama de casamentera. No era ella mujer dada a misterios y supercherías pero pensó que, por intentarlo, no se perdía nada. Tras unos meses de rituales ridículos, compra de hierbas de nombres impronunciables en la botica, y de diluir a escondidas en el té de Fuensanta diversas pócimas, llegó a la conclusión de que la vieja sólo le sacaba la plata sin beneficio alguno. Después, fijó su interés en San Antonio, santo milagrero y casamentero, cuyos dones celestiales no fueron suficientes para doblegar el rechazo de la chica a abandonar la soltería.

- Estás poniéndote en ridículo, madre – le había regañado en más de una ocasión- Ya os lo he dicho. No tengo tiempo ni ganas para el matrimonio. Tengo tantas cosas que leer, tanto que aprender…

En esos momentos, Fuensanta entraba en una especie de letargo melancólico, se quedaba observando el jardín que se extendía al frente de la casa y nadie conseguía arrancarla de sus pensamientos.

Como que la joven había ya llegado a una edad en que los rumores comenzaban a hacerse insoportables, sus padres habían decidido forzar su voluntad por vía de la compasión. Durante meses, inventaron historias sobre la mala marcha de los negocios familiares, sobre la repentina bajada del interés por la moda italiana y por las dificultades que las convulsiones que vivía Europa a mediados de los años treinta estaban originando en el mercado mundial. Las exportaciones europeas, explicaba Giuseppe, se detendrían de un momento a otro a lo que Isabella, fingiendo unas lágrimas que le costaba aflorar, contestaba con un qué va a ser de nosotros. Con estas tretas, ambos lograron que se instalara en la finca un ánimo lánguido, temeroso del futuro y, sobre todo, de cierta recriminación hacia su hija. De tanto en cuanto, y como si surgiera por casualidad, le decían sotto-voce:

- Claro que si te casaras con ese joven, ¿cómo se llama?, Pedro Valerde, sí, eso es… bueno él es de muy buena familia, acaudalada con sus negocios en los Estados Unidos. Con él como esposo, no deberíamos temer por el futuro.

Fuensanta no pareció afectarse por las intrigas de sus progenitores. Intentó continuar con su vida, negándose a cualquier idea de matrimoniar. Perfeccionó su inglés durante un viaje de dos meses a Nueva York y consiguió un empleo como profesora ayudante en el Conservatorio. Asidua de la Biblioteca Nacional, era capaz de leer tres libros completos por semana y en el Ateneo le pidieron que escribiese una columna semanal para un diario de provincias que editaban. Giuseppe e Isabella continuaron, ajenos al desánimo, apelando a los remordimientos de la chica por no ayudar lo suficiente a las necesidades familiares.

Casi habían ya desistido cuando, una tarde, de pronto, Fuensanta se sentó junto a ellos en el salón con una expresión misteriosa, distinta de todas.

- Me he prometido.- soltó de sopetón- No le conocéis. Es norteamericano. Le conocí durante mi viaje a Nueva York…
- ¿Pero cómo no nos la habías dicho antes?- exclamó la madre, que se debatía entre la alegría de ver sus rezos atendidos y la desazón de no saber nada del hombre que pretendía casarse con su niña.
- Su nombre es Peter Wilson. Tiene prósperos negocios de comercio marítimo y ha estado viniendo cada mes a Caracas. Nos hemos visto a solas…

Los padres de Fuensanta fruncieron el ceño. No les gustaba en absoluto saber que su retoño estuviese con un hombre del que no sabían sus intenciones.

- Estad tranquilos. Es un caballero y sus intenciones son sanas. Hablamos, hablamos mucho, y eso fortalece nuestro amor.

Durante una hora, la asaetearon a preguntas de todo tipo y ella, dócil, contestó a todas ellas hasta convencerles de que el señor Wilson era una persona digna de su hija y de ellos mismos, acaudalado para calmar las supuestas penurias económicas por las que atravesaban y con intenciones de formar una familia cristiana. Aquí surgió el primer contratiempo:

- Veréis. Él es cristiano pero no católico. Su padre es un pastor presbiteriano, bastante fanático en sus creencias, y él no sería capaz de renunciar a su fe porque le mataría de un disgusto. De momento, preferimos llevar nuestra relación con discreción para no dar pábulo a habladurías y para preparar con cautela a su familia. Él va a necesitar un tiempo un tanto largo para convencerles por qué no ha elegido a una joven de su Iglesia como todos en su círculo hubieran deseado. Además, nuestra relación, aquí y allá, podría verse como pecaminosa por la reserva que estamos obligados a mantener. Os ruego que lo comprendáis y me apoyéis.

Por supuesto, no lo comprendieron. Querían conocerle ya, verle y dar una aprobación que estimaban obligatoria. Temían sinceramente por su Fuensanta y todo aquello, aunque era una solución a lo que tanto habían suspirado, era tan extraño que no les agradaba en absoluto. Con todo, para cuando la noche era ya cerrada y los grillos cantaban junto a las antorchas que iluminaban el jardín, Fuensanta les había convencido para que fueran pacientes y confiaran en ella. Se verían un día al mes, cuando su paquebote arribaba desde Nueva York. Eso sí, con la presencia de la mulata Berta, la criada que había cuidado a Fuensanta desde que llegaran a América y que para la joven era como una madre. Ya que la chica rechazaba totalmente el que sus padres conocieran aún al novio, al menos, la criada sería un parapeto contra el pecado y lo imprevisto. La joven había aceptado las condiciones.

Desde entonces, cada tercer viernes, ella se engalanaba y se dirigía al encuentro de Peter Wilson. Pasaba el día con él y regresaba feliz al anochecer con Berta de chaperona.

Fuensanta contaba, para tranquilizarles, de lo que habían hecho. Pasear por el centro y tomar un chocolate en la cafetería del parque Los Caobos. O visitar el museo de pintura de la Avenida Boyaca donde ella le había explicado la belleza de los cuadros impresionistas que se cuelgan en sus paredes. Él- dijo- conocía poco de arte y a ella le encantaba abrirle a un nuevo mundo de inspiración que, según le decía, era tan hermoso como su risa. Otras veces, contaba que se sentaba frente a los estanques de la Plaza Bolívar, junto a los dos grandes monolitos, y disfrutaban de los gorriones que jugueteaban entre los parterres de flores y de dos cigüeñas que trasladaban ramitas entre lo alto de las columnas y la islita central. Algún día, contó de cómo echaron migas de pan a las palomas que rodeaban la estatua ecuestre de la plaza Caracas y en ocasiones deambulaban por el mercado de San Jacinto, donde compraban ciruelas que luego comían sentados en el parque de Santa Cruz. O de las tardes de confidencias junto a las Tres Gracias, en esas tardes en que la brisa era dulce y buena y parecía susurrar melodías de bolero a las parejas. Viajaban en el tranvía, pintado de rojo chillón, con sus troles chisporroteando en lo alto, y deban vueltas y vueltas por la ciudad. Incluso, fueron a ver la estatua de Washington para que Peter se sintiera un poco más cerca de su patria.

Un año transcurrió y durante cincuenta y dos viernes, Fuensanta contó de Peter y de sus paseos. A pesar de la insistencia de sus padres, nada dijo de cuándo sería el matrimonio, ni de si Wilson había ya transmitido de manera suave a sus padres sus intenciones de desposar con una católica. Ni que decir tiene que Isabella se encargaba de someter a un tercer grado a Berta tras cada regreso pero esta, que siempre había sido parca en palabras, sólo ratificaba lo contado por la chica.

- Tienes que traerlo a casa y presentárnoslo. Compréndelo. Tu padre y yo estamos preocupados. Tanto secretismo no es normal y los amigos comienzan a murmurar – le espetaba con malos modos su madre más de una tarde.
- Todo a su tiempo, madre. Todo a su tiempo. Es un asunto delicado- contestaba ella.

Llegó la primavera y, con ella, una nueva sorpresa: la noticia de que Fuensanta se marchaba a los Estados Unidos. La Escuela de Artes de Nueva York la había contratado como profesora senior de teoría pianística. Además, así, tendría oportunidad de estar más a menudo con Peter.

Hubo lloros de la madre, malas caras del padre, amenazas de desheredarla, súplicas cuando todo lo demás falló y, finalmente, aceptación de lo que la obcecada chica había ya decidido y aceptado.

- Es tu culpa- había aseverado Giuseppe con irá frente a su mujer-. Tiene tu carácter indomable. Inapropiado para una dama. Esta hija nuestra siempre ha sido intratable y sólo me ha traído disgustos.

El vapor salía a las diez, con la marea alta. Su baúl estaba ya a bordo. Fuensanta se había ya despedido de sus padres. Ellos estaban en la dársena saludándole con la mano en alto. Fingió que había olvidado algo y llamó con un gesto a Berta que se acercó hasta la pasarela por donde la chica subía al paquebote.

- Gracias, Berta. Nunca podré pagarte lo que has hecho por mí. Quiero que des esta carta a mis padres dentro de unos días, cuando yo ya esté muy lejos.
- Así lo haré mi niñita,- contestó la mulata al tiempo que las lágrimas le inundaban los ojos- sabes que has sido una hija para mí. Yo te crié…
- Lo sé- contestó Fuensanta al tiempo que se abrazaba a ella- Lo sé y por eso sabes que no puedo atarme a un hombre, que necesito mi libertad para aprender, para vivir, para ser yo misma.
- Lo sé.
- Toma, aquí está la carta. En ella les explico que Peter nunca ha existido y que les he engañado, con todo mi pesar, para ganar tiempo y lograr un buen empleo que me permita vivir por mí misma. Y ten, acepta este dinero. Lo necesitarás. Es probable que te despidan…

Berta la apretó contra su pecho, estrechando el abrazo.

- Mi hijita. Mi hijita. Te echaré de menos.

La bocina sonó tres veces y un marinero hizo que Fuensanta entrara dentro. Retiraron las amarras y el traqueteo de las máquinas hizo que el barco se deslizada con suavidad hacia la bocana del puerto.