trAIvel : Un asistente turístico basado en IA

Pablo Mateos Masa
7 min readDec 17, 2019

Cuando planeas unas vacaciones, la mayoría de las veces sueles un tiempo previo preparando el viaje y viendo que sitios que te interesaría visitar, además de revisar y revisar durante días toda la información de los sitios más interesantes.

Por otro lado, una vez estás en tu destino sueles interesarse por la historia del lugar, para ello te compras una guía o visitas la ciudad mediante “free-tour” para poder disfrutarla de la mejor manera posible.

¿Y si la Inteligencia Artificial pudiera ayudarte en todo este proceso, y ser tu compañero ideal para tu próximo viaje?

Gracias al reto planteado en la segunda edición de AI Saturdays, nuestro grupo formado por Javier Perez Chao, Alberto Granero García y Pablo Mateos Masa, nos propusimos el reto de llevar a cabo esta idea, intentando dar una solución factible, práctica y real en el mundo del turismo bajo el prisma del Machine Learning y la Optimización combinatoria, bajo el tratamiento de técnicas de procesamiento de Big Data.

Primeros pasos hacia el asistente turístico

Ante un reto de tanta envergadura, lo primero que hicimos fue focalizar sobre que iba abarcar nuestro asistente turístico y que partes iba a contener. Debido al tiempo tan limitado que teníamos, tuvimos que centrar el proyecto en la ciudad de Madrid, por el fácil acceso a los datos, gracias a los datos abiertos del Ayuntamiento y por otro lado, por nuestro conocimiento de la ciudad debido a que vivimos en ella.

Una vez fijado el foco, establecimos como misión principal la creación de un entorno capaz de ahorrar tiempo y facilitar información a cualquier tipo de turista que quiera visitar una ciudad. La intención es que, en tan solo unos segundos, se pueda generar una ruta optimizada turística adaptada al 100% al tipo de perfil de usuario ya sea del tipo cultural, gastronómico, de ocio, deportivo o económico.

Modelo de negocio

Por ello se planteó la creación de una app basada en un recomendador de puntos de interés basado en los gustos del usuario y la relevancia de estos puntos de interés de acuerdo a otras web turísticas. Una vez se haya obtenido la lista de los lugares que más se ajustan al usuario, el siguiente paso es la construcción de una ruta óptima bajo el parámetro del tiempo disponible.

Finalmente, el usuario podrá consultar información de los puntos de interés de la ruta sugerida tomando fotos a dichos puntos mediante reconocimiento de imágenes basado en DL.

Sistema de recomendación

Debido a que esta parte era la piedra angular del proyecto se decidió empezar por el recomendador, ya que era parte fundamental para las otras dos patas del proyecto.

Por ello, se llevó a cabo una ardua tarea de recolección de datos tanto de los datos abiertos provistos por el Ayuntamiento, así como extracciones de información a distintas webs turísticas, para reforzar nuestra base de datos y complementar información.

Debido a que se necesitaba segmentar los puntos de interés conforme a unas temáticas, unos de los puntos principales en la recolección de información fue la recogida de descripciones de los puntos de interés. Es decir, la solución al problema fue utilizar metodologías de sistemas de recomendación basadas en Content-Based Filtering, para poder clusterizar los POIS.

Para ello, la solución propuesta final fue la aplicación de distintas técnicas NLP para preprocesarlas descripciones de los POIS, para luego aplicar un modelo LDA para la búsqueda de los tópicos que aúnaran los POIS bajo unas series de palabras claves.

Algoritmo LDA

Por último, gracias a dicha identificación de tópicos y palabras más relevantes, al usuario final se le devolverá una lista de los puntos de interés más favorables de acuerdo a su selección de filtrado mediante una métrica de similaridad estadística.

Gracias a esto, podemos abordar el problema de “cold-start” que los sistemas de recomendación basados en Collaborative-Filtering tienen, por la falta de información inicial que se tiene por parte de los usuarios anónimos o nuevos.

Optimizador de rutas

Una vez listados los puntos de interés más relevantes para el usuario, pasamos al modelo de optimización para la generación de rutas.

Esta parte ha sido bastante ardua, debido a la gran infinidad de soluciones disponibles en el campo de optimización combinacional.

Debido a que nuestro caso es un problema de optimización de rutas, se buscó aquellos problemas de optimización que resuelto mediante algoritmos metaheurísticos entrara dentro del marco de nuestro proyecto.

Investigando, vimos que nuestro problema se enmarcaba dentro del conjunto de problemas de enrutamiento, más en concreto los basados en TSP(Travelling Salesman Problem).

TSP(problema del viajante) es uno de los problemas más famosos de la historia: En los días en que los vendedores viajaban aspiradoras y enciclopedias de puerta en puerta, tenían que planificar sus rutas, de casa en casa o de ciudad en ciudad. Cuanto más corta sea la ruta, mejor.

Encontrar la ruta más corta que visita un conjunto de ubicaciones es un problema exponencialmente difícil: encontrar la ruta más corta para 20 ubicaciones es mucho más que el doble de difícil que 10 ubicaciones.

Para ello, se necesitan técnicas de optimización para buscar de manera inteligente el espacio de la solución y encontrar soluciones casi óptimas.

Matemáticamente, este problema puede representarse como un grafo , donde las ubicaciones son los nodos y los bordes (o arcos) representan el viaje directo entre las ubicaciones. El peso de cada borde es la distancia entre los nodos. El objetivo es encontrar el camino con la menor suma de pesos.

Representación en modo grafo de las ubicaciones de un viaje

En nuestro caso, el objetivo principal es visitar el máximo número de puntos posibles en el tiempo indicado por el usuario.

Por ello, utilizamos la librería OR-Tools que proporciona Google. Esta librería tiene una API específica para problemas de Routing que se ajustaban con nuestra problemática. Esta API tiene un Solver basado en técnicas de optimización de búsqueda de mínimo local con metaheurísticos.

Nuestro optimizador recoge los tiempos que se tarda entre puntos recomendados y genera dos matrices dependiendo del medio(a pie o metro) que se utilice. Una vez obtenidas esas dos matrices, se hace una búsqueda sobre cuáles son los medios más óptimos entre puntos para elegir entre metro o a pie, y se introduce en el Solver del optimizador. Este nos dará la ruta más óptima.

Resultado una ruta optimizada para metro y a pie

Por regla general, en este tipo de problemas la solución optimizador debe pasar por todos los puntos en la búsqueda de la ruta óptima para conseguir una solución factible. Nosotros hemos añadido dos restricciones y dos holguras para conseguir una solución flexible, y permitir que cumpla siempre la restricción del tiempo de ruta disponible y poder descartar POIS para poder cumplir con el tiempo exigido por el usuario. Esto nos permite poder dar la mejor ruta óptima y poder visitar el mayor número de POIS posibles.

Por tanto, lo primero es restringir el tiempo de recorrido basado en las preferencias del usuario, y lo segundo es penalizar aquellos puntos que no se ajusten a dicha restricción, retirándose de la solución para conseguir que el problema sea factible.

Ruta óptima presentada en la interfaz de la app

Clasificador de Imágenes

Ya por último nos encontramos con el reconocedor de puntos de interés mediante visión artificial. El principal motivo de esta parte era la búsqueda de valor añadido de la herramienta que se le quiere dar al usuario. Esto estaba motivado por dos premisas: la primera no hay nada el mercado actualmente y la AI forma parte principal de la solución.

Con ello, también se busca poder emular la figura de los trabajadores guías por un asistente virtual. Con esta última parte, se cierra el circulo de nuestra aplicación alcanzando el asistente completo.

Para el reconocimiento de los puntos de interés, la solución fue realizar una clasificador MultiLabel, donde cada POIS sería una etiqueta única. Este clasificador ha sido modelado bajo la infraestructura de redes profundas convolucionales (VGGNet16) mediante la biblioteca Keras.

Estructura de red neuronal VGGNet16

Una vez reconocido el punto de interés, el reconocedor de imágenes nos devolverá la etiqueta asociada al POI y mediante una lectura a la base datos, podremos proveer la información, al usuario.

Respuesta en la app al capturar una imagen del monumento “Puerta de Alcalá”

Conclusiones

Bajo nuestro punto de vista este proyecto supone poner una primera piedra en la construcción de una solución innovadora en el mercado turístico online , de larga proyección pero factibles en términos de productivización.

Además, debido a la gran magnitud del proyecto y el amplio abanico de oportunidades, nuestra solución tiene una clara tendencia creciente y escalable basada en futuras lineas de trabajo tales como: otras ciudades, nuevas fuentes de datos, climatología, nuevos transportes, integración con museos, remodelado más optimo o integración con RRSS.

Por otro lado, el mercado del turismo online está en auge y en el futuro la gran mayoría de interacciones se harán mediante asistentes virtuales. Esto aunado a la dificultad encontrada al planear un viaje junto a las webs de información turística que actúan como guías convencionales en formato online, no ayudan a generar un plan de viaje adaptado para el tiempo y los intereses que dispone el turista, propician un terreno idóneo para la continuación del proyecto.

Para finalizar, cabe destacar que debido al potencial que nuestro equipo ha visto en esta idea, el objetivo es continuar con el proyecto de cara a construir una solución factible ,útil e innovadora para poder cubrir las necesidades que los usuarios turísticos no tienen actualmente.

Continuará…

--

--

Pablo Mateos Masa

Telecommunications Engineer with 4+ years of experience , focused on Data science world. Currently working as Sr Data Scientist at Telefónica.