Compito 2: Soluzione 1 Spettri di frequenze [2 punti] Parto dai files tokenizzati, ma si potrebbe partire gia' dalle liste di frequenza. Brown: $ sort brown.tok | uniq -c | gawk '{print $1}' | sort | uniq -c |\ sort -nk2 > brown.sp Novelle: $ sort nov.tok | uniq -c | gawk '{print $1}' | sort | uniq -c |\ sort -nk2 > nov.sp (L'ultimo sorting -- per livelli di frequenza -- non e' strettamente necessario, ma estremamente utile per analizzare i dati.) La distribuzione dei livelli di frequenza nei due corpora NON segue un andamento normale. Troviamo invece un andamento in cui i livelli di frequenza piu' bassi hanno una frequenza alta, che diminuisce sistematicamente man mano che ci spostiamo verso livelli di frequenza piu' alti. 2 Frequenza degli n-grammi [2 punti] Quante parole (unigrammi), bigrammi e trigrammi capitano una sola volta nel Brown corpus? E in proporzione (rispetto al numero totale di parole, bigrammi e trigrammi distinti)? Se non le ho gia', creo liste di frequenza appropriate (che possono anche essere create in piu' o meno passi di quelli che seguo io qui, e ordinate per frequenza): $ sort brown.tok | uniq -c > brown.uni.fq $ tail +2 brown.tok | paste brown.tok - | gawk 'NF==2' > brown.bigrams $ sort brown.bigrams | uniq -c > brown.bi.fq $ tail +3 brown.tok | paste brown.bigrams - | gawk 'NF==3' > brown.trigrams $ sort brown.trigrams | uniq -c > brown.tri.fq Uni/bi/trigrammi che capitano una sola volta: $ gawk '$1==1' brown.uni.fq | wc 22266 44532 396979 $ gawk '$1==1' brown.bi.fq | wc 349565 1048695 7635592 $ gawk '$1==1' brown.tri.fq | wc 774041 3096164 20155816 Numero di uni/bi/trigrammi distinti: $ wc brown.uni.fq brown.bi.fq brown.tri.fq 49613 99226 852803 brown.uni.fq 450778 1352334 9634743 brown.bi.fq 841615 3366460 21710698 brown.tri.fq Proporzioni: 22266/49613 = 0.44879 349565/450778 = 0.77547 774041/841615 = 0.91970 Notate come la proporzione di n-grammi a frequenza 1 cresce con n: nel caso dei trigrammi sono piu' del 90% degli n-grammi totali! [Notate anche come il valore che ho ottenuto per gli unigrammi e' diverso da quello che avevo ottenuto per il compito scorso: questo e' dovuto al fatto che ho usato comandi di tokenizzazione diversi.] Quante parole, bigrammi e trigrammi capitano 10 o piu' volte nel Brown corpus? E in proporzione? $ gawk '$1>=10' brown.uni.fq | wc 8345 16690 133207 $ gawk '$1>=10' brown.bi.fq | wc 10595 31785 191515 $ gawk '$1>=10' brown.tri.fq | wc 2689 10756 56997 [O anche: $1>9] Proporzioni: 8345/49613 = 0.16820 10595/450778 = 0.02350 2689/841615 = 0.00319 Solo per una percentuale bassa di parole e bassissima di bigrammi e trigrammi abbiamo 10 o piu' occorrenze nel corpus. 3 Frequenza media [2 punti] Creo i sottocorpora: $ head -200000 brown.ran.tok > brown.ran.200K $ head -400000 brown.ran.tok > brown.ran.400K $ head -600000 brown.ran.tok > brown.ran.600K $ head -800000 brown.ran.tok > brown.ran.800K La frequenza media e' data dal numero dei tokens diviso per il numero dei types. I tokens, ovviamente, saranno 200,000, 400,000, 600,000 e 800,000. Per calcolare il numero di types (parole distinte) creo liste di frequenza e ne conto il numero di righe (in realta', non servirebbe -c, visto che non mi serve sapere quante volte ciascun type capita): $ sort brown.ran.200K | uniq -c | wc 22602 45204 378418 $ sort brown.ran.400K | uniq -c | wc 32199 64398 544973 $ sort brown.ran.600K | uniq -c | wc 39114 78228 666583 $ sort brown.ran.800K | uniq -c | wc 44711 89422 765631 Dunque le frequenze medie sono: 200000/22602 = 8.84877 400000/32199 = 12.42274 600000/39114 = 15.33977 800000/44711 = 17.89268 ... a cui aggiungiamo la frequenza media per il corpus intero, riportata nell'handout: 1008057/49613 = 20.32 Osserviamo dunque che la frequenza media cresce sistematicamente con le dimensioni del corpus: piu' grande e' il corpus, piu' alta e' la frequenza media. Notate come i sottocorpora sono comunque formati da parole del Brown, e dunque questa crescita della frequenza media non puo' essere dovuta a differenze di "genere", "stile", ecc.: essa dipende semplicemente dall'aumento delle dimensioni dei vari sottocorpora. Lo studioso che conclude che un corpus di dimensioni piu' ridotte deve essere di un autore diverso da quello di un corpus di dimensioni piu' ampie semplicemente perche' nel primo corpus la frequenza media e' piu' bassa sta traendo una conclusione ingiustificata. Infatti, come abbiamo appena visto, ci aspettiamo che un corpus di dimensioni piu' ridotte abbia comunque una frequenza media piu' bassa, indipendentemente dal fatto che differisca dal corpus piu' ampio dal punto di vista del genere, dello stile, ecc.