Générateur : Différence entre versions

De Le Parergon
Sauter à la navigation Sauter à la recherche
(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… »)
 
Ligne 1 : Ligne 1 :
import random
+
En logique descriptive SHOIN, je peux représenter mon [[générateur]] en utilisant des concepts (classes), des rôles (relations), et des individus. Voici une tentative de description formelle de mon programme :
  
# Listes d'éléments pour chaque rôle sémantique avec des marqueurs
+
Concepts principaux :
verbs = ["chanter", "composer", "jouer", "ressentir"]
+
Programme : Le concept général représentant le programme.
agents = ["(DET) (NOM)"]
+
Phrase : Le concept représentant une phrase générée.
instruments = ["avec (NOM)", "au (NOM)", "à la (NOM)"]
+
RôleSémantique : Le concept représentant un rôle sémantique.
objets = ["(DET) (NOM)"]
+
Verbe : Le concept représentant un verbe.
sieges = ["dans (DETPOS) (NOM)"]
+
Nom : Le concept représentant un nom.
experiments = ["(ADV)"]
+
Déterminant : Le concept représentant un déterminant.
beneficiaires = ["pour (NOM)"]
+
Conjugaison : Le concept représentant une conjugaison verbale.
causes = ["par (NOM)"]
+
ModuleAccord : Le concept représentant le module de gestion des accords.
resultats = ["(NOM)"]
+
Rôles (relations) entre concepts :
sources = ["de (NOM)"]
+
génère : Un rôle qui relie le concept Programme au concept Phrase. Indique que le programme génère des phrases.
buts = ["pour (NOM)"]
+
contient : Un rôle reliant Phrase à RôleSémantique. Indique que chaque phrase contient un ou plusieurs rôles sémantiques.
lieux = ["dans (NOM)", "sur (NOM)"]
+
aVerbe : Un rôle reliant Phrase à Verbe. Indique qu'une phrase utilise un verbe.
temps = ["ce (NOM)", "au (verbs) du soleil", "à (NOM)", "en (NOM)", "pendant (NOM)", "au (NOM)"]
+
aNom : Un rôle reliant Phrase à Nom. Indique qu'une phrase utilise un nom.
 
+
aDéterminant : Un rôle reliant Phrase à Déterminant. Indique qu'une phrase utilise un déterminant.
# Dictionnaires pour les remplacements
+
aConjugaison : Un rôle reliant Verbe à Conjugaison. Indique qu'un verbe a une conjugaison spécifique.
noms = {
+
utiliseModuleAccord : Un rôle reliant Programme à ModuleAccord. Indique que le programme utilise un module pour gérer les accords.
    "singulier_masculin": ["musicien", "poète", "compositeur", "écrivain", "piano", "batterie", "cœur", "esprit", "corps", "public"],
+
Axiomes (assertions sur les concepts et rôles) :
    "singulier_feminin": ["chanteuse", "artiste", "guitare", "âme", "pensée", "nature", "expérience", "mélodie", "rythmique", "liberté", "communauté", "humanité"],
+
Programme
    "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 = {
+
∃ génère.Phrase : Un programme génère nécessairement des phrases.
    "singulier_masculin": ["le", "un"],
+
Phrase
    "singulier_feminin": ["la", "une"],
+
    "pluriel_masculin": ["les", "des"],
+
    "pluriel_feminin": ["les", "des"]
+
}
+
∃ contient.RôleSémantique
detpos = ["son", "sa", "ses"]
+
adverbes = ["essentiellement", "énergiquement"]
+
 
+
# Table de conjugaison des verbes pour chaque pronom et temps
+
∃ aVerbe.Verbe
conjugaisons = {
+
    "chanter": {
+
        "présent": {
+
            "je": "chante",
+
∃ aNom.Nom
            "tu": "chantes",
+
            "il": "chante",
+
            "nous": "chantons",
+
            "vous": "chantez",
+
∃ aDéterminant.Déterminant : Une phrase contient nécessairement un rôle sémantique, un verbe, un nom, et un déterminant.
            "ils": "chantent"
+
Verbe
        },
+
        "passé": {
+
            "je": "ai chanté",
+
            "tu": "as chanté",
+
∃ aConjugaison.Conjugaison : Un verbe est associé à une conjugaison.
            "il": "a chanté",
+
ModuleAccord
            "nous": "avons chanté",
+
            "vous": "avez chanté",
+
⊑ Programme : Le module d'accord est une partie intégrante du programme.
            "ils": "ont chanté"
+
Programme
        },
+
        "futur": {
+
            "je": "chanterai",
+
            "tu": "chanteras",
+
∃ utiliseModuleAccord.ModuleAccord : Le programme utilise nécessairement un module pour gérer les accords.
            "il": "chantera",
+
Exemple d'individus :
            "nous": "chanterons",
+
programme1 : Programme
            "vous": "chanterez",
+
phrase1 : Phrase
            "ils": "chanteront"
+
verbe1 : Verbe avec aConjugaison(conjugaisonPrésent)
        }
+
nom1 : Nom
    },
+
determinant1 : Déterminant
    "composer": {
+
moduleAccord1 : ModuleAccord
        "présent": {
+
Assertions sur les individus :
            "je": "compose",
+
programme1 génère phrase1
            "tu": "composes",
+
phrase1 contient rôleSémantique1
            "il": "compose",
+
phrase1 aVerbe verbe1
            "nous": "composons",
+
phrase1 aNom nom1
            "vous": "composez",
+
phrase1 aDéterminant determinant1
            "ils": "composent"
+
programme1 utiliseModuleAccord moduleAccord1
        },
+
Ensemble, ces éléments décrivent votre programme dans la logique descriptive
        "passé": {
+
𝑆
            "je": "ai composé",
+
𝐻
            "tu": "as composé",
+
𝑂
            "il": "a composé",
+
𝐼
            "nous": "avons composé",
+
𝑁
            "vous": "avez composé",
+
SHOIN, en mettant l'accent sur les concepts et les relations qui structurent le processus de génération des phrases.
            "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)
 

Version du 19 août 2024 à 15:05

En logique descriptive SHOIN, je peux représenter mon générateur en utilisant des concepts (classes), des rôles (relations), et des individus. Voici une tentative de description formelle de mon programme :

Concepts principaux : Programme : Le concept général représentant le programme. Phrase : Le concept représentant une phrase générée. RôleSémantique : Le concept représentant un rôle sémantique. Verbe : Le concept représentant un verbe. Nom : Le concept représentant un nom. Déterminant : Le concept représentant un déterminant. Conjugaison : Le concept représentant une conjugaison verbale. ModuleAccord : Le concept représentant le module de gestion des accords. Rôles (relations) entre concepts : génère : Un rôle qui relie le concept Programme au concept Phrase. Indique que le programme génère des phrases. contient : Un rôle reliant Phrase à RôleSémantique. Indique que chaque phrase contient un ou plusieurs rôles sémantiques. aVerbe : Un rôle reliant Phrase à Verbe. Indique qu'une phrase utilise un verbe. aNom : Un rôle reliant Phrase à Nom. Indique qu'une phrase utilise un nom. aDéterminant : Un rôle reliant Phrase à Déterminant. Indique qu'une phrase utilise un déterminant. aConjugaison : Un rôle reliant Verbe à Conjugaison. Indique qu'un verbe a une conjugaison spécifique. utiliseModuleAccord : Un rôle reliant Programme à ModuleAccord. Indique que le programme utilise un module pour gérer les accords. Axiomes (assertions sur les concepts et rôles) : Programme ⊑ ⊑ ∃ ∃ génère.Phrase : Un programme génère nécessairement des phrases. Phrase ⊑ ⊑ ∃ ∃ contient.RôleSémantique ⊓ ⊓ ∃ ∃ aVerbe.Verbe ⊓ ⊓ ∃ ∃ aNom.Nom ⊓ ⊓ ∃ ∃ aDéterminant.Déterminant : Une phrase contient nécessairement un rôle sémantique, un verbe, un nom, et un déterminant. Verbe ⊑ ⊑ ∃ ∃ aConjugaison.Conjugaison : Un verbe est associé à une conjugaison. ModuleAccord ⊑ ⊑ Programme : Le module d'accord est une partie intégrante du programme. Programme ⊑ ⊑ ∃ ∃ utiliseModuleAccord.ModuleAccord : Le programme utilise nécessairement un module pour gérer les accords. Exemple d'individus : programme1 : Programme phrase1 : Phrase verbe1 : Verbe avec aConjugaison(conjugaisonPrésent) nom1 : Nom determinant1 : Déterminant moduleAccord1 : ModuleAccord Assertions sur les individus : programme1 génère phrase1 phrase1 contient rôleSémantique1 phrase1 aVerbe verbe1 phrase1 aNom nom1 phrase1 aDéterminant determinant1 programme1 utiliseModuleAccord moduleAccord1 Ensemble, ces éléments décrivent votre programme dans la logique descriptive 𝑆 𝐻 𝑂 𝐼 𝑁 SHOIN, en mettant l'accent sur les concepts et les relations qui structurent le processus de génération des phrases.