1 of 25

Bots

by Carlos Toxtli

2 of 25

Presentación

  • Desarrollador de bots con ~20 años de experiencia..
  • Colaborado/Fundado empresas de desarrollo de bots.
  • Asesoría a empresas en tecnologías de automatización.
  • Doctorado enfocado a la Investigación en el uso de bots a gran escala.

3 of 25

¿Qué es un Bot?

  • Aplicación de software que ejecuta tareas automatizadas.
  • Ejecutan tareas que son estructuralmente repetitivas a una escala mayor a la que un humano puede ejecutarlas.

4 of 25

Tipos de Bots

  • Web crawler
  • Chatbots
  • Botnets
  • Bots que procesan Texto, Audio, Imagenes, Video, etc.

5 of 25

¿Qué he aprendido en todo este tiempo?

  • Un Bot no es solo un ChatBot
  • Uno se desenamora de flujos incompletos
  • Es bueno ver a un “Bot” como un “Sistema”
  • Cuando tengas un “Sistema” funcional entonces si ponle un nombre de “Bot”

6 of 25

Ejemplos: MATT

Descripción

  • Chatbot que distribuye contenido educativo y asigna tareas.
  • Las tareas son recogidas por el chatbot y enviadas a expertos.
  • Los expertos evalúan las tareas y envían la retroalimentación a los estudiantes.

7 of 25

Ejemplos: MATT

Implementación:

  • Un tutorial es enviado a una plataforma de CrowdSourcing para ser descompuesto en micro lecciones.
  • Un bot busca en Linkedin expertos en un tema y los invita a participar (flujo de reclutamiento).
  • Implementación de máquinas de estados
  • La plataforma administra cuando deben ser enviados los mensajes conforme a la disponibilidad del experto y balancea cargas.
  • El chatbot es solo una interfaz de consulta y recolección de información.

8 of 25

Ejemplos: MATT

Lecciones aprendidas:

  • El verdadero valor de la plataforma fue el reclutamiento automatizado.
  • Lograr que expertos participen es complejo
  • Aprender desde un chat es complejo

9 of 25

Ejemplos: TaskBot

Descripción:

  • Bot que al ser incluido en un correo asigna las tareas propuestas a los participantes.
  • Da seguimiento de cada tarea con cada participante.
  • Mantiene enterado al creador de la tarea de los avances.

10 of 25

Ejemplos: TaskBot

Implementación:

  • Integración con herramientas de administración de tareas (Wunderlist, etc)
  • Sistema de programación de tareas (crons)
  • Modelos de NLP (LUIS)
  • Implementación sobre correo, chats de equipos y sociales.

11 of 25

Ejemplos: TaskBot

Lecciones aprendidas:

  • Simples reglas de formato reducen la fricción del usuario
  • Las personas se sienten cómodas pidiéndole a través de un Bot en vez de pedirlo directo a la persona.
  • Las reglas de los chats como por ejemplo poner el símbolo @ antes de un nombre, son comúnmente olvidadas.

12 of 25

Otros: ExperTwin

Descripción:

Sistema que es capaz de traer solo los temas que te interesan a tu ambiente de trabajo y buscar sobre ellos (como un Google personal).

Comentarios:

Implementar crawlers que trabajen para ti es muy conveniente, lo que es complejo es crear redes de crawlers para cada usuario.

13 of 25

Otros: AlexaDesktop

Descripción:

Sistema que es capaz de ejecutar acciones en la computadora que fueron solicitadas por voz mediante un asistente de voz.

Comentarios:

Implementar con Sikuli flujos de interacción de la interfaz que fueran invocados desde un webhook que recibe el comando transcrito.

14 of 25

Otros: Hum2Song

Descripción:

Sistema que es capaz de crear el acompañamiento musical de una melodía cantada o tarareada.

Comentarios:

El primer paso es transcribir la voz, pero no a texto, sino a notas. Una vez transcrita se hacen análisi de series de tiempo, predicciones por medio de distintas arquitecturas de redes neuronales.

15 of 25

Otros: DeepPiracy

Descripción:

Sistema que es capaz de ver el contenido que se está proyectando en televisores, monitores o pantallas y mencionar si es contenido con derechos de autor.

Comentarios:

Los bots pueden tener como entrada texto, voz, imagenes, video, etc. El análisis de video altamente distorsionado es complejo pero las técnicas de Redes Neuronales Convolutivas ayudan mucho al proceso.

16 of 25

Mucho más

  • Muchas actividades rutinarias pueden ser automatizadas con algoritmos que interpreten las señales que nosotros percibimos con nuestros sentidos.
  • Por ejemplo, podemos editar un video recortando las partes donde no se habla o donde se dice algo mal, esto solo transcribiendo a texto lo hablado y recortando los intervalos sin texto.

17 of 25

RPA (Robotic Process Automation)

Es la rama de automatización por software que se encarga de los procesos que simulan la interacción humana y perciben por sensores las señales que nosotros como humanos percibimos por medio de los sentidos.

18 of 25

Herramientas

Como vimos un bot es capaz de entender señales de múltiples fuentes.

Si la información proviene de texto, se pueden usar herramientas como DialogFlow, NLTK, SpaCy, entre otras para analizarla.

Si la información proviene de imágenes podemos usar herramientas en la nube o implementar modelos como Tesseract, YOLO, MobileNet, etc, con datasets como COCO que reconocen muchas categorías.

Si la información proviene de vídeo igualmente podemos segmentarla en imágenes y analizar cuadro por cuadro.

19 of 25

Herramientas

  • Si lo que queremos es automatizar la interfaz de usuario entonces herramientas como Sikuli o Automator nos permiten generar las secuencias.
  • Si lo que queremos es automatizar audio, las herramientas en la nube suelen ser las más eficientes, hay algunas offline como Sphinx pero son difíciles de implementar.
  • Si lo que queremos es automatizar la navegación entonces Selenium, BeutifulSoup, Scrapy, entre otras son buenas opciones.

20 of 25

Tipos de análisis de texto

  • Análisis manual por palabras (bolsa de palabras)
  • Análisis de palabras con contexto (Word2Vec)
  • Análisis de frases (Doc2Vec)
  • Análisis con significado (Sense2Vec)

Herramientas para cualquiera de ellas: SpaCy, NLTK, Stanford NLP, POS, NER, OpeNER project

21 of 25

Con Machine Learning

Clasificadores entrenados con Bag of Words o vectores:

MLP, RandomForest, SVM, etc

Generadores con Recurrent Neural Networks

LSTM, Attention, etc.

22 of 25

Algunos Bots que se me hacen útiles

  • Bots que ligan servicios de mensajería (hacer amistades)
  • Bots que te notifican cuando algo sucede (multas, cobros)
  • Bots que crean certificados (CertBot)
  • Bots que organizan la información (Google)
  • Bot de los buenos días (hora, clima y noticias juntos)
  • Bots de felicitación de cumpleaños

23 of 25

Bots en todo

  • En Linkedin
  • En GitHub
  • En Marketing
  • Bots de extracción de datos.
  • Si los usas en plataformas restrictivas es importante mantener un comportamiento humano.
  • La información colectada bajo usuario y contraseña no deberá ser publicada.

24 of 25

Conclusiones

  • Es importante ver a un Bot como una solución completa, no solo como una interfaz de entrada.
  • El verdadero reto es tener una integración robusta entre los distintos flujos que conforman una solución.
  • Apliquen bots a todo lo que puedan y experimenten mejoras 10x en las actividades que van ligadas a la interacción humana.

25 of 25

Gracias