-
Notifications
You must be signed in to change notification settings - Fork 17
Novel Novel Generation (The Infinite Garden of One Thousand and One Stories) #35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Last year's generated novel, was pretty good at generating text that had local coherency but wasn't nearly as interesting as a whole. So, this year, I decided to go in the opposite direction. Rather than starting by generating the moment-to-moment text, I started with the overall structure and am gradually working my way down from high-level concepts to smaller and smaller structures. As a point of literary inspiration, the strongest influence so far has been A Thousand and One Nights, particularly the recursively embedded nature of the stories. The primary architecture of the novel generator is itself recursive, capable of encapsulating another novel generator within itself. The recursive stack of novel generators As a side effect of this approach, I decided to take advantage of lazy evaluation. Iterating the novel generator produces an infinite sequence containing the generator and it's total past output. It is not currently generating the recursive generators because while the recursive part is implemented, the ability to exit a generator and go back up the generator stack is not. Having the novel start out infinite means that I'm working backwards and orthogonally from the typical NaNoWriMo algorithm: rather than starting at zero and incrementing upwards by coherently adding words, I'm starting at infinity and gradually introducing coherence and meaningful content. |
Nice! I'm taking a similar approach myself, starting with overall plot and narrative arcing and then generating local bits within that arc. https://gist.github.com/dariusk/3b8cd1dd38a0e8e3fe37 |
@dariusk I think several of us have had similar ideas this time around. My concept also has a striking conceptual resemblance to what @MichaelPaulukonis has been doing. Though his output is much further along. I'm basing my ideas for the underlying structure partially on the work that Failbetter Games has been doing for things like Fallen London. The generators have lists of templates that they try to assemble according to their internal criteria. This is not very evident in the current output, which is a weakness I hope to fix, but a look under the hood shows a bit more going on:
The secondary thing I'm attempting is to embed meaning in the underlying structures themselves, so that even if the surface text is nonsense, there's a foundation of underlying meaning. The structures will, of course, be mostly hand-written, though I did deliberately chose a language that makes it easy for code to be treated as data. The choice of a recursive structure is useful both for generating a repeating pattern and because it reflects the nature of the code itself, which uses recursive functions as part of the process. |
@ikarth -- the 3000 words link is not rendering for me. |
@MichaelPaulukonis fixed the link to the gist. It's a little monotonous. Here's a snippet that's very slightly more interesting, demonstrating the recursion: about 150 or so levels of inescapable nested realities: https://gist.github.com/ikarth/afeeaf3a883904bb1720#file-nonogen2014-002-md |
It was a dark and stormy night, the ship was sinking; "Tell us a story, Captain!" the crew begged. The Captain began: It was a dark and stormy night, the ship was sinking; "Tell us a story Captain!" the crew begged. The Captain began..... |
@hugovk I am greatly amused. My repository is here, by the way: https://github.com/ikarth/nonogen |
https://gist.github.com/ikarth/f38664f8eefcc994e2d6#file-gistfile1-md
It can now come out of inner stories successfully. Plus, randomly shuffles possible story chunks to pick from the next one. Annoyingly, it's currently not deterministic, so you get a different story each time, which is complicating testing. |
Curiouser and curiouser.... |
Tempted to deliberately reproduce Borges' Book of Sand as a web page. Ah well, maybe next year. |
Borges' Library of Babel is online: http://dicelog.com/babel |
|
What is this, InfoSecSheherezade? With a shout-out to Kryptos |
https://github.com/ikarth/nonogen/blob/master/texts/output/NoNoGen2014-005.markdown The other major objective is to add more generators. Right now, there are only two generators: the storytelling one, and the Babel Library Book one. But the system allows me to stack whatever arbitrary text generators I code up. (Downside: I still have to write them.) Anyway, I'm hoping today marks a shift from core systems to content. If I can get some more stuff in that should make it somewhat more interesting to read. On the plus side, I passed the word count last week with a completion ratio of Infinity%. (I have not read the entire book, just the first 600 lines.) |
Now with more characters! It's much easier to follow the nested patterns this way...
|
Another update: this time I've added labyrinths for the characters to get lost in. The labyrinths are, unbeknownst to the characters, the data structure of the story-state (turned into a zipper).
|
Not nearly as far along as I'd like, but I'm adding a few additional things today. |
Well I didn't expect that to happen:
|
"You may not have expected it to Halloween. Bury it's obvious that JLB did.".replace(/halloween/i, 'happen').replace(/Bury/, 'But'); SHEESH. atuo-complete on a phone On Nov 30, 2014 8:37 PM, "ikarth" [email protected] wrote:
|
I could keep improving it, but this is a good place to stop for the month. Completed: The Infinite Garden of One Thousand and One Stories5,665,188 words, with a seed of 5.16746766851914E8 and a running time of 123337.824542 msecs. Repository can be found here. |
Wow. Thirty-eight thousand, three hundred and fourteen point six-three-five kilobytes of Markdown, according to Github. I quite enjoyed the occasional Korean loanwords. After my browser unfroze after a minute and a half, that is. |
WHO THE H**L IS ALEX |
@MichaelPaulukonis Why, the person whose birthday it is, of course. |
the doshes are still being distimmed by the gostak it seems |
After some brainstorming for a fresh idea, looks like I'm in. I think I've got a clever idea. I guess I'll find out if its clever enough.
We'll also see how much I get done, since I'll probably also be taking time off to make something for the ProcGen jam: http://itch.io/jam/procjam
The text was updated successfully, but these errors were encountered: