¿Cómo se hizo Wolfram Alpha? ¿Como funciona? ¿Cómo calcula el conocimiento no estructurado?

La respuesta simple es que no computa en datos no estructurados. Wolfram Alpha no rastrea la web en busca de información como lo hacen otros motores de búsqueda. Mantiene su propia base de datos separada que consta de datos ingresados ​​y etiquetados manualmente (¡sí!) Con metainformación para formar ontologías, o de datos ya estructurados (que luego deben reestructurarse en un formato compatible). Sus datos están altamente estructurados, lo que hace posible realizar consultas y búsquedas complejas, y combina esto con un buen motor de PNL y tendrá un producto sorprendente, casi mágico. Si está interesado, incluso puede ofrecerse como voluntario para convertirse en un curador de datos (Wolfram | Alpha Volunteer Central). Para obtener más información, consulte las Preguntas frecuentes.

Ah, y ¿sabes esa secuencia de animación realmente genial que se ejecuta cuando Wolfram | Alpha está ocupado?

Son simulaciones de un autómata celular, del cual el juego de la vida de Conway es el más popular. Stephen Wolfram fue pionero en este campo y es autor de A New Kind of Science (NKS). Wolfram | Alpha, de hecho, hace un uso conceptual y práctico de la idea de NKS de generar un comportamiento rico y complejo a partir de reglas subyacentes simples. En muchos sentidos, Wolfram | Alpha es la primera “aplicación asesina” para NKS. (ver la publicación del blog de Stephen Wolfram)

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.

Fui parte del equipo de creación de prototipos que comenzó todo el proyecto de WolframAlpha desde el principio (como curiosidad, el nombre interno de WolframAlpha era “Calcular” o “Calcular Wolfram”). Éramos solo unas 5 personas, pero el equipo inicial pronto creció a unas 10.

En estos días, el equipo de WolframAlpha está en los cientos. WolframAlpha está escrito en Wolfram Language (anteriormente Mathematica), que ya es muy impresionante y una sorpresa para algunos, pero no para otros, dado el gran poder expresivo y computacional del Wolfram Language.

No hay mejor persona para explicar qué es WolframAlpha que el propio Stephen Wolfram en una publicación de blog que escribió hace unos años para explicar las diferencias entre WolframAlpha y un motor de búsqueda normal: Jeopardy, IBM y Wolfram | Alpha

Y tiene varios otros que explican diferentes partes y perspectivas de WolframAlpha, por ejemplo, Superar la estupidez artificial

No sé cómo se hace Wolfram Alpha. Pero sí sé que los científicos no pueden definir la inteligencia. Por lo tanto, tampoco saben cómo se puede implementar la inteligencia artificialmente.

Muchos intentos de los científicos, incluido Wolfram Alpha, están “inspirados en la naturaleza”, en lugar de basarse en la inteligencia. Y puedo asegurarle que cualquier intento “inspirado en la naturaleza” fracasará si no se comprenden los fundamentos.

Muchas personas han tratado de volar como un pájaro. “Inspirados por la naturaleza”, se cubrieron de plumas, se ataron las alas a los brazos y saltaron de las torres. Vea los dos ejemplos en YouTube a continuación.

Los hermanos Wright fueron los que entendieron mejor la esencia del vuelo. La esencia del vuelo no está en los intentos “inspirados en la naturaleza”, como plumas y alas batientes, sino que la esencia del vuelo es: levantar, pesar, empujar y arrastrar.

Del mismo modo, la inteligencia no está en intentos “inspirados por la naturaleza”, como Wolfram Alpha o Redes Neuronales Artificiales, sino que la esencia de la inteligencia está en el uso de una fuente natural de inteligencia .

Estoy desarrollando un enfoque fundamental para la IA / tecnología del conocimiento, basado en las leyes naturales de la inteligencia en gramática. Aunque en su infancia, ya tiene resultados que ninguna técnica de IA puede ofrecer: la integración de la inteligencia y el lenguaje natural. Es: la única tecnología de conocimiento integrada del mundo.

Para ilustrar los intentos “inspirados en la naturaleza”: