Redes Sociales

Base de datos de Pistas Musicales mas artistas en PostgreSQL. Normalización de datos, parte 2.

En este ejercicio leeremos una biblioteca de iTunes en valores separados por comas (CSV) y produciremos tablas correctamente normalizadas como se especifica a continuación.

iTunes

Haremos algunas cosas de manera diferente en esta tarea. No usaremos una tabla «en bruto» separada, solo usaremos declaraciones ALTER TABLE para eliminar columnas después de que no las necesitemos (es decir, las convertimos en claves foráneas).

Utilizaremos este CSV que contiene la información de las pistas musicales. No usaremos una tabla «en bruto» separada, solo usaremos declaraciones ALTER TABLE para eliminar columnas después de que no las necesitemos (es decir, las convertimos en claves foráneas).

Esta vez construiremos una relación de muchos a muchos usando una tabla de junction/through/join entre pistas y artistas.

El script para construir las tablas que vamos a utilizar:

CREATE TABLE album (
    id SERIAL,
    title VARCHAR(128) UNIQUE,
    PRIMARY KEY(id)
);

CREATE TABLE track (
    id SERIAL,
    title TEXT, 
    artist TEXT, 
    album TEXT, 
    album_id INTEGER REFERENCES album(id) ON DELETE CASCADE,
    count INTEGER, 
    rating INTEGER, 
    len INTEGER,
    PRIMARY KEY(id)
);

CREATE TABLE artist (
    id SERIAL,
    name VARCHAR(128) UNIQUE,
    PRIMARY KEY(id)
);

