-
Notifications
You must be signed in to change notification settings - Fork 17
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
misunderstood- and misapplied- narratology #6
Comments
Things I'm fiddling with will be in https://github.com/MichaelPaulukonis/NaNoGenMo2014 |
Bloody hell, why does prep for this year involve staring at scans of photocopies of pages of |
Hm! I don't know, but it just gave me an idea: use ImageMagick (or something) to make a cut-up novel out of a bunch of scanned images of pages of books and papers and magazines and such things. |
I made a simple Python wrapper around the Chronicling America API, full of scanned newspaper images. From each search result you get an https://github.com/hugovk/chroniclingamerica.py |
@hugovk Oh gosh. Availability of source materials! That is really tipping me in the direction of trying this. |
@cpressey The Library of Congress is also on Flickr, along with over a million images from the British Library, 2.6m Internet Archive Book Images and scores more also in Flickr Commons. (I'll cross post this in #1.) |
cut in at any intersection point! Those are awesome ideas! Crap. I knew I'd get distracted..... I took on the challenge of dealing with narrative because it seemed so daunting last year, and because so many things were interesting on the sentence-by-sentence level, but lost it after a paragraph. Don't know as I'll get to one coherent narrative novel -- and I'm thinking tiny narraive stories, anyway -- but I'm enjoying the journey, once again. |
@MichaelPaulukonis If you can't get one 50k novel, you can always settle with a compendium of (say, 50 x 1k, or 500 x 0.1k) shorter stories :) |
@hugovk That is the idea. I go into more detail here. In addition to leading me to learn about Vladimir Propp and revisiting Levi-Struass, I'm playing with grabbing characters, locations, and staring at manuals for software written in Primary fuzzy text I'm staring at is Modeling Propp and Levi-Strauss in a Meta-Symbolic Simulation System. There's too much real theory to understand/boil-down for November, but it's leading me in interesting directions. Or getting me think about directions before discarding them. @cpressey would have to have some sort of algo to "count" that it's ~= 50K words. Define an image as an average (assuming a certain threshold black:white pixels) word-count? |
@MichaelPaulukonis I can't speak for my co-participants, but when it comes to text + image, I'm content with human judgment instead of an algorithm: "does it feel 50,000-words-ish?" Or maybe just assume there are at least 100 words per page on average, and generate 500 pages... Anyway, I'm pleased to report that my initial experiment with cut-ups, though simplistic, has not been too disappointing. I don't know Propp from a hole in the ground and my one experiment with narrative so far this year is mostly a joke I'm sorry to say, so I'll cease polluting your intent-to-participate issue with my nonsense :) |
This is a discussion forum! It's a funny joke (for certain, limited definitions of the term "funny"). I'm not one to throw stones; I've found digging through the old documents from the 70s filled with I've spent too much time on this, I suppose. |
Alright -- well, I'll try to keep my nonsense topical anyway. I confess, I did a bit of "precoding" before November started too -- just little experiments to warm up, of course -- and since then have done only, um, more little experiments. I could set for myself the goal of doing one little experiment (on average) per day for the month, and then just pick one at the end and run it for 50,000 words. I don't know, maybe that's just not cricket, but it is appealing. At any rate, even though it's experiments rather than theory, I may be in the same "academic" boat as yourself -- finding no real purchase on the practical side of things yet. And now I'm starting to be overwhelmed by seeing the amount of quality stuff that has already been produced this year, and it's still only the 3rd... That narrative Makefile might not be entirely a geeky joke. The thought processes were obscure, but I'm sure at some point it involved a memory of this joke from The Simpsons:
Followed by the realization that there's already a (much-maligned) tool that does that. |
I think that's a good idea. You never know what might produce something really interesting. You might find discover something along the way and decide to develop that a little longer. |
Sample output with very tiny wordbank. Basically a proof-of-concept as I work out some functions and templates. Long way to go.... Holly Shiftwell lives in New Haven. Holly Shiftwell lives with Jaffar and PeeWee Herman. Jaffar unexpectedly dies, leaving Holly Shiftwell devastated. Spirit of 1776 gains information. Spirit of 1776 attempts to deceive victim. Holly Shiftwell unwittingly helps Spirit of 1776. Holly Shiftwell leaves to walk the dog. Holly Shiftwell is chased. Spirit of 1776 is given a tongue-lashing by Holly Shiftwell. Everything works out for Holly Shiftwell. |
Filling in some more templates and the associated code to populate them. Allison lives in a valley. Allison lives with Jolly Green Giant, Ella, Spirit of 1776, Noah, and Hailey. Savannah warns Allison to not talk to Makayla. As soon as Savannah is gone, Allison runs off to find Makayla and has an interesting conversation. Makayla attempts to deceive victim. Allison unwittingly helps Makayla. Allison and Makayla do battle. Makayla is defeated. Allison sets out for a valley. Makayla is hung, drawn, and quartered by Allison. Allison settles down and has parking tickets forgiven. |
Getting adjectives and a larger wordbank for people, places and things (and verbs) is planned. For now, I'm trying to get a working structure going. |
This one is amusing. Do you have a template? On Thu Nov 06 2014 at 1:49:07 PM Michael Paulukonis <
|
The following files were used proppian.fairy.tale.gen.1.0.htm templates.js from https://github.com/MichaelPaulukonis/NaNoGenMo2014/tree/master/propp.gen there are some css and other files required. as well as node modules that are installed manually (see scripts included at the bottom of the The template are primarily in the My separation of concerns could be better. I'm feeling this out as I go along. Not sure what is needed, nor how to best do it. I do know I have not implemented things the way I will want them, but they are giving me output for now. |
I really like these generated synopses BUT every time I read one I can't help wondering who victim is. Perhaps I am overthinking things? |
Nope; "victim" hasn't been built out yet. A lot of the templates need background functions to set up characters and things that interact elsewhere. There's one function/template that is about the hero overcoming their loss from the beginning of the story. This could be about a parent/relative/friend returning home, or acceptance of their death. But they'd need some programming to allow a proper response, instead of just dumb words. So I'm building this slowly, getting pieces to work, revising other pieces as required. Also trying to understand the ideas behind the Propp schema. I did build a There's also 3 kids and a wife in the background that need some detailing. That's not in the code, that's in my house! |
Still haven't resolved the victim thing. Bigger fish have remained unfried while I work on some smaller fish. Katherine lives in grass hut. Katherine lives with Kaylee, Sydney, Jaylin, Benjamin, William, Anthony, and Daniel. David, Nicholas, and PeeWee Herman are friends of Katherine. Kaylee unexpectedly dies, leaving Katherine devastated. Savannah warns Katherine to not talk to Jessica. Savannah introduces LinearMia to Katherine. As soon as Savannah is gone, Katherine runs off to find Jessica and has an interesting conversation. Alexandra, the Spirit of 1776, Morgan, Joseph, Megan, the Easter Bunny, Phoenix, Dylan, Nathan, Allison, and Lily are in league with Jessica. Jessica pays a visit to grass hut. While skulking about grass hut, Jessica overhears some gossip about Katherine. Jessica attempts to deceive victim. Katherine unwittingly helps Jessica. Jessica forcibly seizes LinearMia. The need is identified (Lack) Katherine discovers the lack. Katherine chooses positive action. Katherine leaves to walk the dog. Katherine is challenged to prove heroic qualities. Katherine responds to test. Savannah gives Katherine Neural-Dynamic-Internal Deflector. Katherine and Jessica do battle. Katherine manipulates Neural-Dynamic-Internal Deflector to defeat Jessica. Katherine sets out for grass hut. Katherine is chased. Jessica is hung, drawn, and quartered by Katherine. Becomes a god, Katherine retires to a life of farming. |
Things are moving slowly. It's a template engine. Which is somewhat dull. It's enforcing some rules that suggest how narrative "wonder tales" could play out. More NLP stuff could make it lively. perhaps. Anyway. It's fun. Anna works in a office near first floor in Goliath National Bank. Anna works with Sydney, Mia, Hailey, and Brienne of Tarth. S/he knows Joan of Arc, Allison, and Savannah from work. Suddenly, it becomes as night. Rachel has shut off the power! Anna leaves to cook the books. Anna and Rachel do battle. Through deft use of potted plant, Rachel is defeated. Anna sets out for first floor. Rachel is sent to the mailroom by Anna. Anna settles down and is made CEO. |
"Hello there, Allison" said Jessica. Despite the warning, Jessica goes to East Lansing. Jasmine, a rather bad and dishonorable person, appears. Jasmine kills Alexandra. Allison gives Jessica Infinite Parameter. Jessica and Jasmine do battle. Through deft use of Infinite Parameter, Jasmine is defeated. Jessica settles down and dates for a few years, but decides to remain single. Jessica still mourns the stinging loss of Alexandra. |
I like how this is getting steadily weirder while retaining something resembling a plot. Can't wait to see the undoubtedly Dragon Ball Z-like sequence that "do battle" will unfold into. |
Do all these stories have exactly two characters? You could probably string On Wed Nov 12 2014 at 5:26:20 AM Chris Pressey notifications@github.com
|
I've been (trying/learning) to following the Vladimir Propp classification of fairy tales/Russian wonder stories. These have 2 primary characters (hero/villain). Then there's the hero-advisor (Allison in this case) and an assistant ("Alternate River" here; doesn't appear again, though). The original schema has family, and I've added acquantainces of the hero, not listed here, although Alexandra is killed and remembered. The villain has minions (and family) (not in the original model). The battle will quite possibly involve family, acquaintances and minions. I'm working on too many pieces of this at once, in small dribs and drabs. But the superstructure is coming together! The "need for dialogue" came at me last night and I whipped it out. It's pretty awful, but serves as a placeholder for future expansion, and as an early test for the description adjectives I had just loaded on each character. I almost had every member of the family talk to each other; that would have been interminable! @enkiv2 That's an interesting idea. Not where I was planning on going with this, but I could see tweaking it to go in that direction...... |
Starting the battle code pushed me in other directions. Whatever. It's in-progress! Kayla the Cautious lives in a small house near Oblivion in Talexico. Kayla lives with Practical Megan, Julia the Respectful, Sensitive Anna, Idle Joan of Arc, Candid Natalie, Makayla the Logical, and Unwilling Jessica. Kaylee the Enterprising, Ridiculous Sydney, Haley the Earnest, Unguarded Lauren, Jennifer the Local, Morgan the Deep, Kaitlyn the Illogical, Jasmine the Peevish, Allison the Surly, Hailey the Content, Katherine the Immodest, and Smart Victoria are known to Kayla. Joan of Arc unexpectedly dies, leaving Kayla devastated. "Bye!" said Kayla to nobody in particular. |
Doing some sideways study of Nick Monfort's Curveship. |
Something that isn't that big of a deal, but the default gender for the html-runner (it's not headless (yet!)) is |
Hey, thanks for the mad Propp-props, as well as calling it "less facile." Maybe. Although templating seems... easy. Compared to finding related words and concepts, and stitching them together unrandomly. |
At least for me, my own work feels more convincing the more its out of my direct control: I know the trick, as it were. Other people's work retains some of that sparkle, even when I know how they did it, because I didn't go through the motions myself. There have been a lot of major research projects that have turned out generated text that's less convincing than this one is producing. One of the things I noticed last year was that the strongest works tended to have a solid concept behind them. Having a theme to relate back to helped even the hiccups in the system make sense. So picking one technique and sticking to it seems like a strong statement. Of course, "we're going to try as many techniques as possible" also counts as a single, strong technique. |
Two ideas:
|
Yes I really like the idea of a redacted story; visually and contextually interesting with a lot of associations. Earlier today I was actually thinking about something like this as a follow on to the project I put up this afternoon! |
That sounds like a ███████████ idea. |
first No Exit text. |
Ha ha, nice. So you ended up with 199 characters to get to the 50k number of words? |
Only 100 characters to make > 50K words. I've got a word-count function, but haven't implemented it as the loop-controller. |
See, this is a perfect example of what I was just saying. C'est vrai avant-garde. |
And now here is the first WONDER TALE NOVEL It's preliminary, and more of a proof-of-concept of node.js running, word-count looping, and file-writing. I want to make some unit-tests, I think, because I've got some vicious bugs that I can't track down. Eh, who knows. Lots of other fish to fry by the end of the month.... |
Progress is slow, and I'm making a list of things I can, sadly, skip in order to get this somewhere personally acceptable by the 30th (swappable templates and wordbanks ain't happening [yet], conversations may never get better, magical items are too simplistic, and locations are less than rough). Punishments are being meted out a bit better, for some gruesome definitions of better. I really need to focus on obtaining a random selection of "functions", then go back to playing with hero's family, battle, travel, and false-hero. What I'd REALLY like is for things to be more .... semantic. Villain adjectives have something to do with their fantastic appearance (oh, that was added. The villain could be a bear, or a swarm of ants, for instance), their actions and method of punishment have some echoes as well. This would help things hold together better. But that just ain't gonna happen this month. Maybe in the spring. I hope I keep playing with this. Katherine of Orange County Katherine remembered the Temporal-Phase Shield she had been given before. Seeing that Victoria was perfectly enfeebled, Irritable Katherine snatched from her her keen faulchion, and with a single blow struck off her head. Behind her voices began to cry: "Strike again! strike again! or she will come to life!" "No," replied Irritable Katherine, "a hero's hand does not strike twice, but finishes its work with a single blow." Irritable Katherine said, "Into the bottomless pit with you! Out of sight, accursed one!" God did it to punish Worthless Victoria for her great worthlessness. Allison was exposed. So Irritable Katherine hung, drawn, and quartered Repulsive Allison. and they placed her in a coffin, and carried it to church, whereupon it burst into horrible flames, singeing the hands of those who dared carry it. Repulsive Allison sits to this day in the pit - in Tartarus. This may sound fantastic, but it all happened exactly as I have told you. |
On the bright side, the occasional synopsis-like statements interspersed lend it an interesting flavour, like the storyteller is glossing over parts that are, perhaps, just too painful or distasteful to re-tell. |
Thanks. They do work nicely in a short story. But when 25-40 of them are strung together to make 50,000 words? Repetitive. But, like I said, I trying to pick my battles (ooooh, loook, a shiny template that can be tweaked!). |
Hunh. A recent novel run produced 179 stories in order to get to 50K words. OUCH. |
has titles like I think I'm going to ditch this. Neuter names will get male/female at random. :::sigh::: SO MUCH FOR (cheap) INCLUSIVITY. |
There have been minor fixes -- like removing weird neuter things that didn't work, added some words to templates, but nothing major. Battle and journey and family are still still-born. The whole family has had colds this week - and while colds seem minor, 5 people, including a 6-month-old baby having one at the same time is draining. I've got a lot of plans for this, but not much will happen by the end of the month. I'll post a "novel" today or tomorrow, and that's it. :::sigh::: A bigger question is -- what could I have done differently? The incomplete list is all about templating. Could I have gathered texts that "fit" the propp model (which again, is descriptive, rather than proscriptive, and thus a "bad" model)? Since the main system allows for switching templates and wordbanks, I can still use this framework to explore other avenues in the future. A side-though, back towards templating, is using concept-networks, so that characters and their adjectives etc. more guide their actions, powers, encounters. Moist villainy involves water, etc. We shall see. I used some new libraries and techniques, and did a lot of thinking about narrative -- something I'm usually allergic to. So: good month. |
Given that I have spent the better part of the past 26 years working on anti- and a- narrative texts, I'm pleased with what I have done. I think I have a sinus infection. |
Congrats (on the finish, not the infection, obviously!)
Again this brings to mind this -- it would be not-too-difficult for a person to look at a scene in a fairy tale and try to assign one of Propp's functions to it, and then lift it for use as a template -- but getting a computer to do that? Eek. So very inclined to try writing some code that just reads a novel as best it can. #maybenextyear |
This is surprisingly effective at inventing new stories. |
Something that looks like a bug, but is actually uncompleted code is the folllwing:
The person killed is not the villain that has been introduced, so who the heck is it? It's a false-hero/false-friend that has not been introduced previously. In addition, with the absence of villain-punishment/defeat, the villain should have been the false-friend all along. This was on the massive TODO list. |
I'm starting up an out-of-season email group @ http://groups.google.com/group/generativetext. Before I post it as a regular issue, anybody see any issues with the group as of now (it's now public). Also there is last year's (nearly) empty https://github.com/TextGenTex/TextGenTex |
For anybody still watching at home, I'm moving the generator to a solo repo @ https://github.com/MichaelPaulukonis/malepropp The web-based interface is available at http://michaelpaulukonis.github.io/malepropp/ Thanks for another fantastic year! |
It's somehow even better with the UI. Maybe because it makes me wonder exactly what all those switches are doing under the hood... |
The UI has actually been there since the beginning, with the node.js version hacked into shape in late-November. It should have been the other way around, but like a cowboy, I rustled up somebody else's code and started hacking at it before I understood it. There are even more switches that could be made available, I think. They just haven't been coded up yet. And the "neuter" gender doesn't work so well for the pronouns and posessives and whatnot, so whenever neuter is actually selected, a name from the neutral list is used, but a gender is randomly assigned. :::sigh::: Best of intentions, and all that. Now that I've made it public, I've done more work on cleaning up the interface, and there is more I'd like to do. As well as a ton of internals. :::sigh::: Unit-tests, for one thing. So I don't have to keep hammering at the UI to find the (randomly selected via the UI) one squirrely scenario that keeps throwing errors. |
body of declaration of intent
I haven't done as much text-twiddling this year as I had hoped. November may up-end that statistic.
end of body of declaration of intent
The text was updated successfully, but these errors were encountered: