# function pour stocker les mots import nltk from duckduckpy import query import random from googletrans import Translator # ------------------ # # en-tête du script > déclaration des fonctions et des variables # ------------------ # # on crée une liste pour stocker tous les mots all_words = [] sentences = [] # fonction qui extrait les mots et les stockent dans une liste def words_extract( str ): tokens = nltk.word_tokenize( str ) words = [] for word, pos in nltk.pos_tag(tokens): if pos == 'NN': words.append(word) return words # fonction qui génère un nombre aléatoire à partir de la liste de mots pour pouvoir choisir un mot def rand_words( list ): list_len = len( list ) ran_num = random.randint(0,list_len-1) return ran_num # fonction pour chercher dans duckduckgo def srch_engine( list, num ): if len(list) == 0: srch = query(all_words[num], container='dict') res = srch['related_topics'][0]['text'] return res elif list not in all_words: srch = query(list[num], container='dict') res = srch['related_topics'][0]['text'] return res else: srch = query(all_words[num], container='dict') res = srch['related_topics'][0]['text'] return res # function pour comparer le mot avec le set # ------------------ # # corps du script > appel des fonctions, lecture de la source # ------------------ # with open('input.txt') as f: sentences = f.read().splitlines() num = rand_words(sentences) # phrase de départ sentence = sentences[num] # ------------------- # # niveau 1 # ------------------- # # 1 print('\n') print('1. ' + sentence) # extraction des mots de la phrase de départ words = words_extract( sentence ) # 1.2 on ajoute à all_words tous les mots trouver print(words) if words not in all_words: all_words.extend(words) print(all_words) # 1.3 - génération du nombre pour le choix du mot ran_num = rand_words( words ) print(ran_num) # ------------------- # # niveau 2 # ------------------- # # 2 - on va chercher une phrase à partir du mot sélectionné sentence2 = srch_engine(words, ran_num) print('\t 2. ' + sentence2) # extraction des mots de la phrase 2 words = words_extract( sentence2 ) # 2.2 print(words) if words not in all_words: all_words.extend(words) print(all_words) # 2.3 - génération du nombre pour le choix du mot ran_num = rand_words( words ) print(ran_num) # ------------------- # # niveau 3 # ------------------- # # 3 - on va chercher une phrase à partir du mot sélectionné sentence3 = srch_engine(words, ran_num) print('\t\t 3. ' + sentence3) # extraction des mots de la phrase 2 words = words_extract( sentence3 ) # 3.2 print(words) if words not in all_words: all_words.extend(words) print(all_words) # 3.3 - génération du nombre pour le choix du mot ran_num = rand_words( words ) print(ran_num) # ------------------- # # niveau 4 # ------------------- # # 4 - on va chercher une phrase à partir du mot sélectionné sentence4 = srch_engine(words, ran_num) print('\t\t\t 4. ' + sentence4) # extraction des mots de la phrase 2 words = words_extract( sentence4 ) # 4.2 print(words) if words not in all_words: all_words.extend(words) print(all_words) # 4.3 - génération du nombre pour le choix du mot ran_num = rand_words( words ) print(ran_num) # ------------------- # # niveau 5 # ------------------- # # 5 - on va chercher une phrase à partir du mot sélectionné sentence5 = srch_engine(words, ran_num) print('\t\t\t\t 5. ' + sentence5) # extraction des mots de la phrase 2 words = words_extract( sentence5 ) # 5.2 print(words) if words not in all_words: all_words.extend(words) print(all_words) # 5.3 - génération du nombre pour le choix du mot ran_num = rand_words( words ) print(ran_num) # ------------------- # # écriture du fichier # ------------------- # translator = Translator() translations = translator.translate([sentence, sentence2, sentence3, sentence4, sentence5], dest='fr') i = 0 for translation in translations: i += 1 #print(i) # on ouvre un fichier file = open('ola#5doc/jeremie_nuel/output.txt', 'a') # on l'écrit file.write('\n\n' + str(i) + '. ' + translation.text ) file.write('\n\n') file.close() print('fichier écrit')