¿Se te antoja un vino?
WineBot
Experto en Vinos
Descarga para Windows

Características

image

Recomendaciones

Un sistema experto con el cual podras obtener recomendaciones a partir de tus gustos sobre comida, aromas, sabores, e incluso tomando en cuenta para que ocasión requieres conocer un vino. Incluso si no sabes con precisión alguna, o en su caso, niguna de las variables, puedes indicar a WineBot, que no conoces tal o tales variables, y el hará su mejor esfuerzo para encontrar el vino perfecto para ti. Si aun no has incursionado mucho, sobre el consumo de este tipo de bebida con WineBot puedes aprender acerca de tus gustos a la hora de degustar esta bebida, mediante una interacción cotidiana puedes ir conociendo tus gustos, para posteriormente poder hacer solicitudes de recomendación directas

image

Pedidos Directos

Si ya conoces sobre vinos, o has ido aprendiendo a lo largo del tiempo en tu interacción cotidiana con WineBot, puedes indicarle algun tipo de vino sobre el que quieras que te recomiende directamente, antes de hacer una recomendación precisa, WineBot desplegara información sobre las caracteristicas que posee el vino que has pedido, para que ocasiones y con que platillos puedes disfrutarlo mejor, y hara una pregunta de confirmación para saber si realmente es el tipo de vino que necesitas, en caso de que no sea lo que esperabas, WineBot te guiara de acuerdo a tus preferencias. Dentro del tipo de vino que encuentre acorde a tus gustos, te hara recomendación de vinos sobre uvas pertenecientes a esa clase, 3 vinos por cada tipo de uva.

Habla o escribe

WineBot tiene la capacidad de entenderte tanto de forma oral como escrita. Para poder hablarle a WineBot debes pulsar el boton del microfono con dos clics rapido, el microfono se pondra en verde y tendras 10 segundos para indicarle tus preferencias sobre tipos de comida, aromas, sabores, ocasiones o realizar la petición directa de un tipo de vino, WineBot procesara tu información y te lanzara su mejor recomendación para ti. Para interactuar de forma escrita con WineBot, debes utilizar el recuadro de escritura colocando a palabra "Inicio", con ello WineBot, desplegara información de forma escrita, con indicaciones precisas de que información debes de darle para conocer tus preferencias, o hacer una sugerencia directa.

Descripción

En este proyecto se realiza la construcción de un sistema experto capaz de dar recomendaciones acerca de vinos tomando en cuenta la ocasión para la que se va a utilizar, con que tipo de comida se planea acompañar y los gustos del usuario en cuanto a aromas y sabores. Sin embargo, WineBot también puede recibir instrucciones directas acerca de algún tipo de vino en específico. Esto mediante una comunicación en lenguaje español de forma natural teniendo la posibilidad de interactuar mediante medios visuales con entrada de información escrita, así como interactuar de forma hablada emitiendo una única orden completa. El sistema experto WineBot puede ser un gran aliado para adentrarte y empezar a conocer en torno a tus preferencias a la hora de elegir un vino, pero si ya tienes experiencia en el área, con WineBot podrás consultar facilmente nuevos tipos de vino. Realizando así una implementación utilizando el lenguaje Python el cual nos ayuda a crear la interfaz de usuario en la que se procura mantener un despliegue de información claro para poder guiar correctamente a través del camino hacia la mejor recomendación. También se hizo uso de PROLOG, que nos permite contener la información y establecer las relaciones necesarias para optimizar el proceso de búsqueda conforme a lo indicado por el usuario. Todo ello se conjuntó para poder brindar una versión ejecutable capaz de funcionar en cualquier computadora con sistema operativo Windows actualizado sin necesidad de hacer una instalación mayor o ejecutar a través de un interprete. Es posible obtener el código total del proyecto en: GitHub - WineBot. Y el ejecutable en: Descargar - WineBot.

Objetivos

1. Consulta amigable

Construir un sistema experto con tiempos cortos de ejecución y sin requerimientos de instalación rigurosos, además de indicaciones claras y precisas sobre la información necesaria para que el sistema pueda hacer una buena recomendación

2. Variedad de opciones

Tener la capacidad de capturar las preferencias necesarias que permitan tener como resultado una recomendación efectiva y de agrado para el usuario sin la necesidad de ingresar una cantidad de información excesiva. Manteniendo en cada una de las variables tomadas en cuenta una gran variedad de opciones tratando de cubrir los gustos y contextos de la mayoría de los usuarios. Brindando más de una forma de interacción con el sistema.

3. De cero al punto de compra

Mediante cualquiera de los métodos de funcionamiento, es decir oral o escrito, tener la capacidad de captar la información relevante brindada por el usuario para poder recomendar nueve opciones de compra provenientes de tres tipos de uva que integran una clase de vino, pre-seleccionadas con rigurosidad y tomando en cuenta el conocimiento registrado teoricamente.

¿Qué es un sistema experto?

Buscando una definición general y resumida podemos establecer que un sistema experto es un campo de la inteligencia artificial que pretende simular el comportamiento y el juicio de un ser humano junto con conocimientos expertos de un tema. Adquiere conocimientos relevantes de su base de conocimientos y los interpreta según el problema del usuario. Los datos en la base de conocimiento son esencialmente agregados por humanos que son expertos en un dominio particular. Sin embargo, los no expertos utilizan el software para obtener información. Se utiliza en diversas áreas de diagnóstico médico, contabilidad, codificación, juegos y más. Inicialmente fueron introducidos por investigadores de la Universidad de Stanford y fue desarrollado para resolver problemas complejos en un dominio particular.



Arquitectura de sistemas expertos

  • Base de conocimientos: la base de conocimientos en un sistema experto representa hechos y reglas. Contiene conocimientos en dominios específicos junto con reglas para resolver problemas y formar procedimientos que son relevantes para el dominio.
  • Motor de inferencia: La función más básica del motor de inferencia es adquirir datos relevantes de la base de conocimientos, interpretarlos y encontrar una solución según el problema del usuario. Los motores de inferencia también tienen capacidades explicativas y de depuración.
  • Módulo de adquisición de conocimientos y aprendizaje: este componente funciona para permitir a los sistemas expertos adquirir más datos de diversas fuentes y almacenarlos en la base de conocimientos.
  • Interfaz de usuario: este componente es esencial para que un usuario no experto interactúe con el sistema experto y encuentre soluciones.
  • Módulo de explicación: como sugiere el nombre, este módulo ayuda a proporcionar al usuario una explicación de la conclusión alcanzada.


Estrategias utilizadas por el motor de inferencia

Encadenamiento hacia adelante

Siguiendo una cadena de condiciones y derivaciones, el sistema experto deduce el resultado después de considerar todos los hechos y reglas. Luego, los clasifica antes de llegar a una conclusión en términos de la solución adecuada.

Encadenamiento hacia atrás

Dependiendo de lo que ya haya ocurrido, el motor de inferencia intenta identificar las condiciones que podrían haber ocurrido en el pasado para activar el resultado final. Esta estrategia se usa para encontrar la causa o la razón detrás de algo que sucede.


Pasos para desarrollar un sistema experto


Ejemplos de sistemas expertos


  • MYCIN: Este fue uno de los primeros sistemas expertos que se basaba en el encadenamiento hacia atrás. Tiene la capacidad de identificar varias bacterias que causan infecciones graves. También es capaz de recomendar medicamentos en función del peso de una persona.
  • DENDRAL: Este era un sistema experto basado en inteligencia artificial que se utiliza esencialmente para análisis químicos. Utiliza los datos espectrográficos de una sustancia para predecir su estructura molecular.
  • R1 / XCON: Este tenía la capacidad de seleccionar software específico para generar un sistema informático según las preferencias del usuario.
  • PXDES: Este sistema podría determinar fácilmente el tipo y el grado de cáncer de pulmón en pacientes basándose en datos limitados.
  • CaDet: Este es un sistema de apoyo clínico que identifica el cáncer en etapas tempranas.
  • CaDet: Este es también un sistema de apoyo clínico que es capaz de sugerir una variedad de enfermedades basándose solo en los hallazgos del médico.

Funcionamiento

Diseño

Todo el código esta contenido dentro de un script de Python, sin embago dentro del mismo se establece conexión con el interprete SWI-PROLOG, para poder realizar consultas a nuestra base de conocimiento que esta en un archivo con extensión ".pl", y que nos permitio utilizar las ventajas de crear relaciones lógicas con nuestra información. En la base de conocimiento se alojan predicados con los cuales se establecen relaciones de los tipos de uva existentes, dentro de cada clase de vino considerada en la construcción del sistema; añadido a ello se establece la relación de una descripción sobre las características generales de cada tipo de uva que se despliegan al momento de que es seleccionado dicho tipo de uva como recomendación; además, se cuenta con un predicado que relaciona una variedad de tipos de comida, y los maridajes que cada tipo de vino; lo mismo pasa para los aromas que se desprenden en la mayoria de la uvas respecto a su tipo de vino, y un predicado para relacionar los sabores que acompañan; añadido a ello se mantiene una categoría que clasifica los tipos de vino de acuerdo a la ocasión en los que el mismo ha de consumirse. Con ello poder hacer recomendaciones directas de compra para ofrecer al usuario, se tiene un predicado en el que se relacionan los tipos de uva con enlaces de compra disponibles para diferentes opciones de presupuesto. Posterior a ello, se tiene establecidas reglas que relacionan los tipos de vino a diferentes niveles de elección, lo cual nos ayuda a filtrar la opciones de elección de variables conforme se avanza en la toma de decisiones, ello para asegurar el converger a una respuesta, y poder brindar en todo momento una buena recomendación.

Por su parte el script de Python contiene las librerias necesarias que nos ayudan a realizar la conexión con el interprete de PROLOG, para hacer las consultas necesarias, además de librerias para poder hacer el reconocimiento de voz, procesar imágenes, construir la interfaz de usuario, mandar a links de compra, procesamiento y formato de información. Además, se construyeron funciones para poder pre-procesar la información que se recibé como respuesta de las consultas a PROLOG y poder en su caso, relacionarla, mostrandola al usuario en la interfaz creada; se añaden funciones para dar formato a la infomación recibida del usuario de forma, tanto oral como escrita y que debe ser ocupada para realizar consultas en PROLOG. Se escribieron también funciones para realizar la interfaz de usuario, con el manejo de más de una ventana, así como botones personalizados y dinámicos, y se construyeron funciones para un adecuado y organizado despliege de imágenes e información, con el fin de orientar al usuario a través de su interacción con el sistema experto, y el proceso a seguir.

Ejecutable

De acuerdo a las experiencias y resultados obtenido en diversos proyectos previos, nos parece que uno de los aspectos fundamentales, para que el sistema que se esta desarrollando pueda ser viable, y con apertura de acceso a mas variedad de usuarios, es impresindible crear el sistema pensando en la facilidad tanto de uso cotidiano como de adquisición. Es por ello, que decidimos, de igual forma con ayuda de una librería de Python, convertir nuestro código en un compendio de archivos, que permiten tener un ejecutable, lo cual libera al usuario final de tener que estar haciendo descargas e instalaciones adicionales, o tener que estar ejecutando el sistema, desde interpretes, o líneas de comandos, de un determinado lenguaje o sistema.

Para poder ejecutarlo, se debe descargar el conjunto de archivos para que trabaje el ejecutable en Descargar - WineBot Ejecutable, una vez que se ha descargado, la carpeta debe ser descomprimida y se tendrá una carpeta llamada AutoWineBot, y dentro de ella se encontraran más carpetas y archivos, ahí debes localizar el archivo llamado "AutoWineBot.exe", das doble clic rápido sobre el mismo, y con ello se debera desplegar la ventana del sistema (la primera vez puede tardar un poco). Con ello tendrás ya a tu disposición toda la funcionalidad de WineBot: Experto en Vinos!

Conclusiones

Conforme a lo esperado en el proyecto, y a lo mostrado en los alcances que se tuvieron en el desarrollo del mismo, se puede concluir, que se han alcanzado los objetivos planteados para ello, tanto de forma general, llevando a cabo la construcción de un sistema experto, que diese como resultado, el desarrollo de una idea que plantea una herramienta perfectamente utilizable en una situación real, considerando información verídica, para actividades de uso recreativo; donde el sistema refleja cierto grado de expertiz en la materia. Además se logro el objetivo, de que el sistema tuviera una interfaz de usuario eficiente, y adecuada, lo cual mejora mucho la experiencia que brinda el uso del sistema experto, añadiendo el plus, de que se llevo a una versión ejecutable que mejora en mucho la facilidad adquisición y puesta en marcha, abiendo la oportunidad real de uso a una gama mas amplia de tipos de usuario. A nivel particular se consiguio una representación gráfica agradable en términos de presentación, sin dejar de lado la claridad y precisión del estado del sistema, pero conservando aún un manejo fácil, y sin complicaciones para el usuario, ofreciendo más de un método de brindar indicaciones al sistema, y ofreciendo una amplia variedad de opciones. Todo bajo lo estipulado en la literatura orientada al tema.

Artículos y Referencias del Trabajo

Una vez que se obtuvo la idea concreta sobre hacia donde dirigir el proyecto, se realizó una extensa búsqueda de información, que nos ayudó a refinar nuestras ideas, además el realizar estas lecturas nos ayudó a plantear metas alcanzables dadas las condiciones de tiempo y de trabajo a distancia. Durante el desarrollo del sistema experto se tomaron herramientas en información acerca de como desarrollar el proyecto, tanto a nivel técnico: las herramientas de programación a utilizar, como a nivel teorico: como categorizar, y seleccionar las variables a la hora de elegir un vino. Algunas de las referencias que nos ayudaron son:

Equipo

Los creadores.

Mario Rosas Otero

Desarrollador

Natalia Sanchez

Desarrollador

Ruben Martinez

Experto Vinícola