diff --git a/Buko/buko.py b/Buko/buko.py index 5ff1aaa..2d2a356 100644 --- a/Buko/buko.py +++ b/Buko/buko.py @@ -6,13 +6,35 @@ from keras.callbacks import ModelCheckpoint, EarlyStopping from glossolalia.loader import load_seeds, load_text from glossolalia.lstm import LisSansTaMaman +""" +Les neurones viennent, et j'leur ai pas demandé +les sirènes bercent les nike de leurs spectateurs +la vie et le charme comme un Jean-Pierre rétro + +les page rimes esthétique +la vie est le tapis, comme un Jean-Pierre philanthrope +un torrent ivre c'est un bout de Monet +La vie est un mystère +Nous est un peu de béton +remplir de côté, c'est mon adage dans le feu +les mots dans la vitre, je me répare +vacante de blues +Nous sommes la vie et je suis né +Nous sommes les yeux qui ont la tronche de grammaire +Je suis un peu noir comme un mur de dix rimes + +rimes en guise de subutex +claque les armes sales +la tronche de ta rente +ésotérisme et pierre de novembre +""" def train(): # should_train = True nb_words = 20 - nb_epoch = 50 + nb_epoch = 60 nb_layers = 100 - dropout = .2 # TODO finetune layers/dropout + dropout = .3 # TODO finetune layers/dropout validation_split = 0.2 lstm = LisSansTaMaman(nb_layers, dropout, validation_split, debug=True) # @@ -27,7 +49,7 @@ def train(): corpus = load_text("./genius.txt") print("Corpus:", corpus[:10]) - lstm.create_model(corpus[:1000]) + lstm.create_model(corpus) if not os.path.exists(dir): os.makedirs(dir) diff --git a/KoozDawa/data/genius.txt b/KoozDawa/data/genius.txt index 247aca7..5c063d8 100644 --- a/KoozDawa/data/genius.txt +++ b/KoozDawa/data/genius.txt @@ -2762,7 +2762,7 @@ Car j'ai la tête dans la lune mais que j'ai quand même les pieds sur Terre [Refrain] C'est vrai je vis dans le péché, le poirier, les camélias -Ce qui veulent m'empêcher de kiffer ont déployé des caméras man +Ceux qui veulent m'empêcher de kiffer ont déployé des caméras man Tu peux pas baiser dans la rue sinon tu finis sur Youjizz Et dans les caves c'est la cohue qui satisfait 9 personnes sur 10 Ils disent parfois qu'j'suis géniaux car on est plusieurs dans ma tête diff --git a/KoozDawa/tweet.py b/KoozDawa/tweet.py old mode 100644 new mode 100755 index 4fd018b..7403152 --- a/KoozDawa/tweet.py +++ b/KoozDawa/tweet.py @@ -1,26 +1,34 @@ +#! /usr/bin/env python from glossolalia.tweeper import Tweeper def tweet(): - # La nuit est belle, ma chérie salue sur la capuche - # grands brûlés de la chine - # Femme qui crame strasbourg + # TOP + # Les rues d'ma vie se terminent par des partouzes de ciel + # La vie est nouée + # où on est fait le printemps + # on squatte le dieu + # une étoile de la chatte sur le porno de la plume + + # WEIRD + # Femme qui crame Strasbourg # le soleil est triste - # on a pas un martyr parce qu't'es la # des neiges d'insuline # Un jour de l'an commencé sur les autres # une hypothèse qu'engendre la haine n'est qu'une prison vide - # Relater l'passionnel dans les casseroles d'eau de marécages - # La nuit c'est le soleil + # trop jeune pour dormir vu tous les yeux - # Les rues d'ma vie se terminent par la cannelle - # Les rues d'ma vie se terminent par des partouzes de ciel # des glaçons pour les yeux brisées # je suis pas juste un verbe que t'observe + # A fleur de peau et de dieu + # la partie bombée de la musique + # le rap des pirates en ciel mais les trous noirs en l'air # si tu sais rien pas d'âme de la vie - Tweeper("KoozDawa").tweet("tassepés en panel") + # "Relater l'passionnel dans les casseroles d'eau de marécages" + msg = "Les rues d'ma vie se terminent par des partouzes de ciel" + Tweeper("KoozDawa").tweet(msg) if __name__ == '__main__': diff --git a/glossolalia/cleaner.py b/glossolalia/cleaner.py index 5b7a04e..7a6ac43 100644 --- a/glossolalia/cleaner.py +++ b/glossolalia/cleaner.py @@ -1,12 +1,11 @@ import json -def clean(text): - # TODO: Remove lines with ??? - # Replace literal newlines - # Remove empty lines - # Replace ’ by ' - pass +def clean_text(corpus: str): + return "\n".join([l.replace("’", "\'") + for l in corpus.split("\n") + if l != "" + and l.find("RapGenius France") == -1]) if __name__ == '__main__': @@ -20,12 +19,8 @@ if __name__ == '__main__': if lyrics is not None: corpus += lyrics + "\n" - corpus = "\n".join([l.replace("’", "\'") - for l in corpus.split("\n") - if l != "" - and l.find("RapGenius France") == -1]) + corpus = clean_text(corpus) print(corpus) with open("../data/genius.txt", "w+") as o: o.writelines(corpus) - diff --git a/glossolalia/lstm.py b/glossolalia/lstm.py index a807689..792438c 100644 --- a/glossolalia/lstm.py +++ b/glossolalia/lstm.py @@ -8,6 +8,7 @@ from keras.layers import Embedding, LSTM, Dropout, Dense from keras.utils import to_categorical from keras_preprocessing.sequence import pad_sequences from keras_preprocessing.text import Tokenizer +from tensorflow import set_random_seed from glossolalia.tokens import PoemTokenizer @@ -116,7 +117,6 @@ def generate_text(model: Sequential, tokenizer: Tokenizer, seed_text="", nb_word def debug_unrandomize(): from numpy.random import seed - from tensorflow_core.python.framework.random_seed import set_random_seed # set seeds for reproducibility set_random_seed(2) diff --git a/glossolalia/lyrics.py b/glossolalia/lyrics.py index 0775915..cb6f88f 100644 --- a/glossolalia/lyrics.py +++ b/glossolalia/lyrics.py @@ -2,12 +2,11 @@ import lyricsgenius from lyricsgenius.artist import Artist -def fetch(artist_name: str): +def fetch(artist_name: str, max_songs=None): genius = lyricsgenius.Genius("zUSpjfQ9ELXDqOjx9hGfAlJGYQFrNvHh3rlDV298_QSr5ScKf3qlHZtOO2KsXspQ") - dooz: Artist = genius.search_artist(artist_name) - dooz.save_lyrics(overwrite=True) + artist: Artist = genius.search_artist(artist_name, max_songs=max_songs) + artist.save_lyrics(overwrite=True, filename="../data/Lyrics_%s.json" % artist_name) if __name__ == '__main__': - fetch("Lucio Bukowski") - fetch("Hippocampe Fou") + fetch("Orelsan") diff --git a/glossolalia/tokens.py b/glossolalia/tokens.py index 916059f..099153f 100644 --- a/glossolalia/tokens.py +++ b/glossolalia/tokens.py @@ -4,10 +4,10 @@ from glossolalia.loader import load_texts class PoemTokenizer(Tokenizer): - def __init__(self, lower:bool = True, **kwargs) -> None: + def __init__(self, lower: bool = True, **kwargs) -> None: super().__init__(lower=lower, # TODO: Better generalization without? filters='$%&*+/<=>@[\\]^_`{|}~\t\n', oov_token="😢", - **kwargs) #TODO: keep newlines + **kwargs) # TODO: keep newlines def get_sequence_of_tokens(self, corpus): self.fit_on_texts(corpus) diff --git a/requirements.txt b/requirements.txt index ee713fe..3fecdb9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -31,11 +31,11 @@ rsa==4.0 scipy==1.3.2 six==1.13.0 tensorboard==2.0.1 -tensorflow==2.0.0 +tensorflow==1.14.0 tensorflow-estimator==2.0.1 termcolor==1.1.0 tweepy==3.8.0 urllib3==1.25.7 Werkzeug==0.16.0 wrapt==1.11.2 -spacy==2.2.3 \ No newline at end of file +spacy==2.2.3