February 19, 2008

EP 5.2: A Tale-Spin Story

by Noah Wardrip-Fruin · , 8:38 am

Tale-Spin, as described in Meehan’s dissertation, has three storytelling modes. Two modes are interactive, asking the audience to make decisions about features of the story world, while one mode “fixes” the world to assure the production of particular stories.4 Chapter 11 of Meehan’s dissertation gives a detailed account of an interactive story, about a hungry bear named Arthur, that I will use to illustrate Tale-Spin’s operations and their backgrounds.

Creating a world

Tale-Spin asks what characters to use for the story, and the reader chooses a bear and bird. Each choice results in a “picture procedure” that creates the basic set of facts for that character. For example, the procedure for the bear creates a bear, chooses the bear’s gender, gives the bear a name, adds the bear’s name to the list of story characters, chooses a height and weight for the bear, creates a cave, creates a mountain in which the cave exists, marks the cave as being the home of the bear, and lets both the bear and the system know that the bear is in the cave. In Meehan’s story the bear is named Arthur, and by similar means a bird named George is created (along with a nest, a maple tree for the nest, and a meadow for the tree). Each character is added to the other’s list of acquaintances, so they know that each other exist, and they each have an idea of the other’s location.

This kind of information is represented in Schank’s conceptual dependency (CD) expressions. While Schank’s published accounts, at the time, represented CD expressions using complex diagrams with multiple forms of connectors, software such as Tale-Spin used more machine-readable formats. In Tale-Spin, the CD expression for “Arthur is in his Cave” would be represented as:

((ACTOR *ARTHURBEAR* IS (*LOC* VAL (*PROX* PART *CAVE*0))))

But much of Tale-Spin operates on more complex CD expressions, as the coming pages will reveal. Meehan writes his own English-language representations of these, and I will follow his lead here. Otherwise, even relatively simple ideas such as “Arthur knows that George thinks he’s an idiot” would require parsing CD expressions that look like this:

((CON ((CON ((ACTOR *ARTHURBEAR*
IS (*SMART* VAL (-9))))
IS (*MLOC* VAL (*CP* PART *GEORGEBIRD*))))
IS (*MLOC* VAL (*CP* PART *ARTHURBEAR*))))

Though discussion of Tale-Spin, from here, will take place using English translations of CD expressions, looking a bit more at the above examples will help to clarify the structure of CD expressions. If one looks at the representation of the idea that Arthur is in his cave, the structure is similar to that for the idea that Arthur is an idiot (his Smart has the value of “-9” on a scale that runs from 10 to -10). MLoc is a mental location, and in both cases above it is the CP (or “Conscious Processor”) of one of the characters. So, we might more literally translate the CD expression above, from outermost parenthesis to innermost, with a sentence like “It is in the consciousness of Arthur Bear that it is in the consciousness of George Bird that Arthur Bear’s intelligence is at a very low level.”

The world of Tale-Spin changes based on events and inferences from these events. All events are acts, involving some actor taking some action. In CD theory, there are only eleven primitive acts. The MLoc facts above would likely grow from MTrans events — those that transfer information, either within a person’s memory or between people. Primitive events play important roles in Tale-Spin, and the remaining ten are most easily described in two groups. First, seven acts are relatively concrete: Propel (apply force to), Move (move a body part), Ingest (take something inside an animate object), Expel (force something out of an animate object), Grasp (physically grasp an object), Speak (produce a sound), and Attend (direct sense organ toward, or focus it on, something). Second, three acts, like MTrans, are more abstract: PTrans (change the location of something), ATrans (change some abstract relationship with respect to an object), and MBuild (create or combine thoughts).5

Motivating action

Returning to Arthur’s story, the audience is asked whether any miscellaneous items should be created: “berries,” “flower,” “river,” and “worm.” The audience chooses a worm, and it is created along with the ground where it is currently located. The audience is asked who knows about the worm, and chooses Arthur Bear. Tale-Spin now has enough information to ask who the main character of the story will be:

THIS IS A STORY ABOUT …
1: GEORGE BIRD 2: ARTHUR BEAR

