Código para Zipf’s Law:
def analisis_palabras(archivotxt):
import re
from collections import Counter
# leemos archivo de texto
file = open(archivotxt, ‘r’, encoding=”utf8″)
# convertimos a minusculas
text = file.read().lower()
file.close()
# removemos cosas que no sean letras
text = re.sub(r”\r\n”, ” “, text)
text = re.sub(‘[^a-z\ \']+’, “”, text)
listado_de_palabras = list(text.split())
counts = Counter(listado_de_palabras)
labels, values = zip(*counts.items())
# ordenamos en orden descendente
indSort = np.argsort(values)[::-1]
# reordenamos
labels = np.array(labels)[indSort]
values = np.array(values)[indSort]
indexes = np.arange(len(labels))
N = len(values)
idx = np.linspace(1,N,N)
plt.figure(figsize = (10.5, 7.5))
# plt.plot(idx, values)
plt.plot(np.log(idx), np.log(values),’k.’)
# plt.loglog(idx, values,’k.’)
plt.grid(‘on’)
return idx, values, text