1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #!/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)
|