Una base de datos altamente indexada mantenida por Wolfram Alpha es un asesino para evitar la latencia de Internet y organizar los documentos en una estructura específica que mejor se adapte al dominio de preguntas de Wolfram Alpha.
Sin embargo, es muy interesante observar cómo Wolfram Alpha hizo todo el proceso. No soy un ingeniero trabajando allí, pero puedo resumir (groseramente) las técnicas básicas que emplearon para que esto suceda.
Cualquier aplicación de respuesta a preguntas de hecho tiene que seguir tres pasos: procesamiento de preguntas, recuperación de pasajes y procesamiento de respuestas.
1. Procesamiento de preguntas
Para ser honesto, esta es la parte más complicada y que consume más tiempo, ya que tendrá que incorporar múltiples técnicas de PNL para hacer esto, por ejemplo: etiquetado de parte del discurso, análisis sintáctico, etiquetado de roles semántico, reconocimiento de entidades con nombre y recuperación de información. Esta es parte de la razón por la cual Wolfram Alpha posee una red de computadoras altamente configuradas para manejar esta parte. Otra parte de computación intensiva podría ser la computación matemática avanzada / representación gráfica.
Hay dos pequeños pasos en el procesamiento de preguntas. El primero es la formulación de consultas, y el segundo es la clasificación de preguntas.
La formulación de consultas es similar a un preproceso de la pregunta. Haces los trucos normales, sacando palabras vacías (palabras que son muy frecuentes pero que apenas tienen un significado como “a, en realidad, finalmente, también …”), pero quieres mantener las palabras de pregunta, porque contienen significado, como cuando- > hora, donde-> ubicación, quién-> persona.
Dependiendo del tamaño de su base de datos (espacio de documentos), es posible que desee aplicar una técnica llamada expansión de consulta, reemplazando algunas palabras con sinónimos o variantes morfológicas. Un diccionario de sinónimos podría ayudar, como WordNet. Por lo tanto, una pregunta de consulta se puede expandir a cinco o más y luego ejecutarlas todas en el proceso posterior.
Otra técnica menos utilizada pero aún común es la reformulación de consultas. Cambia ciertas preguntas como “¿Dónde está San Francisco” a “San Francisco se encuentra en …” o “¿quién inventó el Ford Mustang?” a “Ford Mustang fue inventado por …”. A un nivel más abstracto, las reglas se ven como ” wh-word hizo un verbo B -> … A verbo + ed B”.
En general, hacer una clasificación de preguntas es el mejor enfoque, ya que utiliza la estructura de su documento. Por ejemplo, al usar el etiquetador NER (con algoritmo CRF o HMM), puede etiquetar partes específicas de la pregunta y convertir una pregunta como “¿Quién es Stalin?” en “quien es la PERSONA”. Entonces, su aplicación sabe que esta es la pregunta sobre PERSONA, o mejor, usando reglas de expresiones regulares escritas a mano predefinidas como “who {is | was | are | were} PERSON”, sabe que es una pregunta sobre BIOGRAFÍA (Hovy et al, 2002).
¿Recuerdas que Wolfram Alpha mantiene su propia base de datos? Es porque cuando puede etiquetar documentos de acuerdo con su dominio específico, como “MATH” o “ASTROPHYSICS”. Obviamente será más complicado que esto, pero en resumen, esta es la teoría.
Puede usar el corpus etiquetado a mano de Li y Roth (2002, 2005) para entrenar algoritmos de aprendizaje automático para clasificar esas preguntas en diferentes categorías.
Clasificadores de preguntas de aprendizaje: El papel de la información semántica por Li y Roth: http://l2r.cs.uiuc.edu/~danr/Pap …
2. Recuperación del pasaje
Ejecute su pregunta procesada (consulta) en un motor de recuperación de información general o motor de búsqueda web, obtendrá una lista de documentos. Como Daniel Jurafsky señaló suavemente en su libro Procesamiento del habla y el lenguaje :
Aunque el conjunto de documentos generalmente se clasifica por relevancia, el documento mejor clasificado probablemente no sea la respuesta a la pregunta. Esto se debe a que los documentos no son una unidad apropiada para clasificar con respecto a las chicas del sistema de control de calidad.
Para los desarrolladores de aplicaciones normales, es muy difícil desarrollar / mantener una gran base de datos indexada , en general la recuperación de pasajes con una base de datos separada es innecesaria. Puede reemplazar fácilmente este proceso con una base de datos de conocimiento como Freebase. Freebase proporcionará las entradas correctas con su algoritmo de clasificación.
Una técnica más general para la base de datos separada es ejecutar el etiquetado NER en los documentos y contar varias cosas como: el número de entidades nombradas del tipo correcto en el pasaje, el número de palabras clave de pregunta en el pasaje, la proximidad de las palabras clave del original consulta entre sí, o superposición de N-gram entre pasaje y la pregunta.
Dudo que Wolfram Alpha haya almacenado documentos (imagínense documentos de Wikipedia) en su base de datos. La estructura de su base de datos debería ser muy similar a Freebase, con fragmentos de información altamente estructurada. Es mucho más eficiente almacenar conocimiento de esta manera y ser recuperado en este proceso, que procesar documentos cada vez para cada búsqueda.
Freebase : http://www.freebase.com/
Respuesta a preguntas de dominio abierto de grandes colecciones de texto :
http://www.mitpressjournals.org/ …
Cosecha de N-gramos :
http://trec.nist.gov/pubs/trec10 …
3. Procesamiento de respuestas
Esta parte nuevamente es complicada. En una circunstancia normal (tradicional), desea responder lo más breve posible. Por ejemplo: “¿Quién es el primer ministro de la India?” -> “Narendra Modi”.
Si usa Freebase en la segunda parte, esta parte es simple, solo proporcione la respuesta al usuario. Freebase devuelve datos en formato JSON y normalmente se divide en trozos y bits. Es muy probable que la respuesta seleccionada por Freebase ya sea la respuesta correcta.
Las técnicas normales en esta parte son la extracción de patrones de tipo respuesta y el mosaico de N-gram. El primero usa el tipo de clasificación de preguntas como etiqueta NER y busca la misma etiqueta en el pasaje. Por ejemplo:
“¿Quién es el primer ministro de la India?”
Posible pasaje: “Narendra Damodardas Modi es el 15º y actual Primer Ministro de la India”.
Si nada sale mal y todo funciona a la perfección, “Narendra Damodardas Modi” se etiquetará como HUMANO, y si su tipo de clasificación de preguntas también es HUMANO, tiene un ganador.
Por cierto, esta es la técnica que Google está utilizando para resumir los párrafos de wikipedia. Observe que en los últimos años, ¿Google comienza a emplear ventanas pequeñas que intentan resumir el documento por usted? Este es un enfoque bastante general. Busque “reina de Inglaterra” y marque la pequeña ventana a la derecha del resultado de su búsqueda. Verá un extracto como “Isabel II es la monarca constitucional de dieciséis reinos de la Comunidad de Naciones de 53 miembros …”
Sin embargo, nuevamente, Wolfram Alpha realmente no empleó este enfoque normal. Lo que hacen es más como una coincidencia de asociación de patrones. Wolfram Alpha se especializa en responder preguntas de “DEFINICIÓN”, un tipo especial que los algoritmos de respuesta de Factoid no manejan bien. En resumen, la asociación de patrones asocia patrones asociados, como “NOMBRE DE PERSONA” a “AÑO DE NACIMIENTO”. En el caso de Wolfram Alpha, asocian un patrón a uno o múltiples patrones para obtener toda la información relevante para el usuario.
Conclusión:
Wolfram Alpha se enorgullece de tener más de 15 millones de líneas de código en Mathematica. Es importante decir que Mathematica es bastante alto, mucho más alto que Java / C / Python. Es posible adivinar cómo se hace, pero en realidad, solo los ingenieros de adentro conocen el secreto real.