#!/usr/bin/env python # coding: utf8 #pour installer nltk stopWords tout est là : http://www.nltk.org/data.html #finalement je n'utilise pas nltk stopWords qui est lacunaire mais ma propre liste import re #from nltk.tokenize import sent_tokenize, word_tokenize #from nltk.corpus import stopwords #POEME_A_REDUIRE = "mirabeau.txt" POEME_A_REDUIRE = "du_cote_de_chez_swann.txt" def load_stopwords(): with open("stopwords-fr.txt", "r") as sw: text_stopwords = sw.read() text_stopwords = text_stopwords[:-1] # pour enlever le retour charriot à la fin return text_stopwords.split("\n") #print("stopwords_list : ", load_stopwords() ) def load_texte_a_reduire(): with open(POEME_A_REDUIRE, "r") as source: texte_original = source.read() texte_original = texte_original[2:] return texte_original #print("texte original :", texte_original) def nettoyer(texte_original): # enlever les traits d'union et les apostrophes et éloigner ponctuation texte_net = texte_original.replace("'", " ") texte_net = texte_net.replace("-", " ") texte_net = texte_net.replace(".", " .") texte_net = texte_net.replace(",", " ,") texte_net = texte_net.replace(";", " ;") texte_net = texte_net.replace('"', ' " ') return texte_net def verses_list(texte_net): # sépare les vers sur le retour charriot return texte_net.split("\n") def decoupage(verses, mots_interdits): #découpage et réduction # verses est une liste de chaque phrase # mots interdit est une liste de mots l_verses = [] for verse in verses: le_reste =[] mots_du_vers = verse.split(" ") # liste des mots d'un vers for mot in mots_du_vers: if mot.lower() not in mots_interdits: le_reste.append(mot) l_verses.append(le_reste) return l_verses def capitalisation(reste): for l_mot_restant in reste: for i, mot in enumerate(l_mot_restant): if mot:# si le mot existe l_mot_restant[i] = mot.capitalize() break #sort de la dernière boucle et donc ne capitalize #que le premier mot non vide rencontré""" return reste def create_poeme_reduit(reste_capitalize): texte = '' for l_verse_reste in reste_capitalize: verse_restant = ' '.join(l_verse_reste) texte += verse_restant + '\n' return texte def ponctuer(texte_ponctue): texte_ponctue = texte_ponctue.replace(" .", ".") texte_ponctue = texte_ponctue.replace(" ,", ",") texte_ponctue = texte_ponctue.replace(" ;", ";") texte_ponctue = texte_ponctue.replace(' " ', '"') return texte_ponctue #Appel des fonctions texte_original = load_texte_a_reduire() mots_interdits = load_stopwords() texte_net = nettoyer(texte_original) verses = verses_list(texte_net) #tous_les_mots = decoupage_en_mots(verses) #liste_reduite = reduction(tous_les_mots) #print("la liste des vers : ", verses) #print("la liste de tous les mots séparés :", tous_les_mots) #print("mots interdit : ", mots_interdits) #print("liste des mots réduite :", liste_reduite) reste = decoupage(verses, mots_interdits) reste_capitalize = capitalisation(reste) texte_final = create_poeme_reduit(reste_capitalize) texte_def_def = ponctuer(texte_final) #with open("mirabeau_reduit.txt", "w") as destination : with open("du_cote_de_chez_swann_reduit.txt", "w") as destination : destination.write(texte_def_def) print ("texte definitif : ", texte_def_def)