Solución al reto BBVA Contigo, Hack BBVA 2021

Overview

Solution

  • Solución propuesta para el reto BBVA Contigo del Hackathon BBVA 2021. Equipo Mexdapy. Integrantes:
    • David Pedroza Segoviano
    • Regina Priscila Badillo
    • Zaid de Anda Mariscal
    • Gabriel Missael Barco

Descripción

flow

Nuestro proyecto realizará escucha activa por batches diarios o semanales (A definir) de opiniones en Twitter. Se escuchará en 5 regiones geográficas diferentes:

  • España
  • México
  • Perú
  • Argentina
  • Colombia.

Se obtendrán los tweets usando la API de Twitter por medio de Tweepy (Librería de Python) usando consultas con palabras claves de las 4 prioridades estratégicas de BBVA:

  • Mejorar la salud financiera de los clientes.
  • Ayudar a los clientes hacia un futuro sostenible.
  • Crecer en clientes.
  • Buscar la excelentica operativa.

geolisten

Posterior a la recolección por zona y prioridad, se analizarán los Tweets usando modelos pre-entrenados de Natural Lenguaje Processing para identificar clusters (conjuntos) de tweets con temas e ideas similares (similitud semántica). Luego, se realizará análisis de sentimientos, extracción de palabras clave de cada conjunto, esto lo puede ver de manera sintetizada en el flowchart anexado.

Finalmente, utilizando las palabras clave y el sentimiento asociado a cada conjunto, se generará una oración, idealmente en forma de sugerencia, que resuma el contenido del conjunto.

Recursos de apoyo:

Análisis de tweets.

