Y'avait ça effectivement que j'avais noter.
Mais y'a moyen de faire encore un petit peu mieux :
Python fait la différence entre des types mutables (comprendre non constants) ou non. Les listes (construites avec des [ ]) sont mutables, les tuples (construits avec des ( ) ) ne le sont pas.
C'est mieux d'utiliser des types non mutables quand c'est possible.
Je passe sur les choix de nommage qui ne facilitent pas la lecture (
lignequifaitpartieducorpusdudocument ça fait long quand même

) et sur la présentation en général.
Utiliser les chaînes de formatage quand ça rend plus lisible :
Code : Tout sélectionner
fichiersortie.write("%s %d " % (identifiant, len(lignecorpus)))
au lieu de
Code : Tout sélectionner
fichiersortie.write(identifiant + " " + str(len(lignecorpus)) + " ")
Pour le split sur une regexp, tu peux faire plus simple :
Si les underscores ne sont pas un problème, tu peux aussi utiliser
\W qui est un équivalent de
[^a-zA-Z0-9_].
Un détail, pas forcément utile :
(On peut accéder directement aux caractères.)
Une couche de parenthèses superflue (influence du Lisp ?

).
Des trucs un peu plus brutaux mais qui ont l'avantage de simplifier le code .

La fonction
compte_occurence_pour_chaque_mot_range (dont le commentaire serait à corriger

) peut s'écrire en une ligne :
Code : Tout sélectionner
def compte_occurence_pour_chaque_mot_range(listedindex):
return [ listindex.count(mot) for mot in set(listindex) ]
Sinon, j'ai pas compris le pourquoi des valeurs que tu mets dans le
stopdico (rempli en début).
Un truc qui dépend plus du goût de chacun, et qui n'est pas spécifique au Python : en général je préfère écrire
Code : Tout sélectionner
for x in list:
if cas_particulier:
continue
traitement normal
plutôt que
Ça évite d'augmenter le niveau d'imbrication quand on commence à avoir plusieurs cas particuliers successifs à traiter. Et ça transcrit mieux le fait qu'on "ignore/zappe" les cas spéciaux, traités en groupe au début. Mais c'est plus "marquant" quand y'a un traitement spécial à faire pour le cas particulier (avant le
continue).
Voilà, c'est à peu près tout je pense. Mais je ne me suis pas penché sur le côté algo, la présentation générale du code ne le rend pas très lisible, du coup j'ai un peu la flemme.
EDIT : Pour les regexp,
\W est un équivalent de
[^a-zA-Z0-9_], petit oubli.