# -*- coding: latin-1 -*- def lit_fichier (nom) : """lit un fichier texte et retourne une chaine de caracteres incluant tout son contenu""" f = open (nom, "r") l = f.readlines () f.close () l = [ i.strip (" \n\r") for i in l ] return "".join (l) def lit_url (nom) : import urllib f = urllib.urlopen (nom) res = f.read () f.close () return res.replace ("\n", "").replace ("\r", "") def compte_lettre1 (texte) : texte = texte.upper () res = { } for c in texte : if not ("A" <= c <= "Z") : continue if c not in res : res [c] = 1 else : res [c] += 1 s = sum (res.values ()) if s > 0 : for k in res : res [k] = float (res [k]) / float (s) return res def compte_lettre2 (texte) : texte = texte.upper () res = { } for c in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" : #for i in xrange (32,256) : #c = chr (i) res [c] = texte.count (c) s = sum (res.values ()) if s > 0 : for k in res : res [k] = float (res [k]) / float (s) return res def compte_lettre (texte) : res = compte_lettre1 (texte) res = compte_lettre2 (texte) return res if False : texte = lit_url ("http://www.gutenberg.org/dirs/etext04/8ldrj10.txt") def compteprofile () : for i in range (0,100) : compte_lettre (texte) import profile profile.run ('compteprofile ()') import sys sys.exit (0) def langue_lettre (texte) : if "http" in texte : s = lit_url (texte) else : s = lit_fichier (texte) s = s.replace ("www", "") s = s.replace ("http", "").replace (".htm", "") s = s.replace ("href", "") c = compte_lettre (s) return c.get ("W", 0.0), c.get ("H", 0.0) def langue_lettre4 (texte) : if "http" in texte : s = lit_url (texte) else : s = lit_fichier (texte) s = s.replace ("www", "") s = s.replace ("http", "").replace (".htm", "") s = s.replace ("href", "") c = compte_lettre (s) return c.get ("H", 0.0), c.get ("U", 0.0), c.get ("W", 0.0), c.get ("Y", 0.0) def curve (li) : cx,cy = [], [] for l in li : #print "processing ", l x,y = langue_lettre (l) print len (cx), "-", x,y,l cx.append (x) cy.append (y) print cx, cy return cx,cy def curve4 (li) : all = [] for l in li : #print "processing ", l x,y,z,t = langue_lettre4 (l) all.append ( [x,y,z,t] ) print len (all), "-", l return all if False : #s2 = lit_fichier ("hugo_the_man_who_laugh.txt") #c2 = compte_lettre (s2) #s3 = lit_fichier ("hugo_legend_siecle_francais.txt") #c3 = compte_lettre (s3) # le dernier jour d'un condamné s1 = lit_url ("http://www.gutenberg.org/dirs/etext04/8ldrj10.txt") c1 = compte_lettre (s1) # the man who laughs s2 = lit_url ("http://www.gutenberg.org/files/12587/12587-8.txt") c2 = compte_lettre (s2) car = c1.keys () car.sort () for k in car : print k, " : ", "% 2.2f" % (c1 [k] * 100), "%", print " % 2.2f" % (c2 [k] * 100), "%" if False : fr = [] en = [] fr.append ("http://www.gutenberg.org/dirs/etext04/8ldrj10.txt") en.append ("http://www.gutenberg.org/files/12587/12587-8.txt") fr.append ("http://www.gutenberg.org/files/17489/17489-8.txt") en.append ("http://www.gutenberg.org/dirs/etext98/2ws2610.txt") fr.append ("http://www.gutenberg.org/files/2998/2998-8.txt") fr.append ("http://www.gutenberg.org/dirs/etext03/zadig10.txt") en.append ("http://www.gutenberg.org/files/4300/4300-8.txt") en.append ("http://www.gutenberg.org/files/174/174.txt") if True : f = open ("lemonde.txt", "r") fr = f.readlines () f.close () fr = [ l.strip (" \n\t") for l in fr ] #fr = fr [:100] f = open ("nytimes.txt", "r") en = f.readlines () f.close () en = [ l.strip (" \n\t") for l in en ] #en = en [:100] allfr = curve4 (fr) allen = curve4 (en) import pickle f = open ("data.bin", "wb") pickle.dump (allfr, f) pickle.dump (allen, f) f.close () stop frcx,frcy = curve (fr) encx,ency = curve (en) print len (frcx), len (frcy) print len (encx), len (ency) f = open ("curve.txt", "w") f.write (str (frcx) + "\n") f.write (str (frcy) + "\n") f.write (str (encx) + "\n") f.write (str (ency) + "\n") f.close () import pylab pylab.plot (frcx, frcy, "rx",ms=5) pylab.plot (encx, ency, "bo") pylab.legend ((r"francais", "anglais"), loc=2) pylab.title ("langue") pylab.xlabel ("frequence de W") pylab.ylabel ("frequence de H") pylab.show ()