Παράδειγμα


  1. Από τη σελίδα κατεβάστε το βιβλίο Alice in Wonderland by Lewis Carol (http://www.gutenberg.org/ebooks/11, Plain text UTF-8). Γράψτε ένα πρόγραμμα το οποίο μετρά τις συχνότητες εμφάνισης των λέξεων στο κείμενο. Για τις 25 πρώτες σε συχνότητα εμφάνισης λέξεις και για άλλες 25 με την υψηλότερη συχνότητα που αρχίζουν με το γράμμα c (δηλαδή σύνολο 50 λέξεις), τυπώστε τη λέξη το πλήθος των εμφανίσεων της λέξης την τάξη της λέξης στη λίστα όλων των λέξεων, την πιθανότητα εμφάνισης των λέξεων και το γινόμενο της τάξης (rank) επί την πιθανότητα. Τυπώστε επίσης το συνολικό πλήθος των λέξεων καθώς το πλήθος των μοναδικών λέξεων. Ελέγξτε αν το κείμενο ικανοποιεί τον νόμο του Zipf.
  2. Υποθέστε ότι κατασκευάζοντας ένα ανεστραμμένο αρχείο αγνοείτε όλες τις λέξεις οι οποίες εμφανίζονται λιγότερες από 5 φορές. Σύμφωνα με το νόμο του Zipf, τι ποσοστό των συνολικών λέξεων της συλλογής δεν τα εισαγάγουμε στα ευρετήρια; Ποιό είναι το ακριβές ποσοστό των λέξεων στη περίπτωση του κειμένου «Alice in Wonderland»;
Λύση
Το πλήθος των λέξεων εξαρτάται από τη διαδικασία tokenization και τις υποθέσεις που έχει κάνει ο καθένας όσον αφορά «τι είναι λέξη». Επομένως θα υπάρχει με μικρή σχετική διαφορά στο πλήθος των λέξεων το οποίο όμως δεν αλλοιώνει τα στατιστικά αποτελέσματα στη συνέχεια. Επομένως δοθέντος ενός αλγορίθμου αναγνώρισης λέξεων (tokenizer) έχουμε ότι: To συνολικό πλήθος των λέξεων στο παράμύθι μας είναι Ν=29981 Με βάση αυτή τη λίστα των λέξεων υπολογίζονται όλα τα υπόλοιπα. Το πλήθος των διακριτών λέξεων είναι 3005. Οι 25 πρώτες σε συχνότητα εμφάνισης λέξεις είναι:

first50


Οι 25 πρώτες σε συχνότητα εμφάνισης λέξεις που αρχίζουν από c είναι:

c50


Έλεγχος αν πληρείται ο νόμος του Zipf. O νόμος του Zipf μας λέει ότι σε μια γλώσσα για κάθε λέξη ισχύει ότι το γινόμενο του rank της λέξης επί το πλήθος των εμφανίσεων της λέξης είναι σταθερό δηλαδή:
rf



distribution


Όπως είδαμε από τη θεωρεία μια περισσότερο ακριβής διατύπωση του νόμου του Zipf περιγράφεται από την σχέση:
rmf

Το m και το k θα προκύψουν από την λίστα των 29981 λέξεων που έχουμε με τις συχνότητές τους.

zipf


Γραφική παράσταση των 29981 ζευγών (log(r), lof(f)) και προσέγγισή τους από την ευθεία
y

(το διάγραμμα και η εξίσωση της ευθείας που προσεγγίζει τα σημεία έγιναν με το excel)
logf

Από την τελευταία σχέση αν υποθέσουμε ότι μια λέξη είναι η εκατοστή στη σειρά τότε θα εμφανίζεται:
f

φορές. Από το αρχείο Alice_words, με όλες τις λέξεις, παρατηρούμε ότι η εκατοστή στη σειρά λέξη εμφανίζεται 52 φορές (θα μπορούσαμε να πούμε είναι μια καλή προσέγγιση). 2. Σύμφωνα με το αρχείο Alice_words.xls το πραγματικό πλήθος των λέξεων που εμφανίζονται 1, 2, 3 και 4 είναι 2238. 1331 + 467 + 264 + 176 = 2238 δηλαδή το 2238/3005=74.48% των λέξεων εμφανίζονται λιγότερο από 5 φορές. Η εκτίμηση με βάση το νόμο του Zipf είναι: Το πλήθος των λέξεων που εμφανίζονται μία μόνο φορά είναι :
n1

Γενικά οι λέξεις που εμφανίζονται f φορές είναι:
nk

Οπότε έχω:

last


Αρα 1838 κείμενα εμφανίζονται λιγότερες από 5 φορές σύμφωνα με το νόμο του Zipf. Αυτό είναι το 1838/3005=61.16%