redux_5.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. def load_stopwords():
  10. with open("stopwords-fr.txt", "r") as sw:
  11. text_stopwords = sw.read()
  12. text_stopwords = text_stopwords[:-1] # pour enlever le retour charriot à la fin
  13. return text_stopwords.split("\n")
  14. #print("stopwords_list : ", load_stopwords() )
  15. def load_texte_a_reduire():
  16. with open(POEME_A_REDUIRE, "r") as source:
  17. texte_original = source.read()
  18. texte_original = texte_original[2:]
  19. return texte_original
  20. #print("texte original :", texte_original)
  21. def nettoyer(texte_original):
  22. # enlever les traits d'union et les apostrophes
  23. texte_net = texte_original.replace("'", " ")
  24. texte_net = texte_net.replace("-", " ")
  25. return texte_net
  26. def verses_list(texte_net): # sépare les vers sur le retour charriot
  27. return texte_net.split("\n")
  28. def decoupage(verses, mots_interdits): #découpage et réduction
  29. # verses est une liste de chaque phrase
  30. # mots interdit est une liste de mots
  31. l_verses = []
  32. for verse in verses:
  33. le_reste =[]
  34. mots_du_vers = verse.split(" ") # liste
  35. for mot in mots_du_vers:
  36. if mot.lower() not in mots_interdits:
  37. le_reste.append(mot)
  38. l_verses.append(le_reste)
  39. return l_verses
  40. def capitalisation(reste):
  41. for l in reste:
  42. #new_l = l
  43. for i, mot in enumerate(l):
  44. if mot:# si le mot existe
  45. mot = mot.capitalize()
  46. l[i] = mot
  47. break
  48. return reste
  49. def create_poeme_reduit(reste_capitalize):
  50. texte = ''
  51. for l_verse_reste in reste_capitalize:
  52. verse_restant = ' '.join(l_verse_reste)
  53. texte += verse_restant + '\n'
  54. return texte
  55. #def majuscule(verse)
  56. #
  57. # poeme_reduit = " ".join(le_reste)
  58. # #print("version réduite du poeme :", poeme_reduit)
  59. #
  60. # with open("mirabeau_reduit.txt", "w") as destination :
  61. # destination.write(" ".join(le_reste))
  62. #Appel des fonctions
  63. texte_original = load_texte_a_reduire()
  64. mots_interdits = load_stopwords()
  65. texte_net = nettoyer(texte_original)
  66. verses = verses_list(texte_net)
  67. #tous_les_mots = decoupage_en_mots(verses)
  68. #liste_reduite = reduction(tous_les_mots)
  69. #print("la liste des vers : ", verses)
  70. #print("la liste de tous les mots séparés :", tous_les_mots)
  71. #print("mots interdit : ", mots_interdits)
  72. #print("liste des mots réduite :", liste_reduite)
  73. reste = decoupage(verses, mots_interdits)
  74. reste_capitalize = capitalisation(reste)
  75. texte_final = create_poeme_reduit(reste_capitalize)
  76. print ("texte final : ", texte_final)