Skip to content

A Python algorithm for calculating the frequency of letters in a text and other things.

License

Notifications You must be signed in to change notification settings

ocrim1996/TextFrequencyAnalysis

Repository files navigation

TextFrequencyAnalysis

Per svolgere questo esercizio sono state utilizzate le seguente librerie (che devono essere installate, prima di eseguire il codice):

  • pandas
  • matplotlib

Una volta eseguito il codice, l’utente può scegliere tra una lista di funzioni disponibili che vengono stampate a schermo, semplicemente inserendo il numero corrispondente.

Schermata 2021-04-01 alle 15.46.48.png

Per semplicità il calcolo della distribuzione empirica e dell’indice di coincidenza e dell’entropia della distribuzione degli m-grammi è stato accorpato in un’unica funzione tra quelle che possono essere scelte dall’utente. Questo poichè per il calcolo dell’indice di coincidenza e dell’entropia è necessaria la distribuzione empirica.

1. Istogramma della Frequenza delle 26 lettere

Il programma prende in ingresso un file txt passatogli dall’utente (deve essere inserito il path) tramite la funzione Python:

def get_text_file():
	file_name = input("...")
	'''some code'''

Il testo del file viene processato e viene effettuato il conteggio delle occorrenze di ciascuna lettera dell’alfabeto.

Il dizionario creato dalle frequenze viene utilizzato per generare un’istogramma tramite le funzioni della libreria matplotlib, in cui sulle ascisse sono riportate le lettere in ordine alfabetico invece sulle ordinate è riportata la relativa frequenza.

La funzione nel codice che genera l’istogramma è:

def create_frequencies_histogram(data):
	counts = Counter(data)
	'''some code'''

In particolare nell’esercizio proposto era richiesto di mostrare i risultati ottenuti per il primo capitolo di “Moby Dick”. L’istogramma risultante è dunque il seguente:

Schermata 2021-03-29 alle 15.02.09.png

2. Distribuzione Empirica dei m-grammi

Il programma prende in ingresso un file txt passatogli dall’utente (deve essere inserito il path) e da esso vengono generati tutti gli m-grammi tramite la seguente funzione:

def generate_grams(text, m):
	'''some code'''

Una volta trovato gli m-grammi, è possibile calcolare la distribuzione empirica dei m-grammi, definita come segue:

equation

Nel codice la funzione che calcola tale distribuzione empirica dei m-grammi è:

def get_empirical_distribution(text, m):
	'''some code'''

3. Indice di Coincidenza ed Entropia della distribuzione dei m-grammi

Per quanto riguarda l’indice di coincidenza delle distribuzioni dei m-grammi è possibile notare che il testo analizzato è sufficientemente lungo tale da definire la formula come segue:

equation

Nel codice la funzione che calcola tale indice di coincidenza delle distribuzioni dei m-grammi è:

def get_coincidence_index(empirical_distribution):
	'''some code'''

Invece per quanto riguarda l’entropia delle distribuzioni dei m-grammi la formula utililizzata è quella dell’entropia di Shannon:

equation

E nel codice la funzione che calcola tale entropia delle distribuzioni dei m-grammi è:

def get_entropy(empirical_distribution):
	'''some code'''

Run

To run the project:

python3 TextFrequencyAnalysis.py

About

A Python algorithm for calculating the frequency of letters in a text and other things.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages