123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- # 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')
|