99 lines
3.2 KiB
Python
99 lines
3.2 KiB
Python
#!/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)
|