Un mini-générateur de texte en Python, pour comprendre ce que font les grands modèles de langage
Quand tu écris un message, le clavier te propose le mot suivant. Les grands modèles de langage fonctionnent sur la même idée, à une échelle gigantesque : prédire la suite d'un texte. Tu vas écrire la version minuscule.
CoursL'idée
On dispose d'un texte d'entraînement (ici, cinq phrases).
Pour chaque mot, on note la liste des mots qui l'ont suivi dans le texte.
Pour écrire, on part d'un mot, puis on tire au hasard un mot dans sa liste, et on recommence.
Le programme utilise une liste (les mots), un dictionnaire (mot → liste des mots suivants) et une boucle for vus dans le cours Python. Le fichier est aussi disponible en téléchargement : gen.py.
gen.py
import random
texte = ("le chat dort sur le canapé . le chien dort sur le tapis . ""le chat mange le poisson . le chien mange le chat . le poisson nage dans le bocal .")
mots = texte.split()
# Pour chaque mot, on garde la liste des mots qui l'ont suivi dans le texte
suivants = {}
for i inrange(len(mots) - 1):
mot = mots[i]
if mot notin suivants:
suivants[mot] = []
suivants[mot].append(mots[i + 1])
# On fabrique une phrase en choisissant, au hasard, un mot qui a déjà suivi le mot courant
mot = "le"
phrase = mot
for _ inrange(12):
mot = random.choice(suivants[mot])
phrase = phrase + " " + mot
print(phrase)
ExercicesJe lis et j'exécute
EX 03Je comprends🌶️prise en main
Exercice 3 — Que contient le dictionnaire ?
Dans le texte d'entraînement, repère tous les mots qui suivent directement le mot le.
Écris la liste des mots qui suivent le, dans l'ordre du texte.
Combien de fois apparaît chat dans cette liste ? En déduis la probabilité de tirer chat après le.
Écris la liste des mots qui suivent dort.
Indice
Lis le texte phrase par phrase et note, à chaque le, le mot qui vient juste après. Ne saute pas le le de la fin de la phrase « le chien mange le chat ».
📝 réponses dans ton compte rendu, exercice 3
EX 04Je comprends🌶️prise en main
Exercice 4 — J'exécute le programme
Copie le programme dans EduPython et exécute-le cinq fois.
Recopie les cinq phrases obtenues.
Certaines de ces phrases existent-elles dans le texte d'entraînement ? Sont-elles toutes correctes en français ?
Le programme « comprend »-t-il ce qu'il écrit ? Justifie.
Indice
Compare avec les phrases d'origine. Une phrase peut être bien formée sans avoir jamais été écrite, ou fausse (« le poisson mange le canapé »).
📝 réponses dans ton compte rendu, exercice 4
ExercicesJe modifie
EX 05J'explore🌶️🌶️application
Exercice 5 — Mon propre texte
Enregistre le programme sous NOM_Prenom_ex05.py, puis modifie-le.
Remplace le texte d'entraînement par cinq phrases de ton choix, avec des mots séparés par des espaces et un point entouré d'espaces à la fin de chaque phrase.
Change le mot de départ, puis le nombre de mots produits.
Exécute plusieurs fois et note une phrase qui t'a fait rire et une phrase correcte.
Indice 1
Garde la forme « mot mot mot . mot mot . » avec des espaces avant chaque point. Le mot de départ doit apparaître dans ton texte : sinon Python signalera une erreur de clé (KeyError).
Indice 2
Pour produire 20 mots, remplace range(12) par range(20).
💾 NOM_Prenom_ex05.py
EX 06J'explore🌶️🌶️application
Exercice 6 — Plus un mot est fréquent…
Dans ton programme de l'exercice 5, choisis un mot qui apparaît plusieurs fois.
Affiche sa liste suivants[mot] avec print.
Quel mot suivant est le plus probable ? Comment le programme « sait »-il qu'il est plus probable ?
Que se passerait-il si on doublait la taille du texte d'entraînement avec des phrases du même genre ?
Indice
Un mot qui apparaît deux fois dans la liste a deux fois plus de chances d'être tiré : random.choice choisit chaque case de la liste avec la même probabilité.
💾 NOM_Prenom_ex06.py
EX 07Je dépasse🌶️🌶️🌶️plusieurs étapes
Exercice 7 — Quand le programme plante
Dans le programme d'origine, que se passe-t-il si le texte se termine par un mot qui n'apparaît qu'une seule fois dans tout le texte, et que le programme arrive sur ce mot ?
Explique pourquoi une erreur apparaît.
Propose une modification simple pour éviter l'erreur (en français, puis en Python si tu y arrives).
Indice
Le dictionnaire n'a pas de clé pour ce mot, puisqu'il n'a jamais été suivi de rien. Une solution : tester if mot in suivants avant de tirer, sinon s'arrêter ou repartir de le.
💾 NOM_Prenom_ex07.py
CoursDes cinq phrases aux milliards de textes
Notre programme
Un grand modèle de langage
Texte d'entraînement
5 phrases
des milliards de pages
Ce qu'il regarde pour choisir
le dernier mot seulement
beaucoup de mots avant (le contexte)
Comment il choisit
liste de mots suivants, tirage au hasard
calcul de probabilités par un très grand réseau de neurones
Idée de départ
deviner la suite
deviner la suite
Une IA peut « halluciner »
Un modèle cherche à produire un texte plausible, pas un texte vrai. Quand il ne connaît pas la réponse, il peut inventer, avec le même ton assuré.
C'est pourquoi on vérifie toujours une information importante avec une source fiable.
EX 08Je synthétise🌶️🌶️application
Exercice 8 — Plausible n'est pas vrai
Explique, avec tes mots et à l'aide de l'exercice 4, pourquoi une IA peut écrire une phrase fausse sans « mentir ».
Donne une situation de ta vie scolaire où il serait risqué de faire confiance à une IA sans vérifier.
Quelle vérification simple proposes-tu dans cette situation ?
Indice
Dans l'exercice 4, le programme a écrit des phrases bien formées mais fausses : a-t-il voulu tromper ?