NaNoGenMo / 2016

National Novel Generation Month, 2016 edition.
https://nanogenmo.github.io
162 stars 7 forks source link

Entry: stealing Lovecraft's formula #12

Open enkiv2 opened 7 years ago

enkiv2 commented 7 years ago

H. P. Lovecraft has more variance than people give him credit for, but a lot of his stories really structured the same way: a scientifically-minded young man from Massachusetts with an anglo-saxon name studies something, discovers something unexpected about either his own family history or the history of the Earth, suffers a nervous breakdown during which he stops trusting his own senses, and kills himself, usually told as a set of letters or diary entries. Since other aspects of Lovecraft are easy to poorly imitate (using the words "eldrich" and "rugose" will do), it seems like it should be fairly straightforward to produce stories that are poor imitations of Lovecraft using templating. I'll start off with something similar to last year's "PKD pitches" entry, but I hope to turn this into something more closely resembling actual stories.

I expect to use GGC for this. I may extend what GGC is capable of doing, perhaps by adding the ability to import arbitrary python code.

I will be putting this project in http://github.com/enkiv2/misc/nanogenmo-2016 ; currently I'm gathering some corpora there for that & other nanogenmo projects.

enkiv2 commented 7 years ago

I've created the first novel-length snapshot for this: https://github.com/enkiv2/misc/blob/master/nanogenmo-2016/fakeLovecraftSample1.md

The mechanics behind this are a little complicated. I've produced a GG template library from various lists of names from the Lovecraft mythos ( https://github.com/enkiv2/misc/blob/master/nanogenmo-2016/lovecraft-fixtures.gg ); I then process Lovecraft's whole fiction corpus separating out paragraphs and substituting all recognized names with template rules. Most of the effort involved in this is in cleaning up the text and working around the limitations of GG and python -- specifically, somehow, the original text contains all sorts of characters that GGC doesn't like (plus nulls, which python doesn't like), in addition to containing all sorts of things that aren't paragraphs; python also doesn't seem to like extremely long lists of strings, so I automatically split the rules into chunks.

Now, my end goal is actually to produce something with a proper story structure, so I'm going to have to manually sort paragraphs based on where they can go in a story and which other paragraphs can go next to them, and generate a stricter template library. In the process, I'd like to switch templates on and off based on which of several themes have been randomly selected. For this I'll have to write a bunch of python code.

Unfortunately, although I added support for importing python code directly into GG, this feature doesn't work reliably. I'll have to debug it before I can do some of the more interesting stuff I have planned.

enkiv2 commented 7 years ago

And, I have a second entry in this theme: https://raw.githubusercontent.com/enkiv2/misc/master/nanogenmo-2016/stupidLovecraftSample1.md

This (implemented by stupid-lovecraft.sh) substitutes all of the quotes in Lovecraft with random quotes from either Jack Handey or dril.

MichaelPaulukonis commented 7 years ago

You're missing a golden opportunity to extend the reach of Lovecraftian pseudobiblia:

arcaneText:=Book of Azathoth,Book of Eibon,Book of Iod,Celaeno Fragments,Cthäat Aquadingen,Cultes des Goules,De Vermis Mysteriis,Dhol Chants,Eltdown Shards,G'harne Fragments,The King in Yellow,Liber Ivonis,Necronomicon,On the Sending Out of the Soul,Parchments of Pnom,Pnakotic Manuscripts,Poakotic Fragments,Ponape Scripture,Las Reglas de Ruina,Revelations of Gla'aki,Seven Cryptical Books of Hsan,Tarsioid Psalms,Testament of Carnamagos,Unaussprechliche Kulte,Zanthu Tablets,Zhou Texts

Book of ..., Fragments, Chants, Shards, Texts etc.

enkiv2 commented 7 years ago

I think you're drastically underestimating how much I plan to eventually do on this :). I definitely will eventually extend arcane texts, but I plan to categorize paragraphs by where they can appear in what kind of story first.

On Wed, Nov 2, 2016 at 12:58 PM Michael Paulukonis notifications@github.com wrote:

You're missing a golden opportunity to extend the reach of Lovecraftian pseudobiblia:

arcaneText:=Book of Azathoth,Book of Eibon,Book of Iod,Celaeno Fragments,Cthäat Aquadingen,Cultes des Goules,De Vermis Mysteriis,Dhol Chants,Eltdown Shards,G'harne Fragments,The King in Yellow,Liber Ivonis,Necronomicon,On the Sending Out of the Soul,Parchments of Pnom,Pnakotic Manuscripts,Poakotic Fragments,Ponape Scripture,Las Reglas de Ruina,Revelations of Gla'aki,Seven Cryptical Books of Hsan,Tarsioid Psalms,Testament of Carnamagos,Unaussprechliche Kulte,Zanthu Tablets,Zhou Texts

Book of ..., Fragments, Chants, Shards, Texts etc.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/NaNoGenMo/2016/issues/12#issuecomment-257928044, or mute the thread https://github.com/notifications/unsubscribe-auth/AAd6GVFI1aEWCgyAxyFxAtFzgEDSN9wsks5q6MEfgaJpZM4KfED0 .

MichaelPaulukonis commented 7 years ago

@enkiv2 - I probably am!

But aiming for low-hanging fruit can sometimes show that the giant task is not needed

I've never heard of paragraph-typology before, so this could be interesting.

enkiv2 commented 7 years ago

I'm, essentially, stealing @tra38's idea. The way I see it, often the paragraphs in the middle of Lovecraft stories are similar enough to almost be interchangable (the way paragraphs from articles about nanogenmo are); so, I can find paragraphs that can be interchanged with each other, group them together, and make them alternatives in a template. Then, later, maybe I can decompose them further & produce more varied paragraphs.

If I can do this for Lovecraft, I'll probably do it for SaveTheCat with existing screenplays -- identify scenes that correspond to a certain kind of plot, and produce a template by stitching them together.

On Thu, Nov 3, 2016 at 11:38 AM Michael Paulukonis notifications@github.com wrote:

@enkiv2 https://github.com/enkiv2 - I probably am!

But aiming for low-hanging fruit can sometimes show that the giant task is not needed

I've never heard of paragraph-typology before, so this could be interesting.

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/NaNoGenMo/2016/issues/12#issuecomment-258179558, or mute the thread https://github.com/notifications/unsubscribe-auth/AAd6GaLCirNgzHq4yUuTAbYcxLJ1RrB5ks5q6f_ggaJpZM4KfED0 .

superMDguy commented 7 years ago

Cool! This seems kind of similar to what I'm doing (see issue #92). I'm interested in seeking how this approach works out, and which variance of the approach works best.

enkiv2 commented 7 years ago

While I didn't manage to do what I intended, several of the snapshots I posted here are more than 50k words; could I get a completed tag?

hugovk commented 7 years ago

@enkiv2 Tagged!