From efeff640d018432233e97ebb7a60e4383bd42cb7 Mon Sep 17 00:00:00 2001 From: Paul-Louis NECH Date: Sun, 17 Nov 2019 19:26:33 +0100 Subject: [PATCH] feat(Dawa): Seeds --- .gitignore | 3 +++ KoozDawa/data/apocalypse | 171 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- KoozDawa/data/apocalypse.txt | 171 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ KoozDawa/dawa/loader.py | 21 ++++++++++++++++++++- KoozDawa/dawa/lstm.py | 36 ++++++++++++++++-------------------- KoozDawa/output/selection.txt | 0 6 files changed, 210 insertions(+), 192 deletions(-) delete mode 100644 KoozDawa/data/apocalypse create mode 100644 KoozDawa/data/apocalypse.txt create mode 100644 KoozDawa/output/selection.txt diff --git a/.gitignore b/.gitignore index 92a65a9..c26a768 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,6 @@ dmypy.json # IDE .idea/ + +# Outputs +output/ diff --git a/KoozDawa/data/apocalypse b/KoozDawa/data/apocalypse deleted file mode 100644 index 88ee2c3..0000000 --- a/KoozDawa/data/apocalypse +++ /dev/null @@ -1,171 +0,0 @@ -- Alors ? -- On a juste trouvé une lettre -- Quoi ? -- Une lettre -- Aucun être c'est tout ce qu'il reste. Qu'est-ce que ça raconte ? " - - -[Couplet 1] -Mon dieu que ce monde qui s'effondre est sombre et sombre en cendres -Tant ont péris -Qu'ils sentent mon pays -C'est avant et après le volcan de Pompéï - -Depuis les bombes du mois de Décembre -Il tombe des cendres -Qui se mélangent aux flocons de l'hiver -Leur objectif était de descendre -Les gens virulents échappés d'un peloton militaire -Il plane dans l'air comme une arme de guerre - -Mais ils nous l'annoncèrent seulement après des mois -Quand l'innocula la Terre -Le virus était sorti de leurs schémas - -Après le tremblement de terre à sa rencontre avec les eaux irradiées de Fukushima -C'est ce qu'on croit, cette eau qu'on a rejeté dans l'océan -Seulement sans précaution d'emploi -Dans les gros titres, des morts horribles épidémiques jusqu'à chez moi -Bien sur l'Amérique a déclaré que c'était à cause de ces faux-culs de chinois - -Les signes étranges ont commencé -Après les faits divers immondes -Les types qui mangeaient ceux qui passaient -Et les dévorés vivants en très grand nombre - -Des morts vivants sortis de l'ombre -L'aviation bombardait de haut -Paris, Bombay, Washington, Londres -Et depuis lors, silence radio - -Si très peu de gens sont toujours en vie -Les villes sont remplies de zombies -Mais pas les mêmes qu'à notre époque -Ces débiles qui écoutaient Skyrock - - -[Refrain] -Au crépuscule de l'apocaplyspe -Je veux que ta peau brûle contre mes lips -Qu'on se tienne la main sous le porche -Et bute les zombies qui approchent - -Je ferais du mieux pour être l'ersatz -Qu'effacerait de tes yeux ces remords -Avec toi une dernière valse -Au milieu des arbres morts - - -[Couplet 2] -Ils sacrifient nos vies au bacille -Pour le profit puisque ça rapporte -Quoi ? Tu trouves rien dans la pharmacie -Pour des zombies qui grattent à la porte ? - -Attrape la scie : check; l'acide : check, du coton, de l'alcool -Et puis on met le feu à des torchons qui sont enroulés sur des casseroles - -Barricadés mais la porte casse d'oh -Avec mon fusil à pompe funèbres -Je crâme une ganache qui dépasse -Du haut du crâne jusqu'à la lèvre - -Ma chérie viens, tiens moi la main -Si on devait ne pas survivre aux assauts -J'ai détaché le chien dans le jardin -Et puis ouvert la cage aux oiseaux - -Qui eut cru que le virus nous décimerait ? -Alors que l'Europe est en guerre -À cause de l’annexion de la Crimée -Par les russes à coups de bombes nucléaires - -Que la Chine a envahi le Japon -Et puis la Turquie tue le Grèce -Les Etats-Unis ils tuent tout le monde -Bien sûr ils disent c'est eux qu'on agresse - -Israël termine tranquillement son génocide typique -Quand soudain ont vit des humains modifiés dans leur génotypes - - -[Refrain] -Au crépuscule de l'apocaplyspe -Je veux que ta peau brûle contre mes lips -Qu'on se tienne la main sous le porche -Et bute les zombies qui approchent - -Je ferais du mieux pour être l'ersatz -Qu'effacerait de tes yeux ces remords -Avec toi une dernière valse -Au milieu des arbres morts - - - -Le coucher de flammes du ciel est trop beau -Sur les arbres qui crâment en feu de paillettes -L'intelligence artificielle, les robots -Siri devient Skynet - -Leurs caméras qui suivent tout nos pas -Sarah Connor ne nous sauvera pas - -Les machines détraquées -Se mirent à attaquer les humains -Ils savaient tous où nous traquer -Leurs chenilles faisaient trembler les chemins - -Puisqu'ils avaient tous les codes -Et ils connaissaient tes potes -Même ton jour d'anniversaire -Des données qu'on reversait sur Facebook, Twitter - -Les pseudonymes des vidéos games en RPG -Ils se retrouvèrent piégés -Les humains se sont fichés tous seuls -En références excel et comptes bancaires -Ils ont mêmes les numéros -De tes préférences sexuelles avec des animaux - -Il y a pas de soucis pour nous -Puisque on va sortir de là -Ferme tous les verrous -Et on va se cacher sur le toit - -Je crois que cette fois ci bah c'est l'attaque finale -Et je t'ai déjà dis que sans toi j'serais mal - -Mais le toit craque elle crie plus de bruit quand elle atterrit à la cave -Est-ce qu'elle est encore en vie? -J'en pleure de rage quand je vois tous les zombies se diriger vers la cave - -À la porte ça gratte, je dirige le canon de mon fusil -Comment ? Une fille ?! -Ma chérie, je t'ai crue en grand danger -J'pensais même t'avoir perdue -Tu dis rien, mais sa paire d'yeux avait changé -Comme deux billes - -Elle se jette sur oim et m'arrache mon arme -On tombe sur le sol, j'extirpe mon schlass -Et transperce son sternum -Et lui brise la nuque sous mes palladiums - -J'attrape mon remington -La crosse contre le mur et le sol -Et m'assoie devant le canon dans la bouche -Le sang gicle comme une douche je gis avec ma douce - - -[Refrain] -Au crépuscule de l'apocaplyspe -J'veux qu'ta peau brûle contre mes lips -Qu'on se tienne la main sous le porche -Et bute qu'les zombies qui approchent - -Je ferais du mieux pour être l'ersatz -Qu'effacerait de tes yeux ces remords -Avec toi, une dernière valse -Au milieu des arbres morts - -Danse avec moi jusqu'à la fin, jusqu'à la fin des temps \ No newline at end of file diff --git a/KoozDawa/data/apocalypse.txt b/KoozDawa/data/apocalypse.txt new file mode 100644 index 0000000..88ee2c3 --- /dev/null +++ b/KoozDawa/data/apocalypse.txt @@ -0,0 +1,171 @@ +- Alors ? +- On a juste trouvé une lettre +- Quoi ? +- Une lettre +- Aucun être c'est tout ce qu'il reste. Qu'est-ce que ça raconte ? " + + +[Couplet 1] +Mon dieu que ce monde qui s'effondre est sombre et sombre en cendres +Tant ont péris +Qu'ils sentent mon pays +C'est avant et après le volcan de Pompéï + +Depuis les bombes du mois de Décembre +Il tombe des cendres +Qui se mélangent aux flocons de l'hiver +Leur objectif était de descendre +Les gens virulents échappés d'un peloton militaire +Il plane dans l'air comme une arme de guerre + +Mais ils nous l'annoncèrent seulement après des mois +Quand l'innocula la Terre +Le virus était sorti de leurs schémas + +Après le tremblement de terre à sa rencontre avec les eaux irradiées de Fukushima +C'est ce qu'on croit, cette eau qu'on a rejeté dans l'océan +Seulement sans précaution d'emploi +Dans les gros titres, des morts horribles épidémiques jusqu'à chez moi +Bien sur l'Amérique a déclaré que c'était à cause de ces faux-culs de chinois + +Les signes étranges ont commencé +Après les faits divers immondes +Les types qui mangeaient ceux qui passaient +Et les dévorés vivants en très grand nombre + +Des morts vivants sortis de l'ombre +L'aviation bombardait de haut +Paris, Bombay, Washington, Londres +Et depuis lors, silence radio + +Si très peu de gens sont toujours en vie +Les villes sont remplies de zombies +Mais pas les mêmes qu'à notre époque +Ces débiles qui écoutaient Skyrock + + +[Refrain] +Au crépuscule de l'apocaplyspe +Je veux que ta peau brûle contre mes lips +Qu'on se tienne la main sous le porche +Et bute les zombies qui approchent + +Je ferais du mieux pour être l'ersatz +Qu'effacerait de tes yeux ces remords +Avec toi une dernière valse +Au milieu des arbres morts + + +[Couplet 2] +Ils sacrifient nos vies au bacille +Pour le profit puisque ça rapporte +Quoi ? Tu trouves rien dans la pharmacie +Pour des zombies qui grattent à la porte ? + +Attrape la scie : check; l'acide : check, du coton, de l'alcool +Et puis on met le feu à des torchons qui sont enroulés sur des casseroles + +Barricadés mais la porte casse d'oh +Avec mon fusil à pompe funèbres +Je crâme une ganache qui dépasse +Du haut du crâne jusqu'à la lèvre + +Ma chérie viens, tiens moi la main +Si on devait ne pas survivre aux assauts +J'ai détaché le chien dans le jardin +Et puis ouvert la cage aux oiseaux + +Qui eut cru que le virus nous décimerait ? +Alors que l'Europe est en guerre +À cause de l’annexion de la Crimée +Par les russes à coups de bombes nucléaires + +Que la Chine a envahi le Japon +Et puis la Turquie tue le Grèce +Les Etats-Unis ils tuent tout le monde +Bien sûr ils disent c'est eux qu'on agresse + +Israël termine tranquillement son génocide typique +Quand soudain ont vit des humains modifiés dans leur génotypes + + +[Refrain] +Au crépuscule de l'apocaplyspe +Je veux que ta peau brûle contre mes lips +Qu'on se tienne la main sous le porche +Et bute les zombies qui approchent + +Je ferais du mieux pour être l'ersatz +Qu'effacerait de tes yeux ces remords +Avec toi une dernière valse +Au milieu des arbres morts + + + +Le coucher de flammes du ciel est trop beau +Sur les arbres qui crâment en feu de paillettes +L'intelligence artificielle, les robots +Siri devient Skynet + +Leurs caméras qui suivent tout nos pas +Sarah Connor ne nous sauvera pas + +Les machines détraquées +Se mirent à attaquer les humains +Ils savaient tous où nous traquer +Leurs chenilles faisaient trembler les chemins + +Puisqu'ils avaient tous les codes +Et ils connaissaient tes potes +Même ton jour d'anniversaire +Des données qu'on reversait sur Facebook, Twitter + +Les pseudonymes des vidéos games en RPG +Ils se retrouvèrent piégés +Les humains se sont fichés tous seuls +En références excel et comptes bancaires +Ils ont mêmes les numéros +De tes préférences sexuelles avec des animaux + +Il y a pas de soucis pour nous +Puisque on va sortir de là +Ferme tous les verrous +Et on va se cacher sur le toit + +Je crois que cette fois ci bah c'est l'attaque finale +Et je t'ai déjà dis que sans toi j'serais mal + +Mais le toit craque elle crie plus de bruit quand elle atterrit à la cave +Est-ce qu'elle est encore en vie? +J'en pleure de rage quand je vois tous les zombies se diriger vers la cave + +À la porte ça gratte, je dirige le canon de mon fusil +Comment ? Une fille ?! +Ma chérie, je t'ai crue en grand danger +J'pensais même t'avoir perdue +Tu dis rien, mais sa paire d'yeux avait changé +Comme deux billes + +Elle se jette sur oim et m'arrache mon arme +On tombe sur le sol, j'extirpe mon schlass +Et transperce son sternum +Et lui brise la nuque sous mes palladiums + +J'attrape mon remington +La crosse contre le mur et le sol +Et m'assoie devant le canon dans la bouche +Le sang gicle comme une douche je gis avec ma douce + + +[Refrain] +Au crépuscule de l'apocaplyspe +J'veux qu'ta peau brûle contre mes lips +Qu'on se tienne la main sous le porche +Et bute qu'les zombies qui approchent + +Je ferais du mieux pour être l'ersatz +Qu'effacerait de tes yeux ces remords +Avec toi, une dernière valse +Au milieu des arbres morts + +Danse avec moi jusqu'à la fin, jusqu'à la fin des temps \ No newline at end of file diff --git a/KoozDawa/dawa/loader.py b/KoozDawa/dawa/loader.py index 9ccf9df..682d16c 100644 --- a/KoozDawa/dawa/loader.py +++ b/KoozDawa/dawa/loader.py @@ -1,5 +1,7 @@ import os import string +from pprint import pprint +from random import choice, randint from numpy.random import seed from tensorflow_core.python.framework.random_seed import set_random_seed @@ -11,7 +13,9 @@ def load_kawa(root="./"): seed(1) data_dir = root + 'data/' all_lines = [] - for filename in os.listdir(data_dir): + files = os.listdir(data_dir) + print("%i files in data folder." % len(files)) + for filename in files: with open(data_dir + filename) as f: content = f.readlines() all_lines.extend(content) @@ -23,6 +27,19 @@ def load_kawa(root="./"): return all_lines +def load_seeds(kawa=None, nb_seeds=10): + if kawa is None: + kawa = load_kawa() + seeds = [] + for i in range(nb_seeds): + plain_kawa = filter(lambda k: k != "\n", kawa) + chosen = choice(list(plain_kawa)) + split = chosen.split(" ") + nb_words = randint(1, len(split)) + seeds.append(split[:nb_words]) + return seeds + + def clean_text(lines): """ In dataset preparation step, we will first perform text cleaning of the data @@ -37,6 +54,8 @@ def main(): lines = load_kawa("../") clean = clean_text(lines) print(clean) + print("Some seeds:\n\n") + pprint(load_seeds(lines)) if __name__ == '__main__': diff --git a/KoozDawa/dawa/lstm.py b/KoozDawa/dawa/lstm.py index 478fe19..ed2c0f7 100644 --- a/KoozDawa/dawa/lstm.py +++ b/KoozDawa/dawa/lstm.py @@ -7,7 +7,7 @@ from keras.utils import to_categorical from keras_preprocessing.sequence import pad_sequences from keras_preprocessing.text import Tokenizer -from KoozDawa.dawa.loader import load_kawa, clean_text +from KoozDawa.dawa.loader import load_kawa, clean_text, load_seeds from KoozDawa.dawa.tokens import get_sequence_of_tokens warnings.filterwarnings("ignore") @@ -61,35 +61,31 @@ def generate_text(model, tokenizer, seed_text="", nb_words=5, max_sequence_len=0 def main(): should_train = True - nb_epoch = 100 - max_sequence_len = 61 # TODO: Test different default # model_file = "../models/dawa_lstm_%i.hd5" % nb_epoch + nb_epoch = 100 + nb_words = 200 tokenizer = Tokenizer() - if should_train: - lines = load_kawa() + # if should_train: + lines = load_kawa() - corpus = [clean_text(x) for x in lines] - print("Corpus:", corpus[:2]) + corpus = [clean_text(x) for x in lines] + print("Corpus:", corpus[:5]) - inp_sequences, total_words = get_sequence_of_tokens(corpus, tokenizer) - predictors, label, max_sequence_len = generate_padded_sequences(inp_sequences, total_words) - model = create_model(max_sequence_len, total_words) - model.summary() + inp_sequences, total_words = get_sequence_of_tokens(corpus, tokenizer) + predictors, label, max_sequence_len = generate_padded_sequences(inp_sequences, total_words) + model = create_model(max_sequence_len, total_words) + model.summary() - model.fit(predictors, label, epochs=nb_epoch, verbose=5) - # model.save(model_file) + model.fit(predictors, label, epochs=nb_epoch, verbose=5) + # model.save(model_file) # else: # FIXME: Load and predict - # model = load_model(model_file) + # model = load_model(model_file) - for sample in ["", - "L'étoile du sol", - "Elle me l'a toujours dit", - "Les punchlines sont pour ceux"]: - nb_words = 200 + for sample in load_seeds(lines): print(generate_text(model, tokenizer, sample, nb_words, max_sequence_len)) - with open("../output/lstm.txt", "a") as f: + with open("./output/lstm.txt", "a+") as f: while True: input_text = input("> ") text = generate_text(model, tokenizer, input_text, nb_words, max_sequence_len) diff --git a/KoozDawa/output/selection.txt b/KoozDawa/output/selection.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/KoozDawa/output/selection.txt -- libgit2 0.27.0