“I for one welcome our new computer overlords” (Ken Jennings)

Llega el fin de año y con él las listas de “Lo mejor de…”. Si me preguntaran sobre cuál fue el mayor evento de 2011 en el ámbito de la Tercera Cultura respondería, casi sin dudar, que el triunfo de la Lingüística Computacional. Todo partió bien temprano, cuando acababa el año pasado, con el lanzamiento del Culturomics de Google, ese corpus de 500 mil millones de palabras que permite determinar tendencias/palabras en los libros publicados desde 1500 hasta nuestros días, y que Scott Sadowsky criticó en estas páginas con muy buenos argumentos. Luego fue el boom de los análisis de Lingüística Computacional de los comportamientos en redes sociales, que ya se había empezado a desarrollar con el Pulse of the Nation, la herramienta que llevaba a cabo análisis de sentimientos de los twiteos en los Estados Unidos. Ahora mismo, lo que la lleva es Siri, la aplicación del iPhone que utiliza Procesamiento del Lenguaje Natural (PLN) para responder a preguntas orales de los usuarios sobre una diversidad enorme de temas, como en el “chiste” que presentamos a continuación (y que nos recuerda nuestro primer episodio del Podcast).

Sin embargo, quien se lleva las palmas y los laureles es Watson. Watson es un supercomputador creado por IBM para concursar en el juego Jeopardy!, un programa –quizá el más famoso y popular– de televisión de concursos norteamericano de preguntas y respuestas (similar a Quién Quiere Ser Millonario o El Tiempo es Oro <caída de carnet ON> o Un Millón para el Mejor <caída de carnet verde ON>). Watson fue puesto a prueba (en febrero 2011) en una competencia con probablemente los dos mejores concursantes de Jeopardy! de la historia Brad Rutter (el mayor ganador en dinero hasta la fecha) y Ken Jennings (que ostenta el récord de 75 días consecutivos como vencedor), a ambos los derrotó.

Para más detalles del desarrollo del juego, les pido que se tomen algunos minutos y observen con detención el siguiente video.

La pregunta del millón es cómo lo hace. Obviamente hay dos elementos clave para que Watson sea tan efectivo: hardware y software. No me voy a detener en el hardware para más que para indicar que esta supercomputadora tiene 16 Terabytes de RAM siendo capaz de procesar 500 Gigabytes por segundo para revisar de una patá 200 millones de páginas que tiene almacenadas en su disco duro (y que incluye enciclopedias, diccionarios, tesoros, noticias y obras literarias).

Lo realmente interesante aquí es, en mi opinión, el software. Veamos un diagrama de flujo de cómo opera el sistema, llamado DeepQA (Deep Question – Answer, Sistema de Preguntas – Respuestas Profundo, como homenaje a Deep Blue, el computador que venció al campeón de ajedrez Gary Kasparov en 1997).

Lo primero que hace Watson es procesar lingüísticamente la pregunta que le están haciendo. Para ello, de acuerdo con Lally & Fodor (2011), parsea la pregunta, esto es, analiza sintácticamente la oración que se le presenta. Veamos un ejemplo de parseo con el programa de parseo en inglés que creo es el mejor que hay disponible en línea, el Stanford Parser (SP). Si uno inserta en el SP una oración como “The horse raced past the barn fell” (entre paréntesis, una de las oraciones favoritas de los psicolingüistas), llega a un análisis como el siguiente:

(ROOT

(S

(NP (DT The) (NN horse))

(VP (VBD raced)

(SBAR

(S

(NP (JJ past) (DT the) (NN barn))

(VP (VBD fell)))))

(. .)))

O en una interfaz más amigable:

Por ejemplo, si la pregunta que recibe Watson es como la siguiente:

POETS & POETRY: He was a bank clerk in the Yukon before he published “Songs of a Sourdough” in 1907

Al realizar el parseo llega a una estructura como esta:

lemma(1, “he”).

partOfSpeech(1,pronoun).

lemma(2, “publish”).

partOfSpeech(2,verb).

lemma(3, “Songs of a Sourdough”).

partOfSpeech(3,noun).

subject(2,1).

object(2,3).

La gracia del parseo es que cuando se lleva a cabo este proceso el análisis va más allá de las palabras, a establecer una jerarquía (quién hace qué a quién dónde cuándo cómo porqué para qué…), donde Watson luego irá a buscar QUÉ es lo que realmente le están preguntando.

Para ello el DeepQA debe determinar el tópico de la pregunta, en el caso del “bank clerk” será ¿Quién es el autor de “Songs of a Sourdough”?

Watson fue entrenado para contestar miles de tipos de preguntas de ese y otros muchísmos estilos. De hecho, Ferrucci et als (2010) indican que revisaron 20.000 preguntas de Jeopardy! en todos sus años de juego, seleccionadas al azar, para determinar qué tipo de preguntas existían. Descubrieron que había cientos de preguntas de diferentes  características a las que denominaron lexical answer type (LAT). Les mostramos un detalle de las más frecuentes:

En el caso anterior Watson estipula que se trata de la pregunta por un “he” y que ese “he” es un autor, por lo que accede a un sinnúmero de rutinas como esta:

authorOf(Author,Composition) :-

createVerb(Verb),

subject(Verb,Author),

author(Author),

object(Verb,Composition),

composition(Composition).

Luego revisa en sus bases de datos para encontrar estructuras lingüísticas que tengan esta forma y establecer cuál es el “he” por el que le están preguntando. Este “he” puede estar fraseado de muchas maneras diferentes, como por ejemplo:

Songs of a Sourdough by Robert W. Service

Por lo que, en su proceso de hallar la respuesta Watson corre decenas de consultas en paralelo. Para hallar una construcción como la otra, debería invocar la siguiente línea de código (escrita, como las otras similares, en Prolog):

authorOf(Author,Composition) :-

composition(Composition),

argument(Composition,Preposition),

lemma(Preposition, “by”),

objectOfPreposition(Preposition,Author),

author(Author).

Para hacer esto, los creadores de DeepQA han tenido que analizar el lote de 20.000 preguntas y descomponerlo de modos como el siguiente:

Category: Decode the Postal Codes

Verbal instruction from host: We’re going to give you

a word comprising two postal abbreviations; you

have to identify the states.

Clue: Vain

Answer: Virginia and Indiana

Finalmente, antes de generar la respuesta, Watson toma en consideración los resultados de sus búsquedas y establece un nivel de confianza sobre las mismas (una estimación de dos conceptos importantísimos en Lingüística Computacional: precision y recall), como muestra la siguiente imagen:

Para los momentos más críticos del juego del Jeopardy! -en que un error se paga caro-, este proceso permite a Watson evitar responder si no está seguro.

La decisión de crear a Watson como un sistema de QA para este juego se debió fundamentalmente a que:

“Aproximadamente hace tres años, IBM Research fue en busca de un reto de investigación para competir con el interés científico y popular de Deep Blue, el equipo campeón de ajedrez, que también tuviera una relevancia clara para los intereses comerciales de IBM” (Ferrucci et al, 2009:59).

Los autores añaden que:

“Aunque creemos que el desafío Jeopardy! es una tarea extraordinariamente exigente que en gran medida hará avanzar en el campo, somos conscientes de que este desafío por sí solo no tiene en cuenta todos los aspectos de control de calidad y no dispone de todos los medios dar vuelta la página en el desafío de control de calidad de la forma en que Deep Blue puede haberlo sido para el ajedrez”.

La dificultad de Jeopardy! como desafío para DeepQA, según Ferrucci et als (2009:17).