#!/usr/bin/python # ---------------------------------------------------------------------------- # program: freq.py # auteur: felipe@ift2030 # date: 2/09/2002 # # comment: mon premier programme python # c'est etonnement agreable (ca ressemble en mieux a Tcl) # objet: la version python du calul des frequences des mots lus # sur l'entree standard # note: le seul programme plus court est celui ecrit en csh # ici tout est global # # Pas de compilation # Exemple de lancement: cat corpus-1 | freq.py # ---------------------------------------------------------------------------- from sys import stdin # on a besoin de lire depuis l'entree standard from sys import stderr # on a besoin d'ecrire sur l'erreur standard # ---------------------------------------------------------------------------- # quelques variables globales # ---------------------------------------------------------------------------- words = {} # dictionnaire vide sent = 0 # nb de phrases mot = 0 # nb de mots lus # ---------------------------------------------------------------------------- # agit comme un main (il n'y en a pas en Python) # ---------------------------------------------------------------------------- # lecture depuis stdin for line in stdin.readlines(): key = line[:-1] # sauf le \n final (peut ne pas marcher) if key == "{sent}": # si un marqueur de fin de phrase sent = sent + 1 else: words[key] = words.get(key,0)+1 # ajout/test en un seule instruction ## elif words.has_key(key): # ecriture plus classique ## words[key] = words[key] + 1 # key existe deja ## else: ## words[key] = 1 # nouveau mot # tri selon la frequence en creant une nouvelle structure pairs = map(None, words.values(), words.keys()) pairs.sort() # affichage final for y,x in pairs: mot = mot + y print x,'\t',y # peanuts stderr.write(`sent` + " phrases lues, " + `mot` + " mots, " + `len(words)` + " formes\n")