CREATE TABLE tracktoartist (
    id SERIAL,
    track VARCHAR(128),
    track_id INTEGER REFERENCES track(id) ON DELETE CASCADE,
    artist VARCHAR(128),
    artist_id INTEGER REFERENCES artist(id) ON DELETE CASCADE,
   

Luego procedemos a copiar los datos contenidos en el CSV a la tabla track (recuerda ingresar a la línea de comandos con la instrucción psql):

\copy track(title,artist,album,count,rating,len) FROM 'library.csv' WITH DELIMITER ',' CSV;

Seguidamente actualizamos las tablas album y artist con los datos únicos (SELECT DISTINCT) de los campos album y artists de la tabla track. De igual forma los campos track y artist de la tabla tracktoartist desde los campos title y artist de la tabla track.

INSERT INTO album (title) SELECT DISTINCT album FROM track;

INSERT INTO artist (name) SELECT DISTINCT artist FROM track;

UPDATE track SET album_id = (SELECT album.id FROM album WHERE album.title = track.album);

INSERT INTO tracktoartist (track, artist) SELECT DISTINCT title, artist FROM track; 

Una vez hecho esto actualizamos los campos track_id y artist_id de la tabla tracktoartist con los respectivos «id’s» de las tablas track y artist.

UPDATE tracktoartist SET track_id = (SELECT track.id FROM track WHERE track.title = tracktoartist.tracK);

UPDATE tracktoartist SET artist_id = (SELECT artist.id FROM artist WHERE artist.name = tracktoartist.artist);

De esta forma habremos normalizado esta información de Pistas Musicales creando las respectivas relaciones de modo que ahora podemos ejecutar una consulkat como la siguiente:

SELECT track.title, album.title, artist.name
FROM track
JOIN album ON track.album_id = album.id
JOIN tracktoartist ON track.id = tracktoartist.track_id
JOIN artist ON tracktoartist.artist_id = artist.id
LIMIT 3;

Obtendremos un resultado como el siguiente:

Para finalizar podemos eliminar los datos que nos sobran, las columnas album y artist de la tabla track y los campos track y artist de la tabla tracktoartist, a traves de la instrucción ALTER TABLEDROP COLUMN.

 

ETL pipeline Comprendiendo a Elon Musk por sus tweets Parte 1

Creación de un conjunto de datos de Twitter con Pandas en Python utilizando la biblioteca Snscrape. Persistencia de datos en MySQL. Este código busca tweets de Elon Musk desde el 1 de enero de 2021 hasta el 1 de enero de 2022 y guarda los resultados en un archivo CSV llamado «tweets.csv».

Instalar Snscrape y Pandas utilizando pip en tu entorno virtual de Python:

pip install snscrape pandas

Importar las bibliotecas necesarias:

import snscrape.modules.twitter as sntwitter import pandas as pd

Definir una consulta de búsqueda utilizando el formato de consulta de búsqueda de Twitter:

query = «from:elonmusk since:2021-01-01 until:2022-01-01»

image

Opcionalmente, puedes guardar el dataframe en un archivo CSV para su posterior uso:

Captura de pantalla dataset

Para limpiar los datos obtenidos del archivo «tweets.csv» creado anteriormente, podemos utilizar Pandas para cargar el archivo CSV en un dataframe y luego realizar diversas operaciones de limpieza y preprocesamiento de datos.

image

Este es solo un ejemplo básico de algunas de las operaciones de limpieza que se pueden realizar en los datos de los tweets. Dependiendo de los datos específicos que se estén utilizando, puede ser necesario realizar otras operaciones de limpieza y preprocesamiento de datos.

Para guardar el dataset de tweets limpios en un nuevo archivo CSV llamado «tweets_limpios.csv», podemos utilizar el método to_csv() del dataframe de Pandas.

Aquí te dejo un ejemplo de cómo podrías hacerlo:

image

Para guardar los datos del archivo «tweets_limpios.csv» en una base de datos MySQL, necesitaremos instalar la librería de Python mysql-connector-python. También necesitaremos crear una base de datos y una tabla en MySQL para almacenar los datos.

A continuación te dejo un ejemplo de cómo podrías hacerlo:

Primero, instala la librería mysql-connector-python utilizando el siguiente comando en la terminal o en el símbolo del sistema (si estás utilizando Windows):

pip install mysql-connector-python

A continuación, crea una base de datos y una tabla en MySQL utilizando los siguientes scripts SQL:

image

Este script creará una base de datos llamada tweets_db y una tabla llamada tweets con dos columnas: id (un número de identificación único para cada tweet) y tweet_text (el texto del tweet).

Ahora, puedes utilizar el siguiente script de Python para leer los datos del archivo «tweets_limpios.csv» y guardarlos en la base de datos:

image

Asegúrate de cambiar los valores de host, user y password en la función mysql.connector.connect() para que coincidan con tu configuración de MySQL.

Este script carga los datos del archivo CSV en un dataframe de Pandas y luego se conecta a la base de datos MySQL utilizando la librería mysql-connector-python. A continuación, se crea un cursor para ejecutar comandos SQL y se inserta cada tweet en la tabla de la base de datos utilizando un bucle for y la función cursor.execute(). Finalmente, se cierra la conexión con la base de datos y se imprime un mensaje para confirmar que los datos se han guardado correctamente.

Espero que esto te ayude a guardar los datos del archivo «tweets_limpios.csv» en una base de datos MySQL.

Código en GitHub >> https://github.com/DaveSV/ETL-pipeline-Elon-Musk-1

En la Parte 2 de este tutorial avanzaremos a programar, monitorear y administrar todo el flujo de trabajo de estos datos con Airflow.

Hackers, Scammers, peligro a la vista.

Los Hackers, Scammers, y gente de dudosa reputación e intención están haciendo uso intensivo de herramientas tecnológicas como Drives, Chats y Calendarios, y en general también de Redes Sociales.

Sea acucioso, sospeche de lo que se vea extraño, y sobre todo no acepte invitaciones de extraños si no tiene una referencia de ellos, ni etiquetas, ni mucho menos archivos compartidos por estas plataformas.

Qué es la suplantación de identidad

La suplantación de identidad (phishing) es un intento de robo de información personal o acceso a cuentas en línea mediante correos electrónicos, mensajes, anuncios o sitios engañosos que se parecen a los que usas. Por ejemplo, un correo electrónico de suplantación de identidad puede ser similar a uno procedente de tu banco y puede solicitar información privada sobre tu cuenta bancaria.

Es posible que los mensajes o el contenido de suplantación de identidad (phishing) realicen lo siguiente: 

  • Solicitar que proporciones información personal o financiera
  • Solicitar que hagas clic en vínculos o descargues software
  • Robar la identidad de una organización respetada, como tu banco, un sitio de redes sociales que uses o tu lugar de trabajo 
  • Robar la identidad de alguien que conoces, como un miembro de la familia, amigo o compañero de trabajo
  • Tener el aspecto exacto de un mensaje de una organización o persona de confianza

Evita los mensajes y el contenido de suplantación de identidad (phishing)

Para evitar las solicitudes y los mensajes engañosos, sigue estas sugerencias.

  1. Presta atención a las advertencias de Google
  2. Nunca respondas a solicitudes de información privada
  3. No ingreses tu contraseña después de hacer clic en un vínculo de un mensaje
  4. Ten cuidado con los mensajes que suenan urgentes o demasiado buenos para ser ciertos
  5. Detente y piensa antes de hacer clic

Goodle, Apple ha desarrollado herramientas adicionales para denunciar estas acciones. Haga uso de ellas.

Detección de antisemitismo en línea usando aprendizaje profundo multimodal

En los últimos tiempos, el antisemitismo en línea se ha convertido en una de las formas más extendidas de discurso de odio en las principales plataformas de redes sociales.

El aumento exponencial de las redes sociales en línea ha permitido la creación, distribución y consumo de información a un ritmo sin precedentes. Sin embargo, también ha llevado al florecimiento de varias formas de abuso en línea.

Los crecientes casos de antisemitismo en línea se han convertido en una de las principales preocupaciones debido a sus consecuencias sociopolíticas.

A diferencia de otras formas importantes de abuso en línea como el racismo, el sexismo, etc., el antisemitismo en línea no se ha estudiado mucho desde la perspectiva del aprendizaje automático.

El machine learning o aprendizaje automático es una de las disciplinas más conocidas y exitosas de la Inteligencia Artificial (IA). Esta disciplina proporciona a los sistemas la capacidad de aprender y mejorar automáticamente a partir de la experiencia, sin ser explícitamente programados para ello.

Los autores proponen de esta investigación proponen una arquitectura detallada de detección de antisemitismo multimodal (texto e imagen) que aprovecha el progreso reciente en arquitecturas de aprendizaje profundo (deep learning).

Artículo en idioma inglés >> https://dl.acm.org/doi/fullHtml/10.1145/3447535.3462502

Repositorio GitHub >> https://github.com/mohit3011/Online-Antisemitism-Detection-Using-MultimodalDeep-Learning/blob/main/main.py

Contenido compartido respetando derechos de autor.