redux_prose6.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #!/usr/bin/env python
  2. # coding: utf8
  3. #pour installer nltk stopWords tout est là : http://www.nltk.org/data.html
  4. #finalement je n'utilise pas nltk stopWords qui est lacunaire mais ma propre liste
  5. import re
  6. #from nltk.tokenize import sent_tokenize, word_tokenize
  7. #from nltk.corpus import stopwords
  8. #POEME_A_REDUIRE = "mirabeau.txt"
  9. POEME_A_REDUIRE = "du_cote_de_chez_swann.txt"
  10. def load_stopwords():
  11. with open("stopwords-fr.txt", "r") as sw:
  12. text_stopwords = sw.read()
  13. text_stopwords = text_stopwords[:-1] # pour enlever le retour charriot à la fin
  14. return text_stopwords.split("\n")
  15. #print("stopwords_list : ", load_stopwords() )
  16. def load_texte_a_reduire():
  17. with open(POEME_A_REDUIRE, "r") as source:
  18. texte_original = source.read()
  19. texte_original = texte_original[2:]
  20. return texte_original
  21. #print("texte original :", texte_original)
  22. def nettoyer(texte_original):
  23. # enlever les traits d'union et les apostrophes et éloigner ponctuation
  24. texte_net = texte_original.replace("'", " ")
  25. texte_net = texte_net.replace("-", " ")
  26. texte_net = texte_net.replace(".", " .")
  27. texte_net = texte_net.replace(",", " ,")
  28. texte_net = texte_net.replace(";", " ;")
  29. texte_net = texte_net.replace('"', ' " ')
  30. return texte_net
  31. def verses_list(texte_net): # sépare les vers sur le retour charriot
  32. return texte_net.split("\n")
  33. def decoupage(verses, mots_interdits): #découpage et réduction
  34. # verses est une liste de chaque phrase
  35. # mots interdit est une liste de mots
  36. l_verses = []
  37. for verse in verses:
  38. le_reste =[]
  39. mots_du_vers = verse.split(" ") # liste des mots d'un vers
  40. for mot in mots_du_vers:
  41. if mot.lower() not in mots_interdits:
  42. le_reste.append(mot)
  43. l_verses.append(le_reste)
  44. return l_verses
  45. def capitalisation(reste):
  46. for l_mot_restant in reste:
  47. for i, mot in enumerate(l_mot_restant):
  48. if mot:# si le mot existe
  49. l_mot_restant[i] = mot.capitalize()
  50. break #sort de la dernière boucle et donc ne capitalize
  51. #que le premier mot non vide rencontré"""
  52. return reste
  53. def create_poeme_reduit(reste_capitalize):
  54. texte = ''
  55. for l_verse_reste in reste_capitalize:
  56. verse_restant = ' '.join(l_verse_reste)
  57. texte += verse_restant + '\n'
  58. return texte
  59. def ponctuer(texte_ponctue):
  60. texte_ponctue = texte_ponctue.replace(" .", ".")
  61. texte_ponctue = texte_ponctue.replace(" ,", ",")
  62. texte_ponctue = texte_ponctue.replace(" ;", ";")
  63. texte_ponctue = texte_ponctue.replace(' " ', '"')
  64. return texte_ponctue
  65. #Appel des fonctions
  66. texte_original = load_texte_a_reduire()
  67. mots_interdits = load_stopwords()
  68. texte_net = nettoyer(texte_original)
  69. verses = verses_list(texte_net)
  70. #tous_les_mots = decoupage_en_mots(verses)
  71. #liste_reduite = reduction(tous_les_mots)
  72. #print("la liste des vers : ", verses)
  73. #print("la liste de tous les mots séparés :", tous_les_mots)
  74. #print("mots interdit : ", mots_interdits)
  75. #print("liste des mots réduite :", liste_reduite)
  76. reste = decoupage(verses, mots_interdits)
  77. reste_capitalize = capitalisation(reste)
  78. texte_final = create_poeme_reduit(reste_capitalize)
  79. texte_def_def = ponctuer(texte_final)
  80. #with open("mirabeau_reduit.txt", "w") as destination :
  81. with open("du_cote_de_chez_swann_reduit.txt", "w") as destination :
  82. destination.write(texte_def_def)
  83. print ("texte definitif : ", texte_def_def)