Read Me
YA BASTA!
YA BASTA! (Yet Another BAsic Scraper and Text Analysis!) è un sw applicativo di tipo desktop grafico per
ambiente windows(dovrebbe funzionare anche su altri OS ma non è stato testato!).
YA BASTA! permette lo scraping di testi di canzoni di gruppi/cantanti dal sito AZLyrics e la successiva analisi
del testo delle canzoni scaricate. Prima di far partire l'applicazione leggere le operazioni di configurazione.
Per farlo partire da console dei comandi digitare:
python.exe yabasta.py
Il software è scritto in Python ed R, in cui i moduli R vengono chiamati come sottoprocessi dal codice R.
Sono presenti due sezioni in tale sw:
* sezione Web Scraper;
* sezione Text Lyrics Analysis.
Allo stato attuale nel software è stato precaricato il file scaricato sui rollingstones, su cui è possibile eseguire tutte le analisi
sul testo. Se viene usato il web scraper viene sovrascritto il file analisi/LastOne.txt con il gruppo/cantante configurato per lo scraping.
Se si vuole ripristinare il gruppo rolling stones già scaricato inserire nel file analisi/LastOne.txt la stringa AzLyricsTheRollingStones.csv
senza spazi ne righe vuote.
* Web Scraper (Features)
** Possibilità di scelta del sito(al momento disponibile AZLyrics)
** Cantante (RollingStones, Beatles, Who, <campo libero>)
** Numero testi canzoni da scaricare
** Per ogni lyrics scaricato viene inserito in un file csv (AZLyrics<Cantante><NumeroTesti>.csv)
il testo, il nome della canzone, l'album, l'anno e hyperlink di scaricamento
** Eliminazione ridondanze: la stessa canzone non viene scaricata due volte
** Rilevazione Captcha: utente viene avvertito della presenza di Captcha
** Rilevazione di IP bannato: utente viene avvertito di cambiare IP (tramite riavvio router)
* Text Lyrics Analysis (Features)
** Analisi preliminare: Misure Lessicometriche(Type, Token, TTR, Hapax), Scatterplot parole più frequenti
con intervallo ranking di frequenza configurabile, Salvataggio del vocabolario nella directory delle
analisi nella forma vocabolario.csv;
** Wordcloud, TextCloud, BarPlot: intervallo ranking di frequenza configurabile, normalizzazione semplice
e morfologica (lemming, stemming, both) disponibile; i grafici generati sono disponibili nella directory
delle analisi;
** Analisi delle corrispondenze lessicali: acl esguita sul metadato anno; possibilità di configurare fino
a quattro periodi nella forma periodo1;..,periodo4 dove periodox è nella forma Label, (da)aaaa--aaaa(a)
es: albori, 1960-1970; crea gruppo delle canzoni composte tra il 1960 ed il 1970, gruppo indicato con
etichetta albori; è data anche la possibilità di studiare la corrispondenza lessicale tra i gruppi e
le parole aventi una minima frequenza totale nel corpus; i grafici generati sono disponibili nella directory
delle analisi così come il file delle specificità(quanto è specifica una parola rispetto ad un periodo);
se non vengono configurati i periodi vengono configurati il default valido per i RollingStones:
Albori,1960-1970;SuccessoRock,1970-1980;NuoveTendenze,1980-1995;Today,1995-2020;
** Analisi latente semantica: vengono generati due grafici feature e docs, nel primo viene mostrata la ASL delle
parole nel secondo viene mostrata la ASL dei periodi analizzati; è possibile configurare sia il numero di parole
da analizzare in ASL fissando il ranking massimo delle parole da analizzare sia i periodi da analizzare;
possibilità di configurare fino a quattro periodi nella forma periodo1;..,periodo4 dove periodox è nella forma
Label, (da)aaaa--aaaa(a);i grafici generati sono disponibili nella directory delle analisi;
se non vengono configurati i periodi vengono configurati il default valido per i RollingStones:
Albori,1960-1970;SuccessoRock,1970-1980;NuoveTendenze,1980-1995;Today,1995-2020;
** Cluster: possibilità di configurare fino a quattro periodi nella forma periodo1;..,periodo4 dove periodox
è nella forma Label, (da)aaaa--aaaa(a) su cui basare la acl da clusterizzare; vengono clusterizzate le parole del
corpus che hanno una frequenza maggiore di min frequenza configurabile; sono disponibili tre tipi di
grafici: dendogramma, clusterizzazione e word cluster; word cluster riporta in una word cloud le parole relative
ad un periodo configurato dove il periodo è riportato all'interno della nuvola come parola a massima frequenza;
i grafici generati sono disponibili nella directory delle analisi; all'interno della directory analisi vengono
inoltre riportati il file della percentuale di composizione del cluster rispetto ai periodi configurati ed il
file contenente le parole che appartengono ai cluster formati;
se non vengono configurati i periodi vengono configurati il default valido per i RollingStones:
Albori,1960-1970;SuccessoRock,1970-1980;NuoveTendenze,1980-1995;Today,1995-2020;
** Serie storica dell'analisi della Sentiment del testo delle canzoni: viene calcolata la sentiment delle
singole canzoni, i valori per anno vengono raggruppati eseguendo la media;
Sul grafico viene disegnata la retta di regressione e la LOESS per andamenti locali;i grafici generati sono
disponibili nella directory delle analisi;
* Operazione di configurazione (Windows Only):
** Inserire path di Rscript in analisi/Command.txt
** Inserire path librerie R in analisi/RLibrary.txt
** stringa di default per i periodi ACL, ASL e Cluster quando non vengono configurati:
Albori,1960-1970;SuccessoRock,1970-1980;NuoveTendenze,1980-1995;Today,1995-2020;
* Descrizione dei file del sw YA BASTA!:
** README.txt: questo file
** analisi/Command.txt: contiene il path di Rscript
** analisi/RLibrary.txt: contiene il path alle librerie R
** analisi/LastOne.txt: contiene l'ultimo cantante/gruppo scaricato oggetto della text analysis seguente
** analisi/AzLyricsTheBeatles.csv: contiene lo scraping delle canzoni(112) dei RollingStones; per ogni canzone viene
riportato il titolo, l'album, l'anno di produzione, il testo ed il link da cui sono state ottenute le precedenti
informazioni
** webscraping.py: è il modulo principale del sw in cui viene definita l'interfaccia grafica, il web scraper e
l'interfaccia verso le funzioni wrapper per i comandi di analisi del testo scritti in R;
** util.py: wrapper per i comandi di analisi del testo scritti in R;
** analisi/createDBandPlot.R: codice per la creazione di un db di parole, misure lessicometriche, ed il
vocabolario delle parole del corpus
** analisi/createWordCloud.R: codice per la creazione di una text word cloud
** analisi/createTextWordCloud.R: codice per la creazione di una text word cloud
** analisi/createBarPlot.R: codice per la creazione di un barplot parole/frequenza del corpus
** analisi/createACL.R: analisi delle corrispondenze lessicali
** analisi/createASL.R: analisi semantica lesssicale
** analisi/createCluster.R: cluster analysis
** analisi/createSentimentTS.R: contiene la sentiment analysis