infra-ordinaire~20171217-123055.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. # function pour stocker les mots
  2. import nltk
  3. from duckduckpy import query
  4. import random
  5. from googletrans import Translator
  6. # ------------------ #
  7. # en-tête du script > déclaration des fonctions et des variables
  8. # ------------------ #
  9. # on crée une liste pour stocker tous les mots
  10. all_words = []
  11. sentences = []
  12. # fonction qui extrait les mots et les stockent dans une liste
  13. def words_extract( str ):
  14. tokens = nltk.word_tokenize( str )
  15. words = []
  16. for word, pos in nltk.pos_tag(tokens):
  17. if pos == 'NN':
  18. words.append(word)
  19. return words
  20. # fonction qui génère un nombre aléatoire à partir de la liste de mots pour pouvoir choisir un mot
  21. def rand_words( list ):
  22. list_len = len( list )
  23. ran_num = random.randint(0,list_len-1)
  24. return ran_num
  25. # fonction pour chercher dans duckduckgo
  26. def srch_engine( list, num ):
  27. if len(list) == 0:
  28. srch = query(all_words[num], container='dict')
  29. res = srch['related_topics'][0]['text']
  30. return res
  31. elif list not in all_words:
  32. srch = query(list[num], container='dict')
  33. res = srch['related_topics'][0]['text']
  34. return res
  35. else:
  36. srch = query(all_words[num], container='dict')
  37. res = srch['related_topics'][0]['text']
  38. return res
  39. # function pour comparer le mot avec le set
  40. # ------------------ #
  41. # corps du script > appel des fonctions, lecture de la source
  42. # ------------------ #
  43. with open('input.txt') as f:
  44. sentences = f.read().splitlines()
  45. num = rand_words(sentences)
  46. # phrase de départ
  47. sentence = sentences[num]
  48. # ------------------- #
  49. # niveau 1
  50. # ------------------- #
  51. # 1
  52. print('\n')
  53. print('1. ' + sentence)
  54. # extraction des mots de la phrase de départ
  55. words = words_extract( sentence )
  56. # 1.2 on ajoute à all_words tous les mots trouver
  57. print(words)
  58. if words not in all_words:
  59. all_words.extend(words)
  60. print(all_words)
  61. # 1.3 - génération du nombre pour le choix du mot
  62. ran_num = rand_words( words )
  63. print(ran_num)
  64. # ------------------- #
  65. # niveau 2
  66. # ------------------- #
  67. # 2 - on va chercher une phrase à partir du mot sélectionné
  68. sentence2 = srch_engine(words, ran_num)
  69. print('\t 2. ' + sentence2)
  70. # extraction des mots de la phrase 2
  71. words = words_extract( sentence2 )
  72. # 2.2
  73. print(words)
  74. if words not in all_words:
  75. all_words.extend(words)
  76. print(all_words)
  77. # 2.3 - génération du nombre pour le choix du mot
  78. ran_num = rand_words( words )
  79. print(ran_num)
  80. # ------------------- #
  81. # niveau 3
  82. # ------------------- #
  83. # 3 - on va chercher une phrase à partir du mot sélectionné
  84. sentence3 = srch_engine(words, ran_num)
  85. print('\t\t 3. ' + sentence3)
  86. # extraction des mots de la phrase 2
  87. words = words_extract( sentence3 )
  88. # 3.2
  89. print(words)
  90. if words not in all_words:
  91. all_words.extend(words)
  92. print(all_words)
  93. # 3.3 - génération du nombre pour le choix du mot
  94. ran_num = rand_words( words )
  95. print(ran_num)
  96. # ------------------- #
  97. # niveau 4
  98. # ------------------- #
  99. # 4 - on va chercher une phrase à partir du mot sélectionné
  100. sentence4 = srch_engine(words, ran_num)
  101. print('\t\t\t 4. ' + sentence4)
  102. # extraction des mots de la phrase 2
  103. words = words_extract( sentence4 )
  104. # 4.2
  105. print(words)
  106. if words not in all_words:
  107. all_words.extend(words)
  108. print(all_words)
  109. # 4.3 - génération du nombre pour le choix du mot
  110. ran_num = rand_words( words )
  111. print(ran_num)
  112. # ------------------- #
  113. # niveau 5
  114. # ------------------- #
  115. # 5 - on va chercher une phrase à partir du mot sélectionné
  116. sentence5 = srch_engine(words, ran_num)
  117. print('\t\t\t\t 5. ' + sentence5)
  118. # extraction des mots de la phrase 2
  119. words = words_extract( sentence5 )
  120. # 5.2
  121. print(words)
  122. if words not in all_words:
  123. all_words.extend(words)
  124. print(all_words)
  125. # 5.3 - génération du nombre pour le choix du mot
  126. ran_num = rand_words( words )
  127. print(ran_num)
  128. # ------------------- #
  129. # écriture du fichier
  130. # ------------------- #
  131. translator = Translator()
  132. translations = translator.translate([sentence, sentence2, sentence3, sentence4, sentence5], dest='fr')
  133. i = 0
  134. for translation in translations:
  135. i += 1
  136. #print(i)
  137. # on ouvre un fichier
  138. file = open('ola#5doc/jeremie_nuel/output.txt', 'a')
  139. # on l'écrit
  140. file.write('\n\n' + str(i) + '. ' + translation.text )
  141. file.write('\n\n')
  142. file.close()
  143. print('fichier écrit')