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.

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