venerdì 18 dicembre 2015

Contare le ricorrenze delle parole di un testo

Immaginiamo di dover sapere quante volte le parole sono state ripetute in un testo, ad esempio nella frase "Tre tigri contro tre tigri" abbiamo che la parola tre e la parola tigri sono ripetute due volte.
In livecode fare il conteggio delle ripetizioni di tutte le parole è velocissimo, basta il seguente codice:

repeat for each word tWord in testo     
   add 1 to conteggio[tWord]
end repeat


in questo modo otteniamo un array dove ogni elemento è individuato dalla parola e contiene il numero di ripetizioni. Questo conto è velocissimo, per tutta la divina commedia livecode impiega meno di 1 secondo!
Sempre utilizzando la frase "Tre tigri contro tre tigri", otterremo:
  • conteggio["tre"] = 2
  • conteggio["tigri"] = 2
  • conteggio["contro"] = 1
Il seguente codice prende il testo contenuto in un campo e mette il conteggio in un secondo campo, ordinandolo per numero di ricorrenze:



   repeat for each word tWord in field 1   
      add 1 to conteggio[tWord]
   end repeat
   combine conteggio using return and ":"
   set itemdel to ":"
   sort lines of conteggio numeric by item 2 of each
   put conteggio into field 2



Ad esempio per la divina commedia abbiamo: