Typoem - Quentin Lamouroux

De {}
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Typoem

Typoem = typography + poem. Terme inventé par Hansjorg Mayer, considéré comme un représentant important de la poésie concrète et expérimentale.

Typoem est un futur programme qui génère de manière aléatoire des poèmes constitués à partir d'une base de donnée (de mots) connectée à une messagerie personnelle telle que Messenger.

Le fonctionnement

Étape 1

Le programme encode quotidiennement dans la base de données les mots les plus utilisés et les regroupe selon leur classe grammaticale (nom, verbe, adjectif, adverbe, pronom, déterminant, conjonction, préposition).

Étape 2

Le programme pioche aléatoirement des mots dans les différentes classes grammaticales de la base de données, et les assemble dans un fichier .txt en respectant des combinaisons syntaxiques précises (ex : phrase = nom + verbe + adjectif).

Étape 3

Le programme met en page le fichier .txt suivant un système de grille graphique et un style de paragraphe précis, et l'exporte en fichier .pdf.

Les étapes en schéma


+--------------------+
|     messagerie     |
|  mail, messenger.. |
+----------^---------+
           |
           |
 +---------+--------+
 |  base de données |
 |                  |
 |  cat nom         |
 |  cat verbe       |
 |  cat adjectif    |
 |  cat pronom      |
 |  etc             |
 +----------^-------+
            |
            |
            |
  +-------------------+
  | +---------------+ |
  | | +-----------+ | |                  +--------------+
  | | | programme | | +------------------> fichier .txt |
  | | +-----------+ | |                  +-------+------+
  | +---------------+ |                          |
  +-------------------+                          |
                                                 |
                                                 |
                                                 |
                                                 |
                                         +-------v------+
                                         | fichier .pdf |
                                         +--------------+

Problématiques

> comment connecter le programme à une messagerie et comment y récupérer tous les mots ou groupe de mot les plus utilisés?

> quelle base de donnée? où? en ligne? en local?

> comment catégoriser les mots relevés (verbe, pronom, adjectif, etc)?

> comment assembler les mots les uns avec les autres avec (ou sans) limite de nombre de mot par phrase?

> où stocker les poèmes?


Première expérimentation

Cette première entrée en matière part d'une fonction proposée par Facebook qui permet de télécharger l'ensemble de ses données (messages, posts, likes, etc) au format .json. Je m'intéresse ici aux datas messenger et aux messages envoyés et reçus. Via cette première expérimentation, je vais tenter d'une part de comprendre la structure d'un fichier .json, et d'autre part d'utiliser ses données.

Cent Mille Milliards de Typoems

Cent Mille Milliards de Poèmes, est un livre animé de poésie combinatoire de Raymond Queneau, publié en 1961. Selon les mots mêmes de Queneau dans sa préface, «Ce petit ouvrage permet à tout un chacun de composer à volonté cent mille milliards de sonnets, tous réguliers bien entendu. C’est somme toute une sorte de machine à fabriquer des poèmes, mais en nombre limité; il est vrai que ce nombre, quoique limité, fournit de la lecture pour près de deux cents millions d’années (en lisant vingt-quatre heures sur vingt-quatre).» L'objet-livre de Queneau offre donc au lecteur un instrument qui lui permet de combiner des vers de façon à composer des poèmes


Centmille.jpg


Cent Mille Milliards de Typoems est une version numérique et remasterisé du livre de Raymond Queneau, adaptant son contenu au contexte des réseaux sociaux : à savoir mes conversations Messenger personnelles.


Milletypoems.png


Le fonctionnement

À partir de 5 conversations Messenger différentes, soit 5 fichiers .json, le projet propose 5 zones dans lesquelles sont générés aléatoirement des vers qui prennent la forme de messages envoyés [archivés dans les fichiers .json] à ces 5 destinataires différents sur une période donnée, permettant ainsi des combinaisons à l'infini.

Étape 1 : lire le fichier .json

Pour lire un fichier .json il est nécessaire d'utiliser le langage php. Un fichier .json se compose en tableau de parties et sous parties (cf capture écran); pour atteindre un élément spécifique voici la démarche à suivre. Ici je souhaite afficher le "content" du premier message dans la catégorie "messages".


Json.png


<?php

        $json = file_get_contents("src/json/estelle.json");
     
        $json_data = json_decode($json);

        echo $json_data->messages[0]->content;

?>

Étape 2: décoder le langage Unicode des fichiers .json



<?php
function fixBadUnicodeForJson($str) {
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")).chr(hexdec("$2")).chr(hexdec("$3")).chr(hexdec("$4")); },
    $str
);
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")).chr(hexdec("$2")).chr(hexdec("$3")); },
    $str
);
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")).chr(hexdec("$2")); },
    $str
);
    $str = preg_replace_callback(
    '/\\\\u00([0-9a-f]{2})/',
    function($matches) { return chr(hexdec("$1")); },
    $str
);
    return $str;
}

function textConverter($str){
    $str =  utf8_decode(fixBadUnicodeForJson($str));  
    return $str;
}

?>


<!DOCTYPE html>
<html>
    
    <head>
        <meta charset="utf-8">
        
        <title>Typoem</title>
        
        <script href="src/jquery-3.2.1.min.js"></script>
        
    </head>
    
    <body>
        
            <div class="conv1">
            
                <?php

                    error_reporting(E_ALL);
                    ini_set('display_errors', 1);

                    $json = file_get_contents("src/json/estelle.json");
                
                    $json_data = json_decode($json);

                    foreach($json_data->messages as $message){
                    if($message->sender_name == 'Quentin Lamouroux'){
                    echo '<p>'.textConverter($message->content).'</p>';
                    }
    
                    }

                ?>
           
            </div>
</p>

Étape 3: tirer un messages envoyés aléatoirement