Si fuera a construir un modelo de IBM Watson basado únicamente en los servicios en la nube existentes, ¿qué servicios usaría para los distintos componentes y cómo los integraría?

Es curioso que preguntes … He estado pensando en hacer algo como esto, pero me he centrado en utilizar el software de código abierto existente y los recursos de datos disponibles de forma gratuita, junto con las API en la nube. Con ese fin, algunas de las “cosas” que consideraría comenzar incluyen:

Apache OpenNLP – Procesamiento del lenguaje natural, sería parte del front-end para reconocer preguntas e interpretarlas. También es útil en el backend como parte del proceso de extracción de conocimiento de fuentes de datos textuales.

Apache Stanbol: utiliza OpenNLP y otras herramientas para analizar datos de texto y extraer conceptos semánticamente significativos.

Apache Tika: una biblioteca de análisis para extraer datos de varios formatos de archivo: HTML, PDF, Excel, Powerpoint, etc.

Apache Mahout: biblioteca de aprendizaje automático y minería de datos, diseñada para ser muy escalable al ejecutarse (principalmente) sobre Hadoop.

Apache UIMA: más herramientas para extraer significado de datos no estructurados. Originalmente parte de un producto de IBM y, si lo entiendo correctamente, en realidad es parte del verdadero Watson.

Apache Hadoop – Biblioteca Map / Reduce para escalar la computación en un clúster

Apache Giraph: un motor de procesamiento “Big Graph”. Personalmente sospecho que representar el conocimiento como gráficos es más cercano a cómo funciona el cerebro humano, y que los algoritmos de correspondencia de gráficos serán una gran parte del desarrollo de IA que parecen “más inteligentes”. Giraph es un enfoque escalable para procesar gráficos muy grandes.

Posiblemente algunos de los proyectos de OpenCog.

Biblioteca dANN AI

JGAP – Paquete de algoritmos genéticos de Java

jFuzzyLogic: un motor de lógica difusa para Java.

IBM también ha reconocido públicamente que Watson usa Prolog internamente [1], lo que me parece razonable. Hay una serie de buenas implementaciones de OSS Prolog para elegir, que incluyen:

SWI-Prolog
Ciao Prolog
GNU Prolog

En términos de fuentes de datos, un punto de partida obvio parecería ser Wikipedia y / o DBpedia. También hay OpenCyc, UMBEL, YAGO, etc.

[1]: Watson y Prolog: ¡o de vuelta al futuro! (Bernie Michalik)

Me gusta la respuesta de Phillip. Permítanme agregar que hay varios proyectos de código abierto similares a Watson en curso, y más en camino. Hablo de ellos en otro mensaje de Quora aquí:
La respuesta de Jack Park a ¿Cómo puedo hacer mi propia versión de IBM Watson?