The audience chooses Arthur, and then is asked about his problem:

HIS PROBLEM IS THAT HE IS …
1: HUNGRY 2: TIRED 3: THIRSTY 4: HORNY

The world of Tale-Spin revolves around solving problems, particularly the problems represented by four “sigma-states”: Sigma-Hunger, Sigma-Thirst, Sigma-Rest, and Sigma-Sex. These, as one might imagine, represent being hungry, thirsty, tired, and — in the system’s terminology — “horny,” respectively. These problems are solved using Schank and Abelson’s approach to planning.

Schank characterizes planning this way in his (1975b) paper “Using Knowledge to Understand”:

A Plan is the name of a desired action whose realization may be a simple action ([a] conceptualization involving a primitive ACT). However, if it is realized that some state blocks the doing of that action, the plan may be translated into a deltact to change the state that impedes the desired ACT. Thus, a Plan has attached to it a group of deltacts with tests for selecting between them. (119)

So, for example, if — by unlikely circumstance — Arthur forms a plan to eat when he already has honey in front of his mouth, all he has to do is the primitive act of Ingesting the honey. But if Arthur does not already have honey in front of his mouth, the plan will be translated into a deltact with the goal of getting honey (or perhaps some other food) in front of his mouth. He may choose one that involves moving some food there with his hand. If he does not have any food in his hand, getting some food there may become a state-change goal. This idea of deltacts (or, as Meehan calls them, “delta-acts”) comes from Abelson.6 He describes his work on them as an attempt to “develop a set of intention primitives as building blocks for plans. Each primitive is an act package causing a state change. Each state change helps enable some later action, such that there is a chain or lattice of steps from the initial states to the goal state” (Abelson, 1975, 5). Schank embellished the idea of delacts with what he calls “planboxes.” These are specific approaches to achieving the state change.

For Tale-Spin Meehan implemented three delta-acts which correspond to the primitive conceptual dependency acts PTrans, MTrans, and ATrans. The first, Delta-Prox, is used when someone wants to change the state of something to make it near something else, which includes changing one’s own state to be near something. (Delta-Neg-Prox is used to get something away from somewhere.) Delta-Know is used when someone wants to change the state of someone to know something. Meehan calls his procedure for the communicative version of this Tell and the procedure for wanting to find something out oneself DKnow. Finally, Delta-Control is used when someone wants to acquire something.

In Tale-Spin, many of the planboxes of these delta-acts depend on somehow persuading another character to do something. These common planboxes are gathered together into a Persuade package, which includes: simply asking; linking the action to a goal the other character is presumed to have, and enabling the action; bargaining; and threatening. Like all planboxes, each of these has preconditions — a character does not ask another to simply tell her something if she believes that the other intensely dislikes her. Similarly, a character does not threaten a character she likes a lot.

Making plans

When the audience chooses hunger as Arthur’s problem, Tale-Spin generates the CD expression “Arthur knows that he is hungry.” This is then asserted. To understand what this means, it is helpful to look at figure 5.1, which illustrates the control structure of Tale-Spin’s simulation.

Figure 5.1: Control structure of Tale-Spin’s simulator, after Meehan’s figure 1: PIC

One thing that assertion does is add information to memory. Tale-Spin’s memory contains information about the structure of the physical world, the structure of relationships between characters, facts about particular characters, and so on. Every fact in memory is indexed based on who believes it, with true things indexed to the system. Every fact is also either currently true or “old” (true at some time in the past). In this case, “Arthur is hungry” is added to memory, indexed as something believed by Arthur.

When this fact is added to memory, it results in the fact being passed to the inference mechanism. For negative sigma-states, the inference mechanism creates CD expressions of the form, “Arthur knows that Arthur intends not to be hungry.” This CD expression represents, of course, a goal — when it is passed to the assertion mechanism the result is to invoke the problem solver, which begins the process of planning.

The name of the Tale-Spin procedure for satisfying hunger is S-Hunger (for Sigma-Hunger). In Tale-Spin bears eat honey and berries, so S-Hunger checks memory to see if Arthur knows that he owns some honey or berries, or knows where some honey or berries are. He doesn’t, so S-Hunger selects a bear food at random, in this case honey, and invokes DCont (Delta-Control) to get some.

DCont forms the goal “Arthur has some honey” and starts checking the preconditions for its planboxes. First it checks to see if it is already true (it is not). Then it checks to see if this goal is already part of Arthur’s goal structure. It’s not, so it is added.

Why does DCont check to see if getting honey is already part of Arthur’s goal structure? For a number of reasons. Most obviously, because if it is already his goal (or a subgoal toward a higher goal) then it makes little sense to add it. But another reason to check for the goal’s existence is that Tale-Spin also keeps failed goals, and the reasons for their failure, as part of a character’s goal structure. Before this was added, Tale-Spin created stories with a certain surreal quality. Here’s an example:

Joe Bear was hungry. He asked Irving Bird where some honey was. Irving refused to tell him, so Joe offered to bring him a worm if he’d tell him where some honey was. Irving agreed. But Joe didn’t know where any worms were, so he asked Irving, who refused to say. So Joe offered to bring him a worm if he’d tell him where a worm was. Irving agreed. But Joe didn’t know where any worms were, so he asked Irving, who refused to say. So Joe offered to bring him a worm if he’d tell him where a worm was…. (129–130)

In fact, these error-produced stories — which Meehan called “mis-spun tales” — are Tale-Spin’s most famous outputs, much more widely reprinted than anything produced by the completed system. There are a number of reasons for this. First, of course, is amusement value. Another is that these stories, hand-translated from CD expressions by Meehan, have much more fluid prose than stories produced by Tale-Spin’s companion natural-language generation system, Mumble. Third, these stories also give a hint, simply through their structure, of some of the mechanics of the underlying Tale-Spin processes. Unfortunately, as I will discuss later, those who attempted to interpret these outputs without any deeper understanding of the Tale-Spin system often reached rather incorrect conclusions.

Developing relationships

Arthur is trying to get hold of some honey, which is a Delta-Control problem. In Tale-Spin the first precondition for DCont’s planboxes is knowing the location of the thing to be controlled. Since Arthur does not know where any honey is, DKnow is called. DKnow forms the goal “Arthur knows where some honey is.” It’s not already true, and it’s not yet part of the goal structure, so it is added. The first planbox of DKnow is used if there is a standard method for finding the information: like checking a watch or clock to learn the time. There isn’t one of these for honey in Tale-Spin, so the next planbox of DKnow is to see if there’s someone who is an expert on these matters to ask.7 Bears are experts at honey, but Arthur’s the only bear he knows about, so Tale-Spin moves to the next planbox, which is to use the methods of the Persuade package to convince a friend to tell you. A friend is someone that you think relates to you with a positive value for affection. Arthur’s opinion of George Bird’s opinion of him is unknown. If the audience says that Arthur doesn’t think they’re friends, Arthur will have only one DKnow planbox left before he has to give up on the goal of having some honey: Persuading an agent to find out the answer and tell him.

Relationship states and personality states are extensions to Schank and Abelson’s work created by Meehan for his work on Tale-Spin (40). Testing memory for a relationship state is done by a procedure that adds the state to memory if it isn’t there. Since Tale-Spin is in the mode of asking the audience, it types:

DOES ARTHUR BEAR THINK THAT GEORGE BIRD LIKES HIM?
1: A LOT 2: A LITTLE 3: NOT MUCH 4: NOT AT ALL

Tale-Spin can simultaneously maintain four different states that are similar to this in memory. The first, this one, is: Does Arthur think that George likes him? The others are: Does Arthur think that he likes George (i.e., does Arthur like George)? Does George think that Arthur likes him? Does George think that he likes Arthur (i.e., does George like Arthur)? All are used in making different types of plans.

