Générateur
import random
- 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)"]
- 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"]
- 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" } }
}
- 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"])
- 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
- 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}"
- 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)
- Générer les paroles
paroles = Générateur() print(paroles)