Programme texte_langue.py


# -*- 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 ()


créé avec py2html version:0.62