
An A.I. Competed for a Literary Prize, but Humans Still Did the Real Work - dnetesn
http://www.slate.com/blogs/future_tense/2016/03/25/a_i_written_novel_competes_for_japanese_literary_award_but_humans_are_doing.html
======
EwanG
OK, so will any of these programs let me give a quick character description, a
setting, a general outline of the story, and then give me a couple hundred
pages that I need to lightly edit? Because at that point I have a list of
about 85 stories I've been wanting to write up and it's going to take a
creative AI or the Singularity and a couple hundred year lifespan for any
chance of my getting to all of them.

~~~
tariqali34
To my knowledge, no such program exist, but each of the stuff you mentioned
_has_ been done before.

 __INPUT __

Quick character description - Users specify some character traits to be
associated with a character. The program then will pick words associated with
that trait to be used with that character. Words could be pithy sayings,
actions, or even adjectives.

[https://github.com/tra38/Skynet](https://github.com/tra38/Skynet)
(Disclaimer: I wrote this as part of my original attempt at narrative
generation, but the results was panned. Handling character descriptions was
one of the highlights...in the sense readers never complained about my
characters. At the same time, people never seemed to noticed or cared about
the characterization at all, so it's possible that this approach may have been
unnecessary and a less heavyweight solution should be preferred.)

Setting - When writing the story templates the computer will end up using to
generate the story, set aside some spaces for describing the setting. You
could attempt to just plug in just the name of the setting ("EwanG's Glorious
Emporium") into those blanks, or maybe you could have the computer look up
information in a database such as Wikipedia or WordNet to give it more flavor.
This approach was used in the computer-generated novel "Around the World In X
Wikipedia Articles" that uses Wikipedia to describe its settings
([https://github.com/dariusk/NaNoGenMo-2015/issues/142](https://github.com/dariusk/NaNoGenMo-2015/issues/142))
and in a series of simulations fantasy novels that uses WordNet to describe
its settings
([https://github.com/dariusk/NaNoGenMo-2015/issues/40](https://github.com/dariusk/NaNoGenMo-2015/issues/40)).

Alternatively, you could generate descriptive and evocative phrases associated
with your setting name. This can add more flavor to your story. (This was done
in the computer-generated novel "Our Arrival":
[https://github.com/dariusk/NaNoGenMo-2015/issues/25](https://github.com/dariusk/NaNoGenMo-2015/issues/25))

General Outline Of The Story - The 'story compiler' approach, invented by
Chris Pressey, starts off with a "null story" (characters meet each other and
then characters leaves). The compute starts filling in the outline by adding
in plots to this "null story", but each plot has a wildcard that can allow for
plots to be nested within plots. After it finishes adding plots to the story,
it then goes through each scene of the story and then "flesh" it out.

The Story Compiler approach was used to generate "A Time of Destiny". Here's
an issue that gives you links to the theory, the code, and the actual novel:
[https://github.com/dariusk/NaNoGenMo-2015/issues/11](https://github.com/dariusk/NaNoGenMo-2015/issues/11)

Now, you want to specify the plot, not let the computer randomly decide, so
you may want to skip the first few steps, while instead focusing on having the
program handle your unique array of scenes. This is going to be the hardest
part of your program (writing up the different plots and all the individual
scenes within each plot). And you don't want to write up too many plots,
because then it will be seen as _you_ writing your stories, not necessarily
the computer. You could have plots reuse different scenes to reduce your
workload.

 __OUTPUT __Output of Couple Hundred Pages - Every year, programmers all
around the world attempt to participate in National Novel Generation Month,
where the goal is to generate 50,000 words. This is both a very easy problem
(set the program up in a loop until you get over 50,000 words) and a very hard
problem (once people see the pattern within the generated story, they will get
bored pretty fast and stop reading...or even skimming...how do you prevent
readers from getting bored when reading the novel?). Still, if you can build a
program that can handle one of your arbitrary input, then you can build a
program to handle hundreds of arbitrary inputs. Whether you want to read all
of the resulting outputs however is a different question...but then you 're
planning on 'lightly' editing the output, right? Maybe it might work.

Every link that I gave you was an entry in the latest NaNoGenMo competition
([https://github.com/dariusk/NaNoGenMo-2015](https://github.com/dariusk/NaNoGenMo-2015)),
with the exception of the Skynet link that I gave you. Skynet, however, was
intended to be be used in an entry in that competition.

====

So yeah, what you say is doable, and can be done. If you want to take this as
a challenge to produce your own lovely program to generate your 85 wonderful
stories, go right to it. (Or just find somebody's novel generator and just
modify that to produce your lovely 85 stories).

But don't limit yourself to conventional understanding of stories. For
example, one of my actual entries to NaNoGenMo involve randomly shuffling the
paragraphs of an article, thereby generating a brand new article
([https://github.com/dariusk/NaNoGenMo-2015/issues/180](https://github.com/dariusk/NaNoGenMo-2015/issues/180)).
The result was rather surprisingly effective, and I ended up using this
similar approach in generating a blog post
([https://gist.github.com/tra38/8a6bf3743cd89687151c](https://gist.github.com/tra38/8a6bf3743cd89687151c))
and a short story
([https://gist.github.com/tra38/02b03745e7da37789ed2](https://gist.github.com/tra38/02b03745e7da37789ed2)).
Experimentation can lead to new insights, especially about creativity.