Todo el análisis se usa utilizando Python y múltiples librerías (ver requirements.txt en el repositorio). La representación gráfica del pipeline completo de recolección y análisis de tweets se encuentra en la carpeta de drive, con el nombre de "Solution pipeline.png". El proceso es el siguiente:

  1. Recolectamos tweets usando Tweepy, por zona geográfica en los 5 países de interés. Para esto, se especifica un centro con coordenadas y un radio, tal que se recolectan tweets de dicho circulo (que incluye al país en cuestión y a sus vecinos). Para obtener los tweets, se generan querys diferentes para cada una de las 4 prioridades, y esto se hace con palabras clave relacionadas con dicha prioridad. Por ejemplo, para la prioridad de salud financiera, se buscan palabras clave como "ahorro" e "inversión. Se recolectan un total de 5000 tweets por país y prioridad, obteniendo un total de 20 datasets de 5000 tweets cada uno.
  2. Realizamos clustering dentro de cada uno de estos 20 datasets para obtener los temas de los que se habla, para esto:
    1. Creamos embeddings de los tweets, esto es, pasamos cada tweet a un punto en el espacio. En particular, usamos un modelo pre-entrenado llamado Siamese BERT-Network, distiluse-base-multilingual-cased-v2, que pasa cada tweet a un punto en el espacio de 512 dimensiones. Esto tiene la propiedad de que los puntos cercanos (tweets) hablan de temas similares, y los puntos lejanos de temas diferentes.
    2. Aplicamos una técnica de reducción de dimensionalidad de los datos ya que 512 son demasiadas dimensiones para varias técnicas de clustering (particularmente de la que usamos). Para esto, usamos UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction, un algoritmo de clustering eficiente y que preserva las características de los datos de manera eficiente. Reducimos a 15 dimensiones.
    3. Finalmente, aplicamos un algoritmo de clustering sobre estos puntos para obtener grupos de tweets que hablen de lo mismo y/o de manera similar. Para esto, usamos HDBSCAN: Hierarchical density-based spatial clustering of applications with noise. Este algoritmo determina por si mismo el número de clusters y manda los tweets irrelevantes a ruido (sin cluster asignado.
  3. Una vez con los clusters dentro de cada dataset, tomamos únicamente los que tengan más de 100 tweets, y analizamos cada uno de estos clusters. Hacemos un análisis de sentimientos sobre los tweets y también obtenemos las palabras que mejor representan la información de los clusters.
  4. Finalmente, realizamos varias visualizaciones de los clusters con este análisis y se genera la recomendación.

pipeline

AWS

En una instancia de AWS, se ejecutará primero nuestro scrapper de información de twitter (cuya información se detalla más a profundidad en la sección análisis de tweets, que guardaremos en la misma instancia, para posterior ingreso a el módulo de análisis de tweets. Después, de manera secuencial, se ejecutará un análisis de sentimiento sobre cada cluster, para procesar todos los datos y obtener todos los estadísticos, que se almacenarán en un servicio S3. Estos datos posteriormente se pondrán a disposición de la página web mediante una API, que siempre estará expuesta para que la página web la pueda consumir. Cuando reciba un request, la API cargará los datos de S3, y los cambiará a un formato json para que la página web los pueda consumir.

Página Web

Todos los datos obtenidos y procesados, serán desplegados en una página web, que consumirá la API antes implementada en la instancia de AWS (Ver sección anterior). Esta página contendrá una vista inicial, donde se podrán elegir entre distintos países: España, México, Perú, Argentina, Colombia, (Ver maqueta de página en la carpeta). Por cada país, existirá una página donde se mostrará un Dashboard de los estadísticos, mapas, wordclouds, y demás indicadores que ayuden a la comprensión de los datos procesados.

Esta página está siendo escrita con HTML, CSS y JavaScript puro, por el momento no hay necesidad de utilizar ninguna otra tecnología, se plantea que para el MVP, esta página pueda ser alojada en GitHub Pages.

Owner
Gabriel Missael Barco
Undergraduate physics student 📡 / Python enthusiastic 🐍 / Community member @futurelabmx 🚀 / #SoyUG 🐝
Gabriel Missael Barco
A fast sub domain brute tool for pentesters

subDomainsBrute 1.4 A fast sub domain brute tool for pentesters. It works with P

Oliver 2 Oct 18, 2022
Python exploit code for CVE-2021-4034 (pwnkit)

Python3 code to exploit CVE-2021-4034 (PWNKIT). This was an exercise in "can I make this work in Python?", and not meant as a robust exploit. It Works

Joe Ammond 92 Dec 29, 2022
Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling.

sshuttle: where transparent proxy meets VPN meets ssh As far as I know, sshuttle is the only program that solves the following common case: Your clien

9.4k Jan 04, 2023
Password-Manager - This app can generate ,save , find and delete passwords.

Password-Manager This app can generate ,save , find and delete passwords. In the StartUp() Function , there are three buttons to choose from : Generat

1 Jan 01, 2022
IDA Frida Plugin for tracing something interesting.

IDAFrida A simple IDA plugin to generate FRIDA script. Edit template for functions or you can use the default template. Select functions you want to t

PandaOS 133 Dec 24, 2022
Web Headers Security Scanner

Web Headers Security Scanner

Emre Koybasi 3 Dec 16, 2022
A kAFL based hypervisor fuzzer which fully supports nested VMs

hAFL2 hAFL2 is a kAFL-based hypervisor fuzzer. It is the first open-source fuzzer which is able to target hypervisors natively (including Hyper-V), as

SafeBreach Labs 115 Dec 07, 2022
Downloads SEP, Baseband and BuildManifest automatically for signed iOS version's for connected iDevice

FutureHelper Supports macOS and Windows Downloads SEP, Baseband and BuildManifest automatically for signed iOS version's (including beta firmwares) fo

Kasim Hussain 7 Jan 05, 2023
A DOM-based G-Suite password sprayer and user enumerator

A DOM-based G-Suite password sprayer and user enumerator

Mayk 1 Apr 07, 2022
Send CVE information to the specified mailbox (from Github)

Send CVE information to the specified mailbox (from Github)

91 Nov 08, 2022
这次是可可萝病毒!

可可萝病毒! 事情是这样的,我又开始不干正事了。 众所周知,在Python里,0x0等于0,但是不等于可可萝。 这很不好,我们得把它改成可可萝! 效果 一般的Python—— Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) [MSC

黄巍 29 Jul 14, 2022
Extensive Python3 network scanner, simplified.

Snake Map Extensive Python3 network scanner, simplified. _,.--. --..,_ .'`__ o `;__, `'.'. .'.'` '---'` '

Miss Bliss 4 Apr 16, 2022
CVE-2022-22536 - SAP memory pipes(MPI) desynchronization vulnerability CVE-2022-22536

CVE-2022-22536 SAP memory pipes desynchronization vulnerability(MPI) CVE-2022-22

antx 49 Nov 09, 2022
Script Crack Facebook Premium 🚶‍♂

premium Script Crack Facebook Premium 🚶‍♂ In Script Install Script $ pkg update && pkg upgrade $ termux-setup-storage $ pkg install python $ pkg inst

Yumasaa 2 Dec 19, 2021
Official implementation of the paper "Backdoor Attacks on Self-Supervised Learning".

SSL-Backdoor Abstract Large-scale unlabeled data has allowed recent progress in self-supervised learning methods that learn rich visual representation

UMBC Vision 44 Nov 21, 2022
Exploit and Check Script for CVE 2022-1388

F5-CVE-2022-1388-Exploit Exploit and Check Script for CVE 2022-1388 Usage Check against single host python3 CVE-2022-1388.py -v true -u target_url At

Andy Gill 52 Dec 22, 2022
Lite version of my Gatekeeper backdoor for public use.

Gatekeeper Lite Backdoor Fully functioning bind-type backdoor This backdoor is a fully functioning bind shell and lite version of my full functioning

Joe Helle 56 Mar 25, 2022
The Multi-Tool Web Vulnerability Scanner.

🟥 RapidScan v1.2 - The Multi-Tool Web Vulnerability Scanner RapidScan has been ported to Python3 i.e. v1.2. The Python2.7 codebase is available on v1

skavngr 1.3k Dec 31, 2022
Use FOFA automatic vulnerability scanning tool

AutoSRC Use FOFA automatic vulnerability scanning tool Usage python3 autosrc.py -e FOFA EMAIL -k TOKEN Screenshots License MIT Dev 6613GitHub6613

PwnWiki 48 Oct 25, 2022
Experimental musig2 python code, not for production use!

musig2-py Experimental musig2 python code, not for production use! This is just for testing things out. All public keys are encoded as 32 bytes, assum

Samuel Dobson 14 Jul 08, 2022