Commit c155f66a authored by ana's avatar ana

initial commit

parents
#!/usr/bin/env/ python
arbres = {"David Prescott": "La vision d'un arbre touche forcément l'âme de tout un chacun.",\
"Novalis":"Les fleurs, les arbres, tout poussait avec force, tout verdissait avec vigueur. \
Il semblait que tout avait reçu une âme. Tout parlait tout chantait.",\
"Victor Hugo": "C'est que l'amour est comme un arbre, il pousse de lui-même, jette profondément ses racines \
dans tout notre être, et continue souvent de verdoyer sur un cœur en ruine.",\
"Jacques Prévert": "Autrefois les bûcherons avaient des égards pour les arbres autrefois les bûcherons \
buvaient à leur santé.",\
"René Hausman": "Lorsque, la hache à la main, le bûcheron atteint la forêt, les arbres se disent : \
le manche est des nôtres...",\
"Rocé": "Les humains sont comme des arbres, ils ont des racines aux semelles.",\
"Nicholas Evans": "Il aura fallu des millions d'années à l'espèce humaine pour descendre des arbres et \
seulement dix de plus pour se mettre en vitrine.",\
"Richard Powers": "Il n'y a proportionnellement pas assez de forêts pour le nombre de mauvais écrivains qui peuplent ce pays.",\
"Sitting Bull": "Quand ils auront coupé le dernier arbre, pollué le dernier ruisseau, pêché le dernier poisson.\
Alors ils s’apercevront que l’argent ne se mange pas.",\
"Denis Langlois": "La géométrie est importante pour les arbres. Passer de la verticale à l'horizontale leur\
est généralement fatal.",
"Denis Langlois": "En période de canicule, ce sont les arbres qui sont les plus à plaindre. Ils ne peuvent pas se mettre à l'ombre.",\
"Claude Ponti": "Depuis qu'il sait qu'on fait des livres avec le bois des arbres, O'Messi-Messian rêve au \
livre qu'il deviendra plus tard, quand sa vie d'arbre sera finie.",\
"Kama Sywor Kamanda": "Quand les branches des arbres dansent aux vents, les esprits, en cet instant magique,\
voyagent en quête d'incantation.",\
"André Breton": "Campagne d'os blancs et rouges, qu'as-tu fait de tes arbres immondes, de ta candeur arborescente,\
de ta fidélité qui était une bourse aux perles serrées, avec des fleurs, des inscriptions comme ci comme ça, \
des significations à tout prendre ?",\
"Sylvain Tesson": "Les arbres nous enseignent une forme de pudeur et de savoir-vivre. Ils poussent vers la \
lumière en prenant soin de s'éviter, de ne pas se toucher, et leurs frondaisons se découpent dans le ciel \
sans jamais pénétrer dans la frondaison voisine. Les arbres, en somme, sont très bien élevés, \
ils tiennent leurs distances. Ils sont généreux aussi.", \
"Sylvain Tesson": "La forêt est un organisme total, composé de milliers d'individus. Chacun est appelé à naître, à vivre, à mourir, à se décomposer - \
à assurer aux générations suivantes un terreau de croissance supérieur à celui sur lequel il avait poussé. \
Chaque arbre reçoit et transmet. Entre les deux, il se maintient. La forêt ressemble à ce que devrait être \
une culture.",\
"Pierre Rabhi": "Pour que les arbres et les plantes s'épanouissent, pour que les animaux qui s'en nourrissent \
prospèrent, pour que les hommes vivent, il faut que la terre soit honorée.",\
"Anaïs Nin": "Le monde d'aujourd'hui a perdu ses racines. C'est une grande forêt où les arbres seraient \
plantés la tête en bas. Leurs racines gesticulent furieusement en l'air et elles se dessèchent.",\
"Didier Comès": "Tu es celui pour qui les arbres bourgeonnent et les fleurs s'émeuvent !",\
"Erri De Luca": "Les arbres de montagne écrivent dans l'air des histoires qui se lisent quand on est allongé dessous.",\
"William Blake": "Un sot ne voit pas le même arbre qu'un sage.",\
"Henri Duvernois": "Et dire que les vieux arbres sont si beaux ! Hélas, on n'est pas de bois.",\
"Belur Krishnamacharya Sundararaja Iyengar": "Les sages d'autrefois comparaient le yoga à un arbre fruitier.\
D'une seule graine naissent les racines, le tronc, les branches et les feuilles.",\
"Haruki": "Moi, j'adore regarder les arbres. Depuis toute petite, et même maintenant. \
Quand j'ai le temps, je m'assieds sous un arbre, je touche le tronc, ou bien je lève les yeux vers les branches,\
je peux rester des heures comme ça sans rien faire de plus.",\
"Christian Bobin":"Le monde entier repose sur nous. Il dépend d'un grain de silence, d'une poussière d'or- \
de la ferveur de notre attente. Un arbre éblouissant de vert. Un visage inondé de lumière. \
Cela suffit bien chaque jour. C'est même beaucoup. Voir ce qui est. Être ce qu'on voit. \
S'égarer dans les livres, ou dans les bois.",\
"Jean Bertaut": "Se plaindre de sentir des ennuis et des peines, C'est se plaindre d'être un homme et non arbre \
ou rocher.",\
"Lee Seung-U": "L'aliboufier, un arbre voluptueux, svelte et souple comme un corps de femme. \
Il enlaçait le pin dans une tendre étreinte. J'imagine que, sous terre, leurs racines s'entremêlaient \
dans une intimité encore plus scandaleuse.",\
"Léon Bloy": "Par nature, le Bourgeois est haïsseur et destructeur de paradis. Quand il aperçoit un beau Domaine,\
son rêve est de couper les grands arbres, de tarir les sources, de tracer des rues, d'instaurer des boutiques \
et des urinoirs. Il appelle ça monter une affaire.",\
"Wangari Maathai": "Plantons des arbres et les racines de notre avenir s’enfonceront dans le sol et une canopée \
de l’espoir s’élèvera vers le ciel.",\
"Julien Gracq": "Dans le silence des arbres, à peine distinct de celui des étoiles, ils vécurent une nuit du \
monde dans sa privauté sidérale, et la révolution de la planète, son orbe enthousiasmante parut gouverner \
l'harmonie de leurs gestes les plus familiers.",\
"Emil Cioran": "Des arbres massacrés. Des maisons surgissent. Des gueules, des gueules partout. \
L'homme s'étend. L'homme est le cancer de la terre.",\
"Honoré de Balzac": "Il ne se rencontre pas plus dans la vie de l'homme deux moments de plaisir semblables, \
qu'il n'y a deux feuilles exactement pareilles sur un même arbre.",\
"Rainer Maria Rilke": "Être artiste veut dire ne pas calculer, ne pas compter, mûrir tel un arbre qui ne presse\
pas sa sève, et qui, confiant, se dresse dans les tempêtes printanières sans craindre que l'été puisse \
ne pas venir.",\
"Jean-Marie Gourio": "C'est pas la nature qui décide du nombre des arbres. C'est la mairie.",\
"Victor Hugo": "On ne tourmente pas les arbres stériles et desséchés ; ceux-là seulement sont battus de \
pierres dont le front est couronné de fruits d'or.",\
"Fernando Pessoa": "Il n'est pas suffisant de ne pas être aveugle pour voir les arbres et les fleurs. \
Il faut aussi n'avoir aucune philosophie. Quand il y a philosophie, il n'y a pas d'arbres : \
il y a des idées, sans plus.",\
"Schopenhauer": "Le chien est, à juste titre, le symbole de la fidélité ; parmi les plantes, ce devrait être \
le sapin. Lui seul, en effet, tient bon avec nous, que la saison soit belle ou mauvaise, et ne nous abandonne \
pas en même temps que le soleil nous retire sa faveur, comme font tous les autres arbres, plantes, insectes \
et oiseaux, pour reparaître quand le ciel nous rit de nouveau.",\
"Jacques de Bourbon Busset": "La forêt se dérobe à la lumière et c’est ainsi qu’elle dure. Certes elle assimile \
les richesses du soleil, mais les transforme, les élabore, les conserve. Il y a une grande force dans ce retrait,\
dans ce recueillement. Je voudrais être un arbre, un arbre qui marche.",\
"Jules Renard": "Comprends la vie mieux que moi, moins petitement, et garde toujours ta pensée à la hauteur \
des arbres.",\
"René Char": "Les arbres ne se questionnent pas entre eux, mais trop rapprochés, ils font le geste de s'éviter."}
# -*- coding: utf-8 -*-
from arbres import arbres
import requests
from bs4 import BeautifulSoup
from requests.exceptions import RequestException
from contextlib import closing
from bs4 import BeautifulSoup
import fr_core_news_sm
import re
import pickle
# function to find nouns
def find_nouns(citation):
# set-up Spacy for POS tagging
nlp = fr_core_news_sm.load()
doc = nlp(citation)
# find nouns in quote
nouns = []
for token in doc :
tag = f'{token.text} < {token.pos_}'
if "NOUN" in tag:
substantif = token
nouns.append(substantif)
print("nouns:", nouns)
return(nouns)
# function to find definition for each noun
def find_definition(nouns):
# find definition for each noun in nouns
definitions = []
for nom in nouns :
# convert Spacy syntax to string
nom = nom.text
# define webpage for specific noun
url = "https://www.larousse.fr/dictionnaires/francais"
urlpage = url + '/' + nom
print("urlpage:", urlpage)
# find webpage
page = requests.get(urlpage)
# get content
soup = BeautifulSoup(page.content, 'lxml')
# find specific class of definitions
result = soup.find_all('li', class_="DivisionDefinition")
# select definition 1
if result:
definition = str(result[0])
#print("definition with tag:", definition)
if definition:
# remove example
example = ': <span class="ExempleDefinition">'
if example in definition:
cutdefinition = definition.split(example)
#print("cutdefinition:", cutdefinition)
definition = cutdefinition[0]
# remove html tag
clean_definition = re.sub("<(.+?)>", "", definition)
clean_definition = clean_definition.strip()
clean = nom, clean_definition
#print('word + definition:', nom, clean_definition)
dictionnaire.add(clean)
return dictionnaire
# find value of key in dictionary
dictionnaire = set()
for branche in arbres.values():
citation = branche
nouns = find_nouns(citation)
print("nouns:", nouns)
if nouns:
dictionnaire = find_definition(nouns)
print('dictionnaire first round:', dictionnaire)
print('length dictionnaire def:', len(dictionnaire))
# save dictionnaire as pickle
dumping_data = open('definitions1.obj', 'wb')
pickle.dump(dictionnaire, dumping_data)
from arbres import arbres
import wikipedia
import re
import os.path
import time
# find bio gardener on Wikipedia
def bio(jardinier):
wikipedia.set_lang("fr")
try:
text = wikipedia.page(jardinier)
short_bio = text.summary
except:
short_bio = "Il n'y a pas de page Wikipédia en français sur cette personne."
return short_bio
for jardinier in arbres.keys():
jardinier = jardinier.strip()
if jardinier:
print('Downloading bio for {}'.format(jardinier))
text = bio(jardinier)
print("bio:", text)
filename = re.sub(r'\W', '', jardinier)
print("filename:", filename)
destination = "bios_fr/"+filename+".txt"
with open(destination, 'w') as h:
h.write(text)
time.sleep(.5)
\ No newline at end of file
#!/bin/bash
clear
cd /home/pi/Documents/mundaneum/exhibition/growing_a_tree
while true
do
/usr/bin/python3 greffer_des_arbres_sketch.py
done
\ No newline at end of file
#!/usr/bin/env python
# -*- coding: <utf-8> -*-
'''
It automatises the Oulipo constraint Litterature Definitionelle:
http://oulipo.net/fr/contraintes/litterature-definitionnelle
invented by Marcel Benabou in 1966
In a given phrase, one replaces every significant element (noun, adjective, verb, adverb)
by one of its definitions in a given dictionary ; one reiterates the operation on the newly received phrase,
and again.
Copyright (C) 2020 Constant, Algolit, Anaïs Berck, Gijs de Heij, Alice Neron
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details: <http://www.gnu.org/licenses/>.
'''
import fr_core_news_sm
import pickle
import random
import time
from arbres import arbres
import wikipedia
import os
import os.path
from colored import fg, attr
import re
## Text attributes
bold = attr(1)
underlined = (4)
reset = attr(0)
## Text colors
white = fg(15)
spring_green = fg(48)
light_gray = fg(7)
sky_blue = fg(109)
yellow = fg(3)
# get pickle with dictionary as set
dictionnaire = pickle.load(open("definitions_3rounds.obj", "rb"))
dictionnaire = list(dictionnaire)
# choose quote
def choix_arbre(arbres):
collection = random.choice(list(arbres.items()))
print("collection:", collection)
jardinier = collection[0]
print("jardinier:", jardinier)
arbre = collection[1]
print("arbre:", arbre)
return jardinier, arbre
# find bio gardener on Wikipedia
# def bio(jardinier):
# wikipedia.set_lang("fr")
# try:
# bio = wikipedia.page(jardinier)
# short_bio = bio.summary
# except:
# short_bio = "{}Il n'y a pas de page Wikipédia en français sur cette personne.{}".format(sky_blue, reset)
# return short_bio
def bio_offline(jardinier):
filename = re.sub(r'\W', '', jardinier)
source = "bios_fr/"+filename+".txt"
if source:
with open(source, 'r') as h:
return h.read()
return "{}Il n'y a pas de page Wikipédia en français sur cette personne.{}".format(sky_blue, reset)
# find nouns in quote
def trouver_les_bourgeons(arbre):
# set-up Spacy for POS tagging
nlp = fr_core_news_sm.load()
doc = nlp(arbre)
# find buds/nouns an their positions in quote
bourgeons = []
for bourgeon in doc :
tag = f'{bourgeon.text} < {bourgeon.pos_}'
if "NOUN" in tag:
bourgeon_fertile = bourgeon
bourgeons.append(bourgeon_fertile)
return bourgeons
# find definitions for nouns from dictionary
def greffer(bourgeons):
greffes = []
branche = ""
for bourgeon in bourgeons:
bourgeon = bourgeon.text
greffe = [word for word in dictionnaire if word[0] == bourgeon]
if greffe:
greffe = greffe[0]
print("greffe:", greffe)
greffes.append(greffe)
return greffes
# replace nouns in quote by their definitions
def greffes_qui_poussent(greffes, arbre):
for greffe in greffes:
if greffe:
mot = greffe[0]
print("mot:", mot)
if mot in arbre:
definition = greffe[1]
print("definition:", definition)
arbre_greffe = arbre.replace(mot, definition)
return arbre_greffe
# EXECUTE
# find quote & author
jardinier, arbre = choix_arbre(arbres)
print("jardinier:", jardinier, "arbre:", arbre)
# find bio author
short_bio = bio_offline(jardinier)
print("bref bio:", short_bio)
while len(arbre) < 1500:
# find nouns and their positions in quote
bourgeons = trouver_les_bourgeons(arbre)
print("bourgeons:", bourgeons)
# find definitions for nouns from dictionary
greffes = greffer(bourgeons)
print("greffes:", greffes)
# replace nouns in quote by their definitions
arbre_greffe= greffes_qui_poussent(greffes, arbre)
print('\n')
print("arbre greffé:", arbre_greffe)
print('\n')
# convert changed quote into new tree to be grafted
arbre = arbre_greffe
# ---------------------------------------
# GIJS code to show replacements in color
# def show (state, length=1):
# os.system('clear')
# # Optionally vertically align here
# print(state)
# time.sleep(length)
# def grow (tree, generation = 1):
# branches = nltk.pos_tag(word_tokenize(tree))
# # Filter out nouns, pick one
# position, bud = random.choice([(position, bud[0]) for position, bud in enumerate(branches) if bud[1] == 'NN'])
# # Make new tree placeholder for the bud show we can show it in two states and then grow out
# next_tree = '{} {{}} {}'.format(trim_tree(branches[:max(0, position)]), trim_tree(branches[position+1:]))
# new_branch = grow_new_branch(bud)
# show(tree, 3 if generation == 1 else 1)
# # Mark the bud, underlined and orange
# show(next_tree.format("{}{}{}{}{}".format(bold, yellow, bud, reset, white)), 2)
# # Mark the new branch green
# show(next_tree.format("{}{}{}".format(spring_green, new_branch, white)), 2)
# show(next_tree.format("{}{}{}".format(fg(82), new_branch, white)), 1)
# show(next_tree.format("{}{}{}".format(fg(120), new_branch, white)), 1)
# show(next_tree.format("{}{}{}".format(fg(157), new_branch, white)), 1)
# show(next_tree.format("{}{}{}".format(fg(195), new_branch, white)), 1)
# # Let it grow again
# return next_tree.format(new_branch)
# if __name__ == '__main__':
# while True:
# gardener, source, tree = choose_a_tree(trees)
# short_bio = bio_offline(gardener)
# show(
# 'Using a quote by {}{}{}\n\n'.format(bold, gardener, reset) \
# + short_bio, 3
# )
# generation = 1
# while len(tree) < 1500:
# next_tree = grow(tree, generation)
# if next_tree == tree:
# break
# else:
# tree = next_tree
# generation += 1
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment