alcazar90 / CC5205-3-proyecto

Proyecto curso CC5205-3, FCFM, Universidad de Chile
2 stars 0 forks source link

Definir proyecto + fuentes de datos #1

Closed alcazar90 closed 2 years ago

alcazar90 commented 2 years ago

TODO: Definir base de datos para el proyecto.

Vamos discutiendo en este issue, podríamos ir haciendo exploraciones rápidas en las alternativas que más nos gusten y luego decidir también, ya con una posible pregunta u objetivo de proyecto más claro.

alcazar90 commented 2 years ago

Una idea es trabajar con datos de Twitter.

Específicamente nos podemos basar en algunos componente de este proyecto: https://mlops-discord.github.io/blog/designing-twitters-trending-hashtags-solution/

El scoping del proyecto es identificar tendencias de hashtag:

To simplify the problem for the MVP, we’ll focus on detecting trending hashtags as opposed to identifying trending topics.

Definición de "tendencia":

what does it mean for a hashtag to be “trending”? For a hashtag to be considered trending, it shouldn’t just be used often, but its usage should be increasing significantly more than others over a certain period of time.

El proyecto original abarca muchos más componentes y busca crear una aplicación que ponga en práctica un sistema de recomendación:

We’ll measure the success of the project based on the engagement of users who are shown trending hashtags computed by our algorithm compared to those who are shown the manually curated hashtags.

Obviamente esto último queda fuera del alcance del curso, sin embargo, hay bastante análisis exploratorio y variables que se podrían analizar. Además, me imagino bien visual, general y no-dominio especifico como posible proyecto.

Es una alternativa, vayamos agregando otras, y vemos la que nos parezca mejor :)

alcazar90 commented 2 years ago

Otra idea de proyecto es trabajar con datos de Spotify.

Hay un dataset que se llama The Million Playlist Dataset (MPD) liberada por Spotify con información de playlist. Más información en Introducing The Million Playlist Dataset and RecSys Challenge 2018 y el sitio donde se llevo la competencia (acá se descarga el dataset).

{
        "name": "musical",
        "collaborative": "false",
        "pid": 5,
        "modified_at": 1493424000,
        "num_albums": 7,
        "num_tracks": 12,
        "num_followers": 1,
        "num_edits": 2,
        "duration_ms": 2657366,
        "num_artists": 6,
        "tracks": [ info_cancion1, info_cancion2, ...]
}

Acá el detalle en la lista que esta dentro de tracks:

 {
                "pos": 0,
                "artist_name": "Degiheugi",
                "track_uri": "spotify:track:7vqa3sDmtEaVJ2gcvxtRID",
                "artist_uri": "spotify:artist:3V2paBXEoZIAhfZRJmo2jL",
                "track_name": "Finalement",
                "album_uri": "spotify:album:2KrRMJ9z7Xjoz1Az4O6UML",
                "duration_ms": 166264,
                "album_name": "Dancing Chords and Fireflies"
            },

Podemos ocupar este dataset complementario para obtener más features acerca de cada canción:

tracks.csv

id (Unique identifier of track)
name (Name of the song)
popularity (Ranges from 0 to 100)
duration_ms (Integer typically ranging from 200k to 300k)
artists (List of artists mentioned)
id_artists (Ids of mentioned artists)
danceability (Ranges from 0 to 1)
energy (Ranges from 0 to 1)
key (All keys on octave encoded as values ranging from 0 to 11, starting on C as 0, C# as 1 and so on...)
loudness (Float typically ranging from -60 to 0)
speechiness (Ranges from 0 to 1)
acousticness (Ranges from 0 to 1)
instrumentalness (Ranges from 0 to 1)
liveness (Ranges from 0 to 1)
valence (Ranges from 0 to 1)
tempo (Float typically ranging from 50 to 150)
release_year (Year of release)
release_month (Month of year released)
release_day (Day of month released)

artists.csv

id (Id of artist)
followers (Total number of followers of artist)
genres (Genres associated with this artist)
name (Name of artist)
popularity (Popularity of given artist based on all his/her tracks)
GianniCatBug commented 2 years ago

Respecto de lo de twitter como que no me llama mucho la atención. Lo de spotify podría ser lo de la opción de recomendaciones :o (nunca he trabajado con recomendaciones eso si jeje), lo del análisis de sentimiento lo veo más complicado, me hace más sentido para letras de canciones, pero para listas no sé si funcione muy bien (salvo que haya que darse la lata de antar etiquetando, para lo cual igual hay que tener cultura musical jajaja)

GianniCatBug commented 2 years ago

Este dataset lo encontré bueno en cuanto a cantidad de registros.

De este set de datos me surgió la idea que se puede hacer algo como (más que el típico clasificador de sentimiento (+) (-)), de tomar todos los comentarios malos (con mal rating) y clusterizarlos, a ver si se puede identificar "grupos de reclamos", cosa de luego derivarlos, ya que normalmente en los sistemas de comentarios de aplicaciones no hay una categorización explícita para asegurar que cada comentario negativo sea mejor atendido. Lo malo es que los comentarios están en inglés.

GianniCatBug commented 2 years ago

@alcazar90 @CHSTR @dncortez @Callpiwix Me anoté en el grupo 1 (Gianina Salomó López) en el enlace que dejaron en ucursos para la inscripción de los grupos https://docs.google.com/spreadsheets/d/17W9PdFfKWdqQCpi8RjRlPDTxyHgD945Hr0a7Jpgm21U/edit#gid=0

Callpiwix commented 2 years ago

LIsto yo tmb !

alcazar90 commented 2 years ago

Este dataset lo encontré bueno en cuanto a cantidad de registros.

De este set de datos me surgió la idea que se puede hacer algo como (más que el típico clasificador de sentimiento (+) (-)), de tomar todos los comentarios malos (con mal rating) y clusterizarlos, a ver si se puede identificar "grupos de reclamos", cosa de luego derivarlos, ya que normalmente en los sistemas de comentarios de aplicaciones no hay una categorización explícita para asegurar que cada comentario negativo sea mejor atendido. Lo malo es que los comentarios están en inglés.

Igual me tinca la idea, mi único punto es si nos quedamos muy corto con las 5 columnas. De todas maneras, la columna con los comentarios vale por varias.

Podríamos hacer unos análisis exploratorios rápidos sobre algunos dataset que nos interesen, como la data de citas propuestas por @GianniCatBug y alguna otra en kaggle.

Si no sabían, es posible descargar y cargar los datos de kaggle directamente desde Google Colab. Uno puede bajar un archivo .json con las credenciales desde Kaggle, llamarlo desde Colab, y trabajar desde ahí. En la tarde haré un ejemplo y les comparto el link por acá:

CHSTR commented 2 years ago

Me tinca bastante lo de spotify. Son hartas filas con varias columnas, sumando el dataset complementario que te da info sobre el audio (hasta podríamos utilizar la api de spotify para obtener más datos sobre la pista: https://developer.spotify.com/documentation/web-api/reference/#/operations/get-audio-analysis).

También enconté un dataset de "Google Play Store Apps" que contiene la siguiente información:

Detalle de las columnas:

 #   Column             Dtype  
---  ------             -----  
 0   App Name           object 
 1   App Id             object 
 2   Category           object 
 3   Rating             float64
 4   Rating Count       float64
 5   Installs           object 
 6   Minimum Installs   float64
 7   Maximum Installs   int64  
 8   Free               bool   
 9   Price              float64
 10  Currency           object 
 11  Size               object 
 12  Minimum Android    object 
 13  Developer Id       object 
 14  Developer Website  object 
 15  Developer Email    object 
 16  Released           object 
 17  Last Updated       object 
 18  Content Rating     object 
 19  Privacy Policy     object 
 20  Ad Supported       bool   
 21  In App Purchases   bool   
 22  Editors Choice     bool   
 23  Scraped Time       object 

Además se podrían descargar las reviews de las distintas aplicaciones (https://github.com/facundoolano/google-play-scraper#reviews) y realizar análisis sobre ellas.

Reviews:

  data: [
    {
      id: 'gp:AOqpTOFmAVORqfWGcaqfF39ftwFjGkjecjvjXnC3g_uL0NtVGlrrqm8X2XUWx0WydH3C9afZlPUizYVZAfARLuk',
      userName: 'Inga El-Ansary',
      userImage: 'https://lh3.googleusercontent.com/-hBGvzn3XlhQ/AAAAAAAAAAI/AAAAAAAAOw0/L4GY9KrQ-DU/w96-c-h96/photo.jpg',
      date: '2013-11-10T18:31:42.174Z',
      score: 5,
      scoreText: '5',
      url: 'https://play.google.com/store/apps/details?id=com.dxco.pandavszombies&reviewId=Z3A6QU9xcFRPRWZaVHVZZ081NlNsRW9TV0hJeklGSTBvYTBTUlFQUUJIZThBSGJDX2s1Y1o0ZXRCbUtLZmgzTE1PMUttRmpRSS1YcFgxRmx1ZXNtVzlVS0Zz'
      title: 'I LOVE IT',
      text: 'It has skins and snowballs everything I wanted its so cool I love it!!!!!!!!',
      replyDate: '2013-11-10T18:31:42.174Z',
      replyText: 'thanks for playing Panda vs Zombies!',
      version: '1.0.2',
      thumbsUp: 29,
      criterias: [
        {
          criteria: 'vaf_games_simple',
          rating: 1
        },
        {
          criteria: 'vaf_games_realistic',
          rating: 1
        },
        {
          criteria: 'vaf_games_complex',
          rating: 1
        }
      ]
    },
GianniCatBug commented 2 years ago

@alcazar90 claro, ahi la idea es trabajar con la matriz dispersa de la bolsa de palabras :) . Igual el set de @CHSTR está mejorcito jejeje. Quizá podríamos preguntarle a la profe por esas dos opciones y ver si nos orienta? O alguna otra más, no sé jeje

alcazar90 commented 2 years ago

Lo bueno de la data de Spotify es que nos podemos ir en la deep shit sí queremos. Desde clasificar listas por genero (tenemos las canciones y podemos cruzar los géneros de cada canción que conforma la lista), recomendar listas parecidas, y en base a features de las canciones que los componen que se pueden descargar del sitio que encontró @CHSTR (e.g. no solo rock, si no rock - high pitch o rock - con acoustic altos).

Podemos agregar también la dimensión de texto @GianniCatBug: cruzando los lyrics de todas las canciones de una lista, y analizar sentimientos con eso tb, deben haber para letras en ingles también bastantes diccionarios de sentimiento.

Callpiwix commented 2 years ago

Encuentro que esta buenísimo tmb, en particular me gusta la idea de clasificar la música según genero y recomendar listas, incluso creo que sirve para hacerlo en su usuario personal de Spotify jaja dado que la API es gratuita. Creo que para el viernes debemos definir que tema tomar, como les tinca que vayamos concretando?

GianniCatBug commented 2 years ago

Por mi si :), mi único tema con spotify es que mi cultura musical es nula jejeje. Se me hace que igual hay que manejarse para poder clasificar los géneros.

alcazar90 commented 2 years ago

Me gusta que vaya quedando registro de los aspectos importantes, creo que es una bitácora de por sí para los que van a evaluar. Sin embargo, para comunicación rápida necesitamos Discord o Telegram, dado que se ha demorado la creación de los canales de Discord, me pueden escribir por DM sus números y creamos un grupo en telegram. @GianniCatBug @CHSTR @dncortez @Callpiwix

dncortez commented 2 years ago

@alcazar90 @GianniCatBug @CHSTR @Callpiwix Buenas! Ahora si me estoy enchufando. Las semanas para mi son mas dificiles :c -El de twitter siento que se pueden hacer muchas preguntas pero el tema es que es algo que ya se ha hecho mucho (tengo la impresión) -El de las apps de google play son bastantes datos pero no se me ocurre bien que preguntas podría hacer. -El de spotify esta super bueno. Al tener datos de 2 BBDD distintas aplicaríamos hartas técnicas del ramo y tendríamos harto que "limpiar", asi que eso igual es bueno encuentro yo, encontrarse con problemas y tener que solucionarlos. Las preguntas de investigacion igual se me ocurren varias: Que géneros son mas populares, Que duraciones son mas optimas, Lo de si bailable, fuerte, instrumental o acustico producen más o menos popularidad, podemos hacer prediccion, regresion, clustering, etc. Hay mucho que se puede ver ahi y me gusta. Mi único tema: el complementario (de donde sacaríamos los datos más importantes) son datos reales? O predichos? Como no sale de donde salen los datos (y soy un poco nuevo en esto) no sé. Si son datos reales yo iría por este. Si los obtuvieron por ML quizá podría ser problemático. -El de apps de citas también me parece muy bueno. Hay muchas preguntas que pueden hacerse, comparar las diferentes apps, las palabrasmas usadas para dar reviews negativos, las mas usadas para dar reviews positivos, etc. Como tiene fecha también podrían verse tendencias en el tiempo. Lo único cuático es que aparezcan los nombres de las personas D: . Igual con eso podemos ver el género y ver tendencias ahí. Me parece muy intereasnte.

Como vengo de una carrera científica no puedo evitar evaluar cada dataset según la pregunta de investigación que podría hacerse. Yo me iría por alguno de los últimos dos, el de apps de citas y Spotify. Igual por lo que he leído parece que a la mayoría le tincó más el de Spotify.