Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Documentando cómo hicimos #RevisaMiGrieta

Documentando cómo hicimos #RevisaMiGrieta

En el sismo del 19 de septiembre de 2017 en México creamos un hashtag para revisar de manera emergente edificios con daños potencialmente peligrosos. #RevisaMiGrieta se crea como un experimento para una posible herramienta de coordinación para la evaluación de grietas y riesgo a través de twitter.

Avatar for Noé Domínguez Porras

Noé Domínguez Porras

February 22, 2018
Tweet

More Decks by Noé Domínguez Porras

Other Decks in Technology

Transcript

  1. Pensamientos previos Pensamientos previos: • “La réplica acontecida un día

    después, la noche del 20 de septiembre de 1985, también tuvo gran repercusión para la capital al colapsar estructuras reblandecidas un día antes.” (Wikipedia: Terremoto_de_México_de_1985)
  2. El Problema Apoyar a Protección Civil de manera emergente en

    la evaluación y clasificación de casos urgentes en edificios que pudieran colapsar en las réplicas del sismo. Otras motivaciones • Dar tranquilidad a usuarios que no han sido atendidos por protección civil. • Filtrar la enorme cantidad de solicitudes e información.
  3. El bot para #RevisaMiGrieta https://github.com/codersmexico/revisa-mi-grieta-bot Proyecto para atender necesidades de

    evaluación en grietas después del SismoMX del 19 de Septiembre de 2017. Además ofrece un conjunto de preguntas con posibles respuestas para la información a los usuarios que busquen información relacionada a: - Albergues - Centros de Acopio - Donaciones Fortune en Español, Edición octubre 2017.
  4. El bot para #RevisaMiGrieta https://github.com/codersmexico/revisa-mi-grieta-bot 2 roles de usuario: -

    Voluntario - Afectado Premisa de los usuarios: - Todos deberían de actuar en buena voluntad. Fortune en Español, Edición octubre 2017.
  5. El bot para #RevisaMiGrieta https://github.com/codersmexico/revisa-mi-grieta-bot Features - Manejo de sesiones.

    - Asignación de apoyo. - Respuesta a preguntas conocidas. Fortune en Español, Edición octubre 2017.
  6. Bibliotecas utilizadas https://github.com/codersmexico/revisa-mi-grieta-bot Python - ChatterBot machine learning, conversational dialog

    engine for creating chat bots. http://chatterbot.readthedocs.io Fortune en Español, Edición octubre 2017.
  7. bot = ChatBot() bot = ChatBot( name = "Dora la

    coordinadora", storage_adapter='chatterbot.storage.SQLStorageAdapter', input_adapter="chatterbot.input.VariableInputTypeAdapter", output_adapter="chatterbot.output.OutputAdapter", output_format="text", # input_adapter="chatterbot.input.TerminalAdapter", # output_adapter="chatterbot.output.TerminalAdapter", logic_adapters=[ { "import_path": "chatterbot.logic.BestMatch", "statement_comparison_function": "chatterbot.comparisons.levenshtein_distance", "response_selection_method": "chatterbot.response_selection.get_first_response" }, { 'import_path': 'chatterbot.logic.SpecificResponseAdapter', 'input_text': '@revisamigrieta test', 'output_text': 'Puedes revisar tu estructura en: http://bit.ly/RevisaMiGrieta' }, { 'import_path': 'chatterbot.logic.LowConfidenceAdapter', 'threshold': 0.65, 'default_response': 'Puedo ayudarte con información para inspeccionar en: http://bit.ly/RevisaMiGrieta, espera mientras alguien te ayuda' } ], trainer='chatterbot.trainers.ListTrainer' ) list_trainer.trainer(bot,corpora.dora()) Source: https://github.com/codersmexico/revisa-mi-grieta-bot/blob/master/main.py
  8. bot = ChatBot( name = "Dora la coordinadora", storage_adapter='chatterbot.storage.SQLStorageAdapter', input_adapter="chatterbot.input.VariableInputTypeAdapter",

    output_adapter="chatterbot.output.OutputAdapter", output_format="text", # input_adapter="chatterbot.input.TerminalAdapter", # output_adapter="chatterbot.output.TerminalAdapter", logic_adapters=[ { "import_path": "chatterbot.logic.BestMatch", "statement_comparison_function": "chatterbot.comparisons.levenshtein_distance", "response_selection_method": "chatterbot.response_selection.get_first_response" }, { 'import_path': 'chatterbot.logic.SpecificResponseAdapter', 'input_text': '@revisamigrieta test', 'output_text': 'Puedes revisar tu estructura en: http://bit.ly/RevisaMiGrieta' }, { 'import_path': 'chatterbot.logic.LowConfidenceAdapter', 'threshold': 0.65, 'default_response': 'Puedo ayudarte con información para inspeccionar en: http://bit.ly/RevisaMiGrieta, espera mientras alguien te ayuda' } ], trainer='chatterbot.trainers.ListTrainer' ) list_trainer.trainer(bot,corpora.dora()) Source: https://github.com/codersmexico/revisa-mi-grieta-bot/blob/master/main.py BestMatch En nuestro corpora.py elige la respuesta más parecida. Para hacer la comparación de texto se usa levenshtein_distance y elige la primera que encuentre más parecida.
  9. bot = ChatBot( name = "Dora la coordinadora", storage_adapter='chatterbot.storage.SQLStorageAdapter', input_adapter="chatterbot.input.VariableInputTypeAdapter",

    output_adapter="chatterbot.output.OutputAdapter", output_format="text", # input_adapter="chatterbot.input.TerminalAdapter", # output_adapter="chatterbot.output.TerminalAdapter", logic_adapters=[ { "import_path": "chatterbot.logic.BestMatch", "statement_comparison_function": "chatterbot.comparisons.levenshtein_distance", "response_selection_method": "chatterbot.response_selection.get_first_response" }, { 'import_path': 'chatterbot.logic.SpecificResponseAdapter', 'input_text': '@revisamigrieta test', 'output_text': 'Puedes revisar tu estructura en: http://bit.ly/RevisaMiGrieta' }, { 'import_path': 'chatterbot.logic.LowConfidenceAdapter', 'threshold': 0.65, 'default_response': 'Puedo ayudarte con información para inspeccionar en: http://bit.ly/RevisaMiGrieta, espera mientras alguien te ayuda' } ], trainer='chatterbot.trainers.ListTrainer' ) list_trainer.trainer(bot,corpora.dora()) Source: https://github.com/codersmexico/revisa-mi-grieta-bot/blob/master/main.py SpecificResponseAdapter Si hay un texto de específico, no comparar para buscar el BestMatch. Dar una respuesta específica.
  10. bot = ChatBot( name = "Dora la coordinadora", storage_adapter='chatterbot.storage.SQLStorageAdapter', input_adapter="chatterbot.input.VariableInputTypeAdapter",

    output_adapter="chatterbot.output.OutputAdapter", output_format="text", # input_adapter="chatterbot.input.TerminalAdapter", # output_adapter="chatterbot.output.TerminalAdapter", logic_adapters=[ { "import_path": "chatterbot.logic.BestMatch", "statement_comparison_function": "chatterbot.comparisons.levenshtein_distance", "response_selection_method": "chatterbot.response_selection.get_first_response" }, { 'import_path': 'chatterbot.logic.SpecificResponseAdapter', 'input_text': '@revisamigrieta test', 'output_text': 'Puedes revisar tu estructura en: http://bit.ly/RevisaMiGrieta' }, { 'import_path': 'chatterbot.logic.LowConfidenceAdapter', 'threshold': 0.65, 'default_response': 'Puedo ayudarte con información para inspeccionar en: http://bit.ly/RevisaMiGrieta, espera mientras alguien te ayuda' } ], trainer='chatterbot.trainers.ListTrainer' ) list_trainer.trainer(bot,corpora.dora()) Source: https://github.com/codersmexico/revisa-mi-grieta-bot/blob/master/main.py LowConfidenceAdapter Si no hay una respuesta con un nivel de confianza x, responder con una respuesta por defecto.
  11. API para #RevisaMiGrieta (by @digaresc) Una interfaz para almacenar, consumir

    y programar sobre la información obtenida de Redes Sociales.
  12. Resumen • La manera en que usamos Twitter en el

    #Sismo19S fue ejemplar. • En México también sabemos usar la tecnología de manera eficiente y creativa. • Un algoritmo puede ser también un proceso humano. • Se puede utilizar la tecnología para coordinar un problema de manera más eficiente. • Hay trabajo por hacer, la inteligencia artificial puede hacer más eficiente este proceso. Agenda
  13. Trabajo Futuro • Mejorar el bot para la coordinación de

    voluntarios y usuarios. • Crear un Dataset de grietas para Machine Learning. Agenda