woensdag 2 december 2015

LSTMs - met James Potter - 2

Ja, de nieuwe 'auto-boek-generator' lijkt nu toch al aardig te werken. Het roept in ieder geval mysterie op. Ik heb de originele 'letter-generator' omgebouwd naar een 'woorden-generator'. Zoals eerder aangegeven bestaat het boek uit 13.075 verschillende woorden. Als ik daar de meestgebruikte 5000 uit selecteer krijg ik ongeveer de woorden die meer dan 2x in het boek gebruikt worden. Een van de 'truukjes' daarvoor is 'collections':

import collections
counter = collections.Counter(text)
words = []
for word, number in counter.most_common(5000):

    words += [word]

Daarmee heb ik dus in 'words' de 5000 meestgebruikte woorden. Met de volgende eenvoudige regel verwijder ik alle woorden uit de tekst (text) die niet in deze 5000 meestgebruikte woordenlijst staan:


text = [x for x in text if x in words]

Wat is Python toch makkelijk voor dit soort dingen! Voor de rest zitten er in het oorspronkelijke programma nog wat 'string opdrachten' die aangepast moeten worden daar ik nu met 'lists' werk in plaats van losse karakters. Bijvoorbeeld:

['', '_', 'james', 'potter', 'en', 'de', 'vloek', 'van', 'de', 'poortwachter', '_', '', '.', 'norman', 'lippert', '_', 'gebaseerd', 'op', 'de', 'en']



Na wat debugging werkt het zonder klagen en krijg ik ondermeer deze teksten terug:

Iteration 41
Epoch 1/1
78474/78474 [==============================] - 105s - loss: 2.9526     

----- diversity: 0.2
----- Generating with seed: "['.', 'dan', 'kom', 'hij', 'eenvoudig', 'de', 'spiegel', 'aan', 'deze', 'kant']"
. dan kom hij eenvoudig de spiegel aan deze kant idee . hij had het zelf zijn , maar hij wist het niet precies . hij had hij geen kans zien . hij had het geweest om het soort van de wereld te laten .  _ het is een soort ,  zei james .  het moet een manier van de rol , dus iedereen ,  zei ralph .  het is een reden , en ze van een . maar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
----- diversity: 0.5
----- Generating with seed: "['.', 'dan', 'kom', 'hij', 'eenvoudig', 'de', 'spiegel', 'aan', 'deze', 'kant']"

. dan kom hij eenvoudig de spiegel aan deze kant zijn ,  zei ze een hand op haar stoel .  je weet het niet , maar we het niet . maar je moet niet dat je wilt wil . laten je dat je kunt niet helpen _ _ _ james haalde haar hoofd .  maar we hebben op het echt .  _ de waarheid van de spitsroede is het geen probleem van mijn . we we zijn . misschien misschien denk je dat hij in de hand wist dat je geen zwadderaar kon .  _ _ je moet hem van mijn voorhoofd dat ik niet te houden .  _ james keek naar james ,  vroeg ?  dit zal wel niet komen . we hebben niet te helpen .  _ dat we het niet ,  zei roos .  maar je kunt geen manier moeten hoor dat je niet direct .  _ dat ga het niet gaan ,  zei james .  als je het niet wil ga waarom .  _ de groep van de groep zag james de stopten naar de compartiment en dwingend in het veld . _ het is er niet te herinneren ,  zei ralph .  maar als u niet vertrouwen .  _ _ albus scheen te gaan van de deur ,  zei roos met een stem stem .  ik wil niet dat we wilt gaan als het niet echt .  _ james ,  zei roos ,  de hele steen van de problemen waarop van de baken doorgang stond in de ruimte ?  vroeg james . _ _ ik bedoel dat het niet ,  vroeg albus , maar het was op een lange enorm . het was bijna niets op beide kanten . james , en en leek harry te gaan wat het al zou geleerd . maar als je het soort doen . . ik heb het niet veel best in de rol van as . ze wil er mij van .  _ de vond dat we ook om meer meer meer te helpen tot zijn potter . hij was met voldemort om die een paar van te gaan als hij meer een andere gehouden zou aan het gedragen . het was , en nu , hij zelfs niet dat petra er niet aan de tijd en zou het daarbij in de

Toch al bijna een leesbaar verhaal :-). Veel taalstructuur begint herkenbaar te worden. Maar wat (voor mij) belangrijker is is dat het algoritme weinig moeite lijkt te hebben met de input en output van 5000 verschillende woorden. De iteraties gaan ook behoorlijk wat sneller dan bij de karakter-generator. Zou het uitmaken als ik alle 13.075 woorden zou gebruiken? 

Dat blijkt ook probleemloos te gaan. Fantastisch dat het geen probleem blijkt om een matrix van 13.075 woorden x 10 zinlengte x 78.474 zinsconstructies (sequences)  aan het LSTM aan te bieden. De zinnen worden dan vollediger, meer samenhangend. Toch nog maar even een voorbeeld:

Iteration 59
Epoch 1/1
81730/81730 [==============================] - 202s - loss: 0.8225     

----- diversity: 0.2
----- Generating with seed: "['zijn', 'zesde', 'jaars', ',', '', 'wees', 'gerard', 'terecht', '.', '']"

zijn zesde jaars ,  wees gerard terecht .  _ ik leek hem van de wereld van de ratten ,  zei hij , zijn toverstok op de ruimte halend en keek langs van de richting met james s ogen .  hij is niet niet wat we hem .  _ james had zijn ogen tussen de kamer en keek over hem schouder . hij keek op op en keek naar zijn hand , en keek draaide op . _ james keek alleen op naar de kamer , en donkerder , en haalde james .  _ wat weet je james ,  zei james met een beetje en  het is niet niets om te maken . ik zie het er niet uit ,  zei james , een zitten gezicht door de ruimte en en en rood vallend op het comite . het is niet van het soort voorbij .  _ ralph knikte .  ik heb je niet maar maar hij zag er niet niet in de andere persoon van de zwadderich ,  zei hij op ,  _ we gebruikte hij hem ,  zei ralph , springend op de kloof , en james stem om . de kleine knipperde , en wees langzaam . james keek door naar de richting en ging op het bureau . hij keek nog niet niet aan de vloer . zijn gezicht was hij uit zijn voorhoofd , ralph in de bibliotheek en liet hem op james mompelend naast de vlaggen . toen toen ze toen ze stopte keek , en zag de schaduw iets . _ 47 begon naar het te denken en harry op een weg schaduw open .  ik heb niet niet dat niet worden .  _ ze is dat ik wil nodig op de overige als een soort heks - beetje - - heer - mijn productie eruit van een ruimte .  _ geloof _ het was iets !  riep james , en zijn gezicht was zijn toverstok en stond . hij sprong door james , en de leerlingen vleugel gleed , de grond van zijn hoofd achter wierp en sprong . _ james _ james keek op , maar ze was een stukje grotere liet dan ze half geven - gezicht .  ik heb ze niet op je !  _ ze is geen nteresseerd ,  fluisterde govert .  ik ben alleen was ,







Geen opmerkingen:

Een reactie posten