Générateur

De Le Parergon
Révision datée du 19 août 2024 à 14:03 par Pierrelucverville (discussion | contributions) (Page créée avec « import random # Listes d'éléments pour chaque rôle sémantique avec des marqueurs verbs = ["chanter", "composer", "jouer", "ressentir"] agents = ["(DET) (NOM)"] instru… »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche

import random

  1. Listes d'éléments pour chaque rôle sémantique avec des marqueurs

verbs = ["chanter", "composer", "jouer", "ressentir"] agents = ["(DET) (NOM)"] instruments = ["avec (NOM)", "au (NOM)", "à la (NOM)"] objets = ["(DET) (NOM)"] sieges = ["dans (DETPOS) (NOM)"] experiments = ["(ADV)"] beneficiaires = ["pour (NOM)"] causes = ["par (NOM)"] resultats = ["(NOM)"] sources = ["de (NOM)"] buts = ["pour (NOM)"] lieux = ["dans (NOM)", "sur (NOM)"] temps = ["ce (NOM)", "au (verbs) du soleil", "à (NOM)", "en (NOM)", "pendant (NOM)", "au (NOM)"]

  1. Dictionnaires pour les remplacements

noms = {

   "singulier_masculin": ["musicien", "poète", "compositeur", "écrivain", "piano", "batterie", "cœur", "esprit", "corps", "public"],
   "singulier_feminin": ["chanteuse", "artiste", "guitare", "âme", "pensée", "nature", "expérience", "mélodie", "rythmique", "liberté", "communauté", "humanité"],
   "pluriel_masculin": ["musiciens", "poètes", "compositeurs", "écrivains", "pianos", "batteries", "cœurs", "esprits", "corps", "publics"],
   "pluriel_feminin": ["chanteuses", "artistes", "guitares", "âmes", "pensées", "natures", "expériences", "mélodies", "rythmiques"]

} determinants = {

   "singulier_masculin": ["le", "un"],
   "singulier_feminin": ["la", "une"],
   "pluriel_masculin": ["les", "des"],
   "pluriel_feminin": ["les", "des"]

} detpos = ["son", "sa", "ses"] adverbes = ["essentiellement", "énergiquement"]

  1. Table de conjugaison des verbes pour chaque pronom et temps

conjugaisons = {

   "chanter": {
       "présent": {
           "je": "chante",
           "tu": "chantes",
           "il": "chante",
           "nous": "chantons",
           "vous": "chantez",
           "ils": "chantent"
       },
       "passé": {
           "je": "ai chanté",
           "tu": "as chanté",
           "il": "a chanté",
           "nous": "avons chanté",
           "vous": "avez chanté",
           "ils": "ont chanté"
       },
       "futur": {
           "je": "chanterai",
           "tu": "chanteras",
           "il": "chantera",
           "nous": "chanterons",
           "vous": "chanterez",
           "ils": "chanteront"
       }
   },
   "composer": {
       "présent": {
           "je": "compose",
           "tu": "composes",
           "il": "compose",
           "nous": "composons",
           "vous": "composez",
           "ils": "composent"
       },
       "passé": {
           "je": "ai composé",
           "tu": "as composé",
           "il": "a composé",
           "nous": "avons composé",
           "vous": "avez composé",
           "ils": "ont composé"
       },
       "futur": {
           "je": "composerai",
           "tu": "composeras",
           "il": "composera",
           "nous": "composerons",
           "vous": "composerez",
           "ils": "composeront"
       }
   },
   "jouer": {
       "présent": {
           "je": "joue",
           "tu": "joues",
           "il": "joue",
           "nous": "jouons",
           "vous": "jouez",
           "ils": "jouent"
       },
       "passé": {
           "je": "ai joué",
           "tu": "as joué",
           "il": "a joué",
           "nous": "avons joué",
           "vous": "avez joué",
           "ils": "ont joué"
       },
       "futur": {
           "je": "jouerai",
           "tu": "joueras",
           "il": "jouera",
           "nous": "jouerons",
           "vous": "jouerez",
           "ils": "joueront"
       }
   },
   "ressentir": {
       "présent": {
           "je": "ressens",
           "tu": "ressens",
           "il": "ressent",
           "nous": "ressentons",
           "vous": "ressentez",
           "ils": "ressentent"
       },
       "passé": {
           "je": "ai ressenti",
           "tu": "as ressenti",
           "il": "a ressenti",
           "nous": "avons ressenti",
           "vous": "avez ressenti",
           "ils": "ont ressenti"
       },
       "futur": {
           "je": "ressentirai",
           "tu": "ressentiras",
           "il": "ressentira",
           "nous": "ressentirons",
           "vous": "ressentirez",
           "ils": "ressentiront"
       }
   }

}

  1. Fonction pour choisir le genre et le nombre et remplacer les marqueurs

def choisir_accord(genre_nombre):

   if genre_nombre == "singulier_masculin":
       return random.choice(noms["singulier_masculin"]), random.choice(determinants["singulier_masculin"])
   elif genre_nombre == "singulier_feminin":
       return random.choice(noms["singulier_feminin"]), random.choice(determinants["singulier_feminin"])
   elif genre_nombre == "pluriel_masculin":
       return random.choice(noms["pluriel_masculin"]), random.choice(determinants["pluriel_masculin"])
   elif genre_nombre == "pluriel_feminin":
       return random.choice(noms["pluriel_feminin"]), random.choice(determinants["pluriel_feminin"])
  1. Fonction pour remplacer les marqueurs dans les phrases

def remplacer_marqueurs(phrase):

   genre_nombre = random.choice(["singulier_masculin", "singulier_feminin", "pluriel_masculin", "pluriel_feminin"])
   nom, det = choisir_accord(genre_nombre)
   
   phrase = phrase.replace("(DET)", det).replace("(NOM)", nom)
   phrase = phrase.replace("(DETPOS)", random.choice(detpos))
   phrase = phrase.replace("(ADV)", random.choice(adverbes))
   
   return phrase
  1. Fonction pour générer une phrase complète selon le type

def generate_phrase(type_phrase):

   verb = random.choice(verbs)
   agent = remplacer_marqueurs(random.choice(agents))
   instrument = remplacer_marqueurs(random.choice(instruments))
   objet = remplacer_marqueurs(random.choice(objets))
   siege = remplacer_marqueurs(random.choice(sieges))
   experiment = remplacer_marqueurs(random.choice(experiments))
   beneficiaire = remplacer_marqueurs(random.choice(beneficiaires))
   cause = remplacer_marqueurs(random.choice(causes))
   resultat = remplacer_marqueurs(random.choice(resultats))
   source = remplacer_marqueurs(random.choice(sources))
   but = remplacer_marqueurs(random.choice(buts))
   lieu = remplacer_marqueurs(random.choice(lieux))
   temps_choice = remplacer_marqueurs(random.choice(temps))
   
   # Choisir aléatoirement le temps du verbe (présent, passé, futur)
   temps_verbe = random.choice(["présent", "passé", "futur"])
   
   # Choisir aléatoirement un pronom personnel
   pronom = random.choice(["je", "tu", "il", "nous", "vous", "ils"])
   
   # Appliquer la conjugaison du verbe avec le pronom et le temps choisi
   verbe_conjugué = conjugaisons[verb][temps_verbe][pronom]
   if type_phrase == 1:
       return f"{pronom} {verbe_conjugué} {objet}"
   elif type_phrase == 2:
       return f"{verbe_conjugué.capitalize()} {instrument}"
   elif type_phrase == 3:
       return f"{verbe_conjugué.capitalize()} {siege}"
   elif type_phrase == 4:
       return f"{verbe_conjugué.capitalize()} {source}"
   elif type_phrase == 5:
       return f"{experiment}, {verbe_conjugué} {objet}"
   elif type_phrase == 6:
       return f"{verbe_conjugué.capitalize()} {beneficiaire}"
   elif type_phrase == 7:
       return f"{verbe_conjugué.capitalize()} {but}"
   elif type_phrase == 8:
       return f"{verbe_conjugué.capitalize()} {cause}"
   elif type_phrase == 9:
       return f"{pronom} {verbe_conjugué}, {resultat}"
   elif type_phrase == 10:
       return f"{verbe_conjugué.capitalize()} {lieu}"
   elif type_phrase == 11:
       return f"{pronom} {verbe_conjugué} {temps_choice}"
   elif type_phrase == 12:
       return f"{verbe_conjugué.capitalize()}, {resultat}"
  1. Fonction principale du générateur

def Générateur():

   lyrics = []
   for type_phrase in range(1, 13):
       phrase_generée = generate_phrase(type_phrase)
       lyrics.append(phrase_generée)
   return "\n".join(lyrics)
  1. Générer les paroles

paroles = Générateur() print(paroles)