The audience says that Arthur thinks George likes him a lot, so Persuade starts working through its planboxes with the goal of Arthur getting George to tell him where some honey is, in pursuit of the higher goal of getting some honey. The first planbox is to simply ask, but it has further preconditions. So Tale-Spin asks if Arthur feels deceptive toward George (the audience answers: not at all), if Arthur feels competitive toward George (not at all), if Arthur likes George (a lot), and if Arthur thinks that George is trying to deceive him (not at all).

Finally, Arthur Bear has a plan to know where some honey is, so he can control it, so he can eat it, so he can be less hungry: he’ll ask George Bird.

Speculations and lies

From here things begin to go poorly for Arthur. It turns out that George is a deceptive bird, and he will deliberately tell Arthur about an alternative possible world that isn’t the one of this Tale-Spin story. That is, he’s going to lie, and Tale-Spin is going to create a parallel world structure to support this lie, representing the fact that Arthur believes it.

First, Arthur wants to Tell George his request. Tell has two planboxes: do it yourself, or get an agent to do it. Arthur starts with the first one, which requires that he be near George. This is a Delta-Prox problem, resulting in the formation of the goal “Arthur is near George,” and the appropriate planboxes of DProx start going. Since Arthur knows where he is (the cave) and thinks he knows where George is (his nest), there’s no need to start up DKnow planboxes. DLink then creates more of the world, so that there’s a connection between Arthur’s mountain and George’s meadow. Then Do-PTrans moves Arthur along the ground (bears cannot fly) to near George’s maple tree. The inferences from this include Arthur and George both knowing that Arthur has arrived there, and Arthur knowing that George is there. Before these sorts of inferences, characters had to Speak to let others know of their presence. This failure of characters to notice each other created another of Tale-Spin’s famous mis-spun tales:

Henry Ant was thirsty. He walked over to the river bank where his good friend Bill Bird was sitting. Henry slipped and fell in the river. He was unable to call for help. He drowned. (128)

Meehan added noticing as an inference from changes in location, causing Bill to save Henry’s life. But another was not so lucky:

Henry Ant was thirsty. He walked over to the river bank where his good friend Bill Bird was sitting. Henry slipped and fell in the river. Gravity drowned. (129)

In this version of Tale-Spin, gravity was a character that performed a Grasp on Henry Ant and then PTRansed them both into the river. Henry got rescued by his friend Bill, but gravity had no way out. This was fixed by changing how gravity operates in terms of Schank’s CD expressions — Propeling Henry instead.

Returning to our story, once everyone knows Arthur and George are near each other, Do-MTrans is called and Arthur asks George to tell him where some honey is, resulting in a call to the procedure for handling favors: Request. Now there is reason to ask the audience how George views his relationship with Arthur. Tale-Spin asks if he likes Arthur (answer: a little), if he trusts Arthur (a little), if he thinks he dominates Arthur (not at all), if he feels indebted to Arthur (not at all), and if he thinks that Arthur trusts him (a little).

Here we come to the main “psychological action” of this Tale-Spin story. This action is enabled by the fact that character planning can make use of Tale-Spin’s inference mechanisms. George Bird uses these mechanisms to speculate about the potential impact of answering Arthur’s request.

The first inference is an obvious one: Arthur will think that George has told him there is honey somewhere. Second, from what George believes about their relationship, George can make the inference that Arthur will believe that he believes there is honey in this place. Also, based on the relationship, he infers that Arthur will believe there is honey in that place. Finally, George can infer, based on this, that Arthur will make a plan to eat the honey.

George then takes all of these inferences and, in turn, generates all the inferences from them. We might say that he imagines worlds in which each of these things are true. But he doesn’t find what he’s looking for in any of them. As Meehan puts it, he “was looking for an inference that said he was going to be happy (or sad), so that he could decide in favor of (or against) Arthur’s request” (183). So, in consultation with the audience, it is decided that George will lie to Arthur.

When this happens the entire structure of what George tells Arthur is created in the course of the Do-MTrans, but some of it only indexed to character memory, not the system’s memory. This leads to the creation of Ivan Bee, who owns honey, which is in a beehive, which is in a redwood tree, which surrounded by some ground, which is part of a valley. The physical locations are indexed to the system memory: they’re real. But at first the hive, bee, and honey are only in George’s memory, and not believed. When he tells Arthur about them, the audience needs to be asked how much Arthur trusts George. The answer is “a little,” and the inference maker determines that they are added to Arthur’s beliefs about the world.

Another trick

Now Arthur thinks he knows where to find some honey. As Meehan puts it:

DO-MTRANS returns to REQUEST which returns to the first call of DO-MTRANS which returns to TELL which returns to PERSUADE. The goal of the persuasion has been satisfied — Arthur now thinks he knows where there’s some honey — so PERSUADE returns to DKNOW which returns to DCONT…. All this has gone toward achieving only the first precondition of DCONT, finding out where some honey was. (184–185)

Nothing goes well for Arthur from here. The audience is asked how he feels toward Ivan (real feelings, in Arthur’s reference world, even if toward a fictitious being in this Tale-Spin world) and he decides to ask Ivan for some honey. Arthur travels to where he believes Ivan can be found, but when he gets there Tell fails its precondition tests — he’s not “close” to Ivan, because Ivan’s not there. Arthur infers that George has lied, and proceeds to distrust him, like him somewhat less, and believe George is trying to deceive him. However, Arthur hasn’t stopped believing that Ivan exists, but only that he knows where Ivan exists. As it turns out, there’s no one to ask where Ivan really is except George.

So Arthur heads back to George’s tree. Given that asking George where Ivan is still exists as a failed goal, he tries the next Persuade planbox: bargaining. He infers that George would probably like a worm, and the initial setup determined that Arthur knew the location of a worm. So Arthur offers George a worm if he will tell him where to find Ivan. George promises to do so (a possible world), while making the decision to trick Arthur (a different possible world, which will only come to exist if triggered by the worm’s arrival). After Arthur succeeds in getting the worm and bringing it to George, the bird eats it and makes fun of him. With this planbox having failed, the next is to threaten. But the audience, when asked, asserts that Arthur feels a little dominated by George, so he won’t try it.

Having failed to find a way to ask Ivan for honey directly, the next planbox of Tell moves Arthur to try to get someone else to ask Ivan to give him honey. He tries with George — there’s no one else — but this fails even more pitifully than his last attempt. Things continue to unravel until Tale-Spin decides there’s nothing more that Arthur knows to do to try to address his hunger.

His options are particularly limited because there’s no way for him to go looking for food — if he cannot convince someone else to tell him, there’s no way to find out. And, as we remember from the set up for the story, no one knows about any bear food in this world. Between Arthur and George they only know about one worm. So the story could not have turned out any other way. As soon as the audience decided that hunger was Arthur’s problem he was doomed. He made many plans, none of them had a chance of working, the end.

Notes

4For the third mode, Meehan worked particularly on versions of Aesop’s fables, such as “The Fox and the Crow” and “The Ant and the Dove.”

5This summary draws on pages 41–44 of Schank’s Conceptual Information Processing (1975a).

6Meehan calls them “delta-acts” in his dissertation, while Abelson and Schank call them “deltacts” in their 1975 publications (Schank, 1975b; Abelson, 1975). I will alternate, depending on whose work I am referencing.

7According to page 50 of Meehan’s dissertation. The description of this portion of chapter 11’s story, on page 170, elides this step.

2 Responses to “EP 5.2: A Tale-Spin Story”


  1. links for 2008-02-20 « Talkabout Says:

    […] Grand Text Auto » EP 5.2: A Tale-Spin Story “Chapter 11 of Meehan’s dissertation gives a detailed account of an interactive story, about a hungry bear named Arthur, that I will use to illustrate Tale-Spin’s operations and their backgrounds. 2 Creating a world […]

  2. Himank Says:

    Hi, Mr. Noah I am also doing a project on story generation. So if you can guide me about some other sources where I can get some matter on Story generation then I will be very thankful.
    Or if you can tell me your email id, so that I can contact you. My email id is himanksharma[at]gmail[dot]com
    Thanx

Powered by WordPress