from numpy import log2 import pickle import matplotlib.pyplot as plt #Funzioni della teoria dell'informazione I = lambda p: -log2(p) #informazione H = lambda x: sum(p*I(p) for p in x if p>0) #entropia def DP(x): #distribuzione di probabilità l=len(x) s=set(x) return [x.count(i)/l for i in s] #Funzioni relative agli NGRAMMI def NGRAMMI(n,testo): l=len(testo) segnaposti=['$$$']*(n-1) testo=segnaposti+testo return [tuple(testo[i:i+n]) for i in range(l)] with open('Testi/collodi_pinocchio.pkl','rb') as f: testo=pickle.load(f) H1= H(DP(testo)) print(H1) H2= H(DP(NGRAMMI(2,testo))) print(H2) H3= H(DP(NGRAMMI(3,testo))) print(H3) H4= H(DP(NGRAMMI(4,testo))) print(H4) plt.bar(range(1,4+1),[H1,H2,H3,H4]) plt.show()