Strumenti Utente

Strumenti Sito


frequenze_cumulate_per_parole_tipo_e_parole_unita

Frequenze cumulate per parole tipo e parole unità

Il codice seguente crea un grafico delle frequenze cumulate per parole tipo e parole unità analogo a quello riportato in Lenci et al. (p. 136). In verde è tracciata la curva che indica la percentuale di vocabolario rappresentata da parole tipo con frequenza minore o uguale a x; in blu è tracciata la curva che indica la percentuale di testo costituita da parole tipo con frequenza minore o uguale a x. I valori x, rappresentati sull'asse delle ascisse, sono riportati in scala logaritmica.

frequenze_cumulate.py
import re
import matplotlib.pyplot as plt
 
#Preparazione del testo
f=open('testi/collodi_pinocchio.txt', mode='r', encoding='iso-8859-1')
testo=f.read()
testo=testo[1704:]
testo=re.sub("'","' ", testo)
testo=re.sub('[\.,;:\-?!]{1}','',testo)
testo=testo.lower()
testo=testo.split()
 
#Elaborazione dei dati
fd=[testo.count(i) for i in set(testo)]
fd.sort(reverse=True)
fmax=fd[0]
lista_classi=range(1,fmax+1)
classi_frequenza=[[i for i in fd if i<= k] for k in lista_classi]
V=len(set(testo))
T=len(testo)
percV=[100*len(classe)/V for classe in classi_frequenza]
percT=[100*sum(classe)/T for classe in classi_frequenza]
 
# Creazione del grafico
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.set_xscale('log')
ax.plot(lista_classi,percV,'g-')
ax.plot(lista_classi,percV,'gd')
ax.plot(lista_classi,percT,'b-')
ax.plot(lista_classi,percT,'bd')
ax.grid()
plt.show()

Il grafico generato dovrebbe avere questo aspetto:

frequenze_cumulate_per_parole_tipo_e_parole_unita.txt · Ultima modifica: 2021/06/02 22:12 da 31.156.199.251