La nueva versión de Android introduce
un sistema de búsqueda por voz mas sofisticado que en versiones
anteriores.
Pero como funciona esta tecnología?
entienden realmente estos dispositivos lo que Preguntamos?.
Como puede responder a preguntas como: ¿Cuando es el día del
padre, o ¿Cual es la
capital de Suecia?
Los Lenguajes naturales son la interfaz
de usuario mas avanzada, imaginen un dispositivo que pueda entender
en principio todo lo que decimos,
seria impresionante no? imaginen que en
vez de programar en 'lenguajes de programación' pudiéramos darles
ordenes a un alto nivel a nuestros dispositivos en espaniol, imaginen
a la abuelita programando!
En este post intentare explicar los
principios de como funcionan los sistemas de Preguntas &
Respuestas..
La diferencia entre Conocimiento e
Información
Vivimos en la era de la información, o
eso dicen, pero ¿que quiere decir exactamente?
para mi quiere decir que tenemos acceso
a gran cantidad de contenidos y al mismo tiempo
que estamos en capacidad de generar
contenidos y compartirlos con otros.
Por ejemplo: compartimos contenido
cuando tweeteamos, cuando opinamos sobre productos en twitter estamos
generando información, generamos información cuando publicamos en
4square que estamos en un restaurante y que nos agrada o detestamos
lo que ordenamos para comer.
Conocimiento es usar grandes cantidades
de información para establecer ,por ejemplo, patrones de
comportamiento, tomar decisiones, predecir sucesos.
generas información cuando escuchas
música y usas el scrobber de last.fm para almacenar las canciones
que has escuchado durante el ultimo anio, conocimiento es cuando
last.fm en base a todas esas canciones te recomienda una canción
nueva que probablemente te agrade.
Ahora mismo vivimos un boom en cuanto a
la generacion de conocimiento, el boom esta tomando lugar por que
existen las plataformas para generar y compartir informacion. Esto
implica dos problemas:
1. Es demasiada información ? como
procesarla?, de allí el éxito de la computación en la nube y
frameworks como hadoop que facilitan a los desarrolladores trabajar
en ambientes distribuidos
2. La información no esta
estructurada, es decir no es una gran Base de datos a la cual podemos
consultar con sql, todo lo que la gente escribe en blogs, foros,
twitter,facebook,reddit es lenguaje natural.. el reto esta en como
extraer información y relaciones entre la información descrita en
estos lenguajes.
Recuperación de Información
Recuperación de información es lo que
ha hecho Google durante todo este tiempo. Formalmente es: dado un
conjunto de palabras clave, retornar una lista de documentos que se
relacionen con las palabras clave.
Este es el paradigma que hemos usado
todo este tiempo, Si es el mejor o no, es una discusión.
Lo que si es cierto, es que queremos
optimizar nuestro tiempo, no queremos perder nuestro tiempo buscando
y leyendo documentos que no nos interesan.
Imagina que quieres comprar un nuevo
teléfono , el teléfono X, probablemente antes de comprarlo quieras
saber:
1.Que opina la gente que ya compro
ese teléfono
2.Comparativas entre el teléfono X
y sus competidores mas cercanos
Lo que tu haces, es generar distintas
búsquedas en Google, leer un foro, probablemente alguien hizo una
pregunta en Yahoo Answers como "cual teléfono debo comprar el X
o el Y?" ..etc.. generas varias búsquedas, lees un poco de los
resultados arrojados.. ¿talvez buscas algo relacionado en twitter?,
y finalmente tomas tu decisión.
Imagina un sistema, que no solo indexe
la información de la web si no que ademas razone sobre ella,que
entienda lo que esta escrito.
Entonces le podrías decir que te haga
un resumen/compendio sobre el teléfono X, y en vez de una lista de
sitios web , te devuelva talvez una lista solo con las opiniones,
comparaciones que es realmente lo que te interesa para tomar tu
desicion...
esto, para mi, es la recuperación de
inforamcion en el futuro...¿por que? : por tiempo (vas a usar menos
tiempo), el resultado que obtengas sera tan preciso como sea tu
pregunta, y si no es precisa sera un overview a gran escala de muchas
fuentes diferentes, así, talvez los resultados que obtengas no sea
información si no, conocimiento, eso es el poder de la información.
Ok... lo anterior fue un poco de
fantasía, talvez en 5? 10? anios?, no lo se.
Aterrizando un poco al 2012 creo que
Google le apunta a ello, tienen la información y quieren procesarla,
de allí apuntarle a los sistemas de preguntas y respuestas.
Sistemas de Pregunta/Respuesta
A un sistema de preguntas y respuestas,
le lanzas una pregunta, el sistema en vez de responderte con una
lista de documentos que se relacionen con las palabras en la
pregunta, te da una respuesta concreta o cercana a la pregunta que
fue ingresada.
¿Esto es magia?.. no, es procesamiento
de lenguaje natural.
Lo que probablemente esta haciendo
Google en estos momentos es generando una ontologia ( una
representación del conocimiento) donde se especifican conceptos y
relaciones entre esos conceptos. Creo que ello hace parte de lo que
ellos llaman
"
TheKnowledge Graph" , si van al sitio web, pueden navegar
entre conceptos (ejemplo:
Italia) y como se relaciona un
concepto con otros (ejemplo:
Italia<->
davinchi).
La que probablemente están haciendo es
algo llamado: OpenInformation Extraction, que consiste en extraer
conceptos y relaciones de texto en lenguaje natural.
Por ejemplo, a partir de un noticia que
diga:
"La esposa de barack
obama, michell, ha participado con la fundación X..."
El sistema de Google extrae un
registro:
( michell obama, participar,
fundacion X)
Obviamente mas relaciones son posibles
aun para este ejemplo juguete que acabo de dar.
Ejemplo:
(michell, esposa de,
obama).. (fundacion X, trabaja con, michell obama)....
A partir de esos registros crea una
ontologia como la 'the knowledge graph' automáticamente.
Obviamente esto requiere muchos
procesos relacionados con inteligencia artificial , tienes que
entrenar sistemas para que reconozcan cosas mas avanzads por ejemplo
que a partir de una relación como :
"X fue asesinado por
Y" se concluye que otra relacion : "X esta
muerto"
se que parece muy sencillo, pero a
nivel computacional es muy muy difícil, por que involucra lo que
llamamos "sentido común"...
Apatir de esta ontologia se puede crear
un sistema que permita responder preguntas, aquí el sistema tiene
que 'entender la pregunta'.. y en base a ello calcular la posible
respuesta
¿Como entender la pregunta y
encontrar la respuesta?
Lamentablemente no contamos con
sistemas muy avanzados con respecto al entendimiento de lenguajes. En
mi humilde opinión, solo son trucos estadísticos que crean la
fantasía que la computadora puede entender lo que decimos.
Supongamos que la pregunta al sistema
es, "donde murio Michael Jackson?".
El componete del sistema encargado de
procesarla se fija en varias cosas:
1,Encontrar una partícula que le
indique que tipo de pregunta es y que es lo que esta buscando.
en este caso "Donde" le
indica que lo que esta buscando como respuesta es una "locación",
lo que sea la respuesta debe de ser en su base de conocimientos una
"locación"..
2.Encontrar el tema de la pregunta,
tiene que descartar las palabras menos relevantes, y encontrar la mas
predominante, en este caso el tema es "michael Jackson".
3.Usar las palabras del contexto para
encontrar posibles relaciones. en este caso podría ser la palabra
"morir"..
A partir de ello el sistema sabe que
va a buscar algo en la ontologia que tiene que ver con "Michael
Jackson", que lo que va a retornar como respuesta tiene que ser
una locación en la ontologia, y ademas que la relación entre ese
lugar y "Michael Jackson" tiene que ver con:
"muerte","morir"..
Peros...
Pero como saber si todas las relaciones
que se extraen son correctas? que tal si alguien escribe: "Michael
Jackson murio en Bogota, Colombia..."" entonces la Base
de conocimientos es errónea..y las respuestas serán erradas..
Lo que ocurre en este tipo de casos es
que muy probablemente Google descarta las relaciones encontradas en
ciertos sitios, o usa por ejemplo el sistema de búsquedas actual
lanzando una búsqueda como "michael jackson muere en bogota"
si esta consulta arroja menos de cierta cantidad de resultados
entonces la considera como una relación falsa.
Una pregunta con la partícula "Donde"
es fácil de responder, buscas un lugar, pero ¿que pasa con: "Como"
o "Por que"?..
estas preguntas requieren un
razonamiento mas avanzado, y no creo que tengamos pronto un sistema
que pueda resolverlas.
Finalmente..
El tema de lenguaje natural es algo
filosófico al momento:) lo que si es seguro es que companias como
Google y Apple le apuesten fuertemente a iniciativas en esta
dirección, y en mi opinión el siguiente gran salto en interfaces de
usuario va relacionado con poder entender los lenguajes naturales y
poder generar frases en estos lenguajes tal que estas frases suenen
lo menos robóticas posibles. (alguien ha escuchado a Hatsune Miku?
<3 )
Espero este articulo les de una idea de
como funcionan ciertos servicios, los cuales probablemente se van a
volver muy sofisticados en los próximos anios.
@dav009