!!Con West 2019 – Max Kreminski: Making blackout poetry with computers!

OK. So, hi there. I’m Max. I’m gonna be talking about making blackout
poetry with computers. Before I talk about that, I should talk about
what blackout poetry actually is. For those of you who might not be familiar,
necessarily, blackout poetry looks like this. This is at least one way that it looks. This is newspaper blackout poetry, created
by Austin Kleon, who has a blog and a book about blackout poetry, which is credited with
popularizing it for many people familiar with it today. He’s taken these newspapers and blacked out
most of the text in these newspapers and left behind just a few words, and the few words
that are left behind constitute a sort of poem. You can read these out for yourselves. I like them. They’re often short and funny and sort of
punchy. This is the sort of style that he prefers. I’m gonna read out a couple here. After a few years in the world every person
on the planet is an archaeological artifact. And then also we’ve got one that sort of describes
my state of mind last night when I was too excited about this talk to really sleep. 24 tabs open and no idea of the time. So this one really speaks to my soul here
and you can get a sense of why I like this so much. Now, there’s other kinds of blackout poetry
as well, and one of the things that I really like about blackout poetry is that can sort
of be read as a creative subversion of a source text. On of the left, we’ve got a page from A Humument:
A Human Document, and he’s taken sort of a second-hand book and gone through and for
each of these hundreds of pages basically scribbled out over it, removed most of the
word, drawn in custom illustrations over it, picked these weird colors to scribble out a lot of it with, and what’s left behind is a poem that has nothing to do with the source text. Dreadful. That photograph posed, I dare say of the dark work at Smirna. And what is this? The works at Bucharest going silently on. I have no idea what that means or has to do
with the source text. Probably nothing. But it’s an interesting reinterpretation with
the source text where it’s just got words in common and that’s it. No other real significance to it. And on the right hand side I’ve got something
I generated with the tool I’m talking about today. These times believe neural cheers. This neural light is a facade. And a well placed warning regarding certain
emerging technologies here, I think. What you can see here is basically: Even though
the author’s intent was to sort of maybe even talk up or be in favor of these sort of neural
network technologies, you can take blackout poetry and use it as a way to subvert that
meaning or do something that the author would never intend with those words. And one more thing I would encourage people
to do is: When someone powerful does a bad post, do a bad poetry to it with the power
of computers. If the New York Times has posted a bad opinion
piece, you can make some really great blackout poetry that sort of reveals the hidden biases
in this, sort of uses the words against the author, stuff like that. Another thing I really like about blackout
poetry is that it is kind of a subtractive form of procedural generation if you implement
it on a computer. What this means is that a lot of the time
when we look at procedural generation we think of it as this additive cumulative process
where you’re sort of building out something or taking a small seed and expanding it out. You see this in text generation for Twitter bots, level generation for Minecraft or other kinds of games, but there are other forms of creativity that are more subtractive or
transformative of the input. One of these is sculptures. You can think of blackout poetry as being
a form of sculpture with marble but for text. And on the right you’ve got something that is called “The Days Left Forbodings and Water” Liza Daly implemented this for national novel
generation month, exactly what it sounds like. It’s a blackout poetry generation she ran
on something by Mary Shelly, that produced pages like this. So this is sort of the algorithm I’m adapting
in my own work. In this case. Getting around to that, implementing a blackout
poetry generator — this is something I’ve already done. You can look at this web page and it will
have the browser bookmarklet you can download and press the button to generate blackout
poetry. You can black out random words, but you get
stuff like this, which is not the structural stuff that I enjoy about the examples that
I’ve shown you already. Instead we’re gonna do something that’s more
natural language processing heavy. We’re going to take a source input which is, in this case, a sentence from my blog. Space, in science fiction, frequently plays the role of the final frontier. We’re going to go through this and say: For
each of these, what part of speech is it? There are a lot of libraries that do this. I used something called POS.js, for part of speech JavaScript. There are any number of tools that do this. We can take that and expand it out to a whole
bunch of copies of it, and do fuzzy sequence sequence matching on these copies. For each of these, I’m creating a matcher,
a little object that has a pattern that it’s looking for of parts of speech. The one on top is looking for a noun followed by an adverb, followed by a verb followed by a determiner, followed by an adjective, followed by a noun. And the one below that is looking for a noun followed by a verb followed by a determiner followed by a noun and so on and so forth. And crucially, between these words they can
have other words that it’s just ignoring, and those are the words that get blocked out
in the output if this matcher wins. So we go in and say here’s the first word. Do you want this word? You want to match this word? It’s a noun. Space. So all of them could say yes. Randomly, two of them flip a coin and say
no but the rest of them say yes so they keep that word and we move on to the next word
and do the same thing and over and over and over again until we’re at the end of the text
and we get five distinct readings of this text. Space frequently plays the final frontier. Et cetera. All of which are interesting. The fourth one here has failed to match anything. It got space. It got plays. It got the. And then it hit the end of the text and can’t match anything more. So at that point you’re sort of left with
a bad output that you can sort of throw out. Okay. So that’s cool. And also the grammar thing that the matchers
have to keep track of. Because it turns out that some verbs and some
nouns are incompatible with one another. You need to worry about the count of your
noun versus the count of your verb, the pronoun I has to be handled specially, because you
can’t say I is. You have to say I am. Stuff like that. And the articles, a and an. You care about what the first letter of the word that follows it is going to be.
is going to be. So that’s all well and good. Generation is fine. We can produce some really cool stuff with it. We can produce stuff like this Which is one of my favorite outputs ever.. The mission is the infinite variability that
poetry can speak. I think this is really personally beautiful. I love this a lot. But it’s also a beautiful lie! And the reason it’s a lie is because these
are two separate paragraphs, and the computer has no idea that these two paragraphs are
related at all. The generator looks at each paragraph and
tries to turn it into a separate piece of blackout poetry actually, so we’ve got two
sentences here. The mission is the infinite variability, which
is okay, I guess, and that poetry can speak, which is not even grammatical. So the really great thing here is that because
these two things are juxtaposed, even though the computer has no idea they’re juxtaposed,
it produces a better work of poetry overall than the computer itself can actually do. So what I really found myself doing more and
more was applying a human filter to the stuff that was coming out of this generator and being like… Okay, it’s produced this stuff for me. I’m gonna use this as raw material for my
own sort of poetry creation. So these are all from a single source text, basically. These are 6 distinct entries from a single source text. What I did was I reran the generator on this
text over and over again. You can see on the left these are all instances of what the generator produces run on the same paragraph. So, a virtual reality is a language. A world is a language. A world is a way. These are all variations of the same underlying text. But you have to press the button over and
over again, randomize it over and over to get these. So the tool is not giving me the ability to
explore the space in the way I find myself doing more and more. So what I want to do in the future is empower
the users to talk back to the source text, giving users more of a creative choice basically and sort of letting them to do things like this to Reddit comments. So what I’m actually doing is I’m implementing
now a mixed initiative blackout poetry composition tool that will be at that same URL eventually
when I get it working, which I wanted to do for this talk, but which is not happening. So what I really also want to do is to enable
users to create by reacting. So the creative process is made of decisions. Some of them are consequential, some are totally
inconsequential, and it’s really easy to get hung up on the inconsequential ones. What I really want to do here specifically
is narrow down the decision space to only decisions we know are interesting, so we can
present the player or user with a set of options they can pick between, and each of those options
is a good option, basically. So let’s start with something like this. We’ve got some text here. We black out everything on it. We sort of have these three lavender things
that are on it. When you hover over them, it’s a possible
first word you can click to lock it in. We like this for some reason. We click to lock it in. We get three more options. So we pick artifact here. We can do this indefinitely until we get to
the end and have produced a poem. We are repeating this loop until we are a
poet. And at any stage you only have to worry
about three distinct possibilities. You don’t have to worry about the whole poem. And you can also always go back to a previous step if you want to. So what I want to do is to use this generative
process to give players or users a way to explore the possibility or decision space
without being overwhelmed by the size of it. So we’re gonna be exhaustively searching poem
space. This is some JavaScript console output for
when I was killing my browser to make it loop and searching the whole space on one of my
old blog posts. And I’m gonna use something called ASP, to
more naturally encode some of the rules that we’re looking at for matching sentences within
these larger steps. We have the example of: The big moose is very large. They are huge. Which is utter gibberish, but it worked for this example. And you can see that each of these has a part of speech, each of these has a position in the sentence, and each of these of has like a sort of count or a compatibility with other words. So we write the rules that are like basically logic rules looking for a way to express the constraints in such a way that we can find subsets in the larger texts that look like the kind of thing we’re trying to find. Takeaways for all of this. Number one, blackout poetry is two. #2 subtractive procedural generation is cool. Turning generators into mixed-initiative creative tools is cool. Enabling users to create by reacting is cool. This thing I’ve created already is cool. It’ll have a better thing in the future, but
we’re not worried about that right now, and thank you! (applause)

Leave a Reply

Your email address will not be published. Required fields are marked *