Générateur de poésie

De Centre de Ressources Numériques - Labomedia
Révision de 13 avril 2014 à 13:59 par Olivier (discussion | contributions)

(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

Expérimentation en python autour du thésaurus français d'Open Office récupéré ici.

Le script choisi des mots aléatoirement dans le texte "source" et les remplacent par l'un de leur synonyme.

Une fois l'archive thesaurus-v2.3.zip décompressée, il faut retirer la première ligne du fichier thes-fr.dat, et lancer le script de cette façon :

python script.py 10

Où l'argument 10 est ici un exemple et correspond au nombre de fois où le texte sera parcouru.

À chaque passe, un seul mot est changé. Les passes s’appuyant sur le texte généré par la passe précédente, il est possible qu'un mot redevienne lui-même dans le hasard de la procédure.

À suivre...

#!/usr/bin/env python
# -*- coding: utf8 -*-
# Publié sous les termes de la CC-BY-SA

import re

from sys import argv
from random import randrange

BDD = []
liste_def = []
count = 0
nb_passe = int(argv[1])

fin = [",", ")", ".", "!", "»", "]"]

source = '''La poésie est un genre littéraire très ancien aux formes variées, écrites généralement en vers, mais qui admet aussi la prose, et qui privilégie
 l'expressivité de la forme. Sa définition se révèle difficile, et varie selon les époques, au point que chaque siècle peut lui trouver une fonction et une
 expression différente aussi d'un poète à l'autre. Le terme « poésie » et ses dérivés viennent du grec ancien ποίησις, et s'écrivait, jusqu'en 1878 poësie (le
 tréma marquait une disjonction entre les voyelles o et e). ποιεῖν (poiein) signifie « faire, créer » : le poète est donc un créateur, un inventeur de formes
 expressives, ce que révèlent aussi les termes du Moyen Âge, comme trouvère et troubadour. Le poète, héritier d'une longue tradition orale, privilégie la
 musicalité et le rythme, d'où, dans la plupart des textes poétiques, le recours à une forme versifiée qui confère de la densité à la langue. Le poète recherche
 aussi l'expressivité par le poids accordé aux mots comme par l'utilisation des figures de style et au premier chef des images et des figures d'analogie,
 recherchées pour leur force suggestive. La poésie s'est constamment renouvelée au cours des siècles avec des orientations différentes selon les époques, les
 civilisations, les aires culturelles et les individus. On peut par exemple distinguer le poète artiste soucieux d'abord de beauté formelle, le poète « lyrique »
 qui cultive le « chant de l'âme », le poète prophète, découvreur du monde et « voyant » ou le poète engagé, sans cependant réduire un créateur à une étiquette
 simplificatrice.'''

liste_source = source.rstrip('\n\r').split(" ")
long_source = len(liste_source)

with open ("thes_fr.dat", 'r') as base:
    for ligne in base:
        ligne = ligne.rstrip('\n').split("|")
        BDD.append(ligne)        

        if ligne[1].decode('utf-8').isdigit():
            liste_def.append(int(count))

        count += 1
            
for x in range(nb_passe):

    mot = ''
    fin_mot = ''

    while len(mot) < 4:
        num_choix_mot_source = randrange(long_source)
        mot = liste_source[num_choix_mot_source]

        for i in fin:
            if mot[-1] == i: 
                fin_mot = i #conserve la fin du mot
                print(fin_mot)
                mot = mot[:-1] # tronque la fin du mot 
    
    for i in range(len(liste_def)): 

        if mot == BDD[liste_def[i]][0]: # ne parcourt que les lignes de définition

            nb_sens = int(BDD[liste_def[i]][1]) # check le nb de sens

            if nb_sens != 1:
                choix_sens = randrange(nb_sens)+1
                liste_mot = BDD[int(liste_def[i])+choix_sens] #choisi parmi les différents sens

            else:
                liste_mot = BDD[int(liste_def[i])+1]

            synonyme = liste_mot[randrange(len(liste_mot)-1)+1] #choisi un mot dans la liste choisie

            print('''"{0}" est devenu "{1}"'''.format(mot, synonyme))

            liste_source[num_choix_mot_source] = synonyme+fin_mot #remplace le mot dans la liste en ajoutant la fin éventuelle
            
final = ""
for i in liste_source:

    final += i + " "

print (final.decode('utf-8'))

Voici la définition de Wikipédia du mot poésie traitée par ce script :

La prosodie est un groupe littéraire excessivement primitif aux formes variées, écrites très en vers, mais qui admet contre la formule, et qui privilégie l'expressivité de la ordre. Sa définition se révèle inhibé, et varie selon les époques, au point que chaque durée peut lui remarquer une assaut et une expression différente tant d'un poète à l'autre. Le frontière « texte » et ses dérivés viennent du hellénique ancien ποίησις, et s'écrivait, jusqu'en 1878 poësie (le tréma marquait une désaccord entre les voyelles o et e). ποιεῖν (poiein) signifie « faire, ériger » : le poète est donc un sculpteur, un inventeur de formes expressives, ce que révèlent aussi les termes du Moyen Âge, presque trouvère et troubadour. Le armure, hoir d'une oblongue tradition orale, privilégie la musicalité et le quantité, d'où, dans la grand nombre des textes poétiques, le recours à une diversité versifiée qui confère de la densité à la langue. Le poète préciosité ainsi l'expressivité par le poids accordé aux mots comme par l'utilisation des figures de maintien et au important conduire des images et des figures d'analogie, recherchées pourquoi leur cran évocatrice. La poésie s'est constamment fréquentative au balade des siècles avec des orientations discordantes disciple les époques, les civilisations, les aires culturelles et les métier. On peut par exemple distinguer le poète artiste effrayé d'abord de beauté formelle, le poète « lyrique » qui cultive le « refrain de l'âme », le poète prophète, auteur du peuplade et « subsistant » ou le poète engagé, rien tandis réduire un créateur à une étiquette simplificatrice.