The Atomic Playboy and the Radiation Romeo

The button below will open a new browser window displaying the Flash interface for Atomic and Romeo (Version 16 with Preloader). You will find a page of introductory text, some instructions and then the interface where you can suggest a topic for conversation.

This version 16 uses the landscape layout, updates the heckler and end-of-conversation functions with an audio sign-off. All the features from previous versions remain - scroll bar control,custId variable allows me to better log and track conversations.

The chat-bots are hosted on the Pandorabots server under the Shared Service subscription. Please note, the terms of the Updated Policy Guidelines for Free Community Server state that the “Use of automated scripts to make your pandorabot talk to itself or another bot or script” is proscribed (Pandorabots 2011). This project is being developed with the agreement of the Pandorabots Inc management and we would like to acknowledge their support. ( Pandorabots )

Please leave a comment...

After you have had a play with Atomic and Romeo please use this link to leave a comment.
Maybe you could suggest a topic of conversation or a layout suggestion.
All suggestions gratefully received.

Wednesday, December 21, 2011

Ferguson and Geoff - a 'two-act'

I've been watching a little (under-statement) of Craig Ferguson and his robot side-kick Geoff Peterson (CBS - The Late Late Show - check Youtube). They are an interesting subversion of the comedian - feeder relationship. Ferguson often plays straight to trigger Geoff's set pieces and catch-phrases. Ferguson, for example, will ask Geoff has he every been to such-and-such a place. Geoff's traditional reply is that he has a house there, they should go up for the summer, throw beads at people, take off their clothes and go swimming etc. This spiel has become so much part of act that Ferguson now rattles through set-up, even preempts some of Geoff's replies, and tightens the sequence to the point that it becomes an in-joke.

This is important for a couple of reasons. First, it suggests that humour used in this manner is an inclusive act - Ferguson, by playing straight, is the stand-in for the audience. He is controlling the flow for the audience, even if this means trimming his role. This in-joke, where the audience has to know the joke before it is delivered, makes the audience part of the performance. The second reason is that it suggests, as some humour theories deny, that jokes and comedy in general fail after the first telling. Having heard the joke before does not limit the possibility of humour. Ferguson, from the 2nd through nth telling, gets this to work by altering the context. At the first performance the text is all - by the nth telling context is all.

The Sub-set of AIML - Version 2

I've been working through the file called 'atomic.aiml'. By the way, the name is coincidental, it's not a reference to my character called Atomic. As the primer to AIML explains, ""Atomic" categories are those with atomic patterns, i.e. the pattern contains no wild card "*" or "_" symbol. Atomic categories are the easiest, simplest categories to add in AIML" ( There are some 3412 categories in the original file. My version will contain far fewer. The more work I do on the files the more of the original I want to strip out. Something, as yet undefined and ill-formed, in my mind is telling me to just go with what feels right. Less is better.

One thing I'm getting more of is attitude; a whole lot more attitude. For example, in the original file the input MY MOTHER DIED is dealt with by a consoling statement. In my version, from the point of view of Atomic, this input generates the response "She was alive when I left her". Tasteless? Sure. Offensive? More than likely. Inappropriate? No. Atomic is dead and has, due to this unusual point of view, a less than sympathetic reaction to death and a whole range of human emotions. 

I'm going to have to add a disclaimer to the site about the offensive language. There is some - in truth, there could be a lot depending on the topic suggested by the viewer. As a character in the original play he was self-obsessed, opinionated, ruthless and often offensive. The more of this stuff I write more Atomic is coming to the fore as a character. He is not nice. In fact, the suggestion that he is 'nice' or 'not being nice' is met with a responses ranging from, "Nice - damned with faint praise!" through, "Nice - I hate 'nice' with a vengeance", to "Boo-fuckin-hoo". Romeo, as the comic feeder, will need to temper and balance this tendency. 

Friday, December 9, 2011

Two little moments...

The beauty, if that is the right word, of doing a PhD is that it is constantly with you - it is always somewhere near the forefront of your mind. Here are some examples...

Moment One - This morning I was out walking my dogs - clear sky, warm breeze, rowers unzipping the smooth waters of Throsby Creek. Nice. What was I thinking about? The post-human condition! Talk about not being in the moment! Anyway, I've been doing some introductory reading in the area and it occurred to me that the the logic of post-humanism traces its ancestry from people like Lewis Mumford (The Myth of the Machine), Marshall McLuhan (The Gutenberg Galaxy - and others), George Landow (Hypertext 2.0 and 3.0) through Jay Bolter (Remediation) to Bruno Latour, N. Katherine Hayles, and Robert Pepperell. 

The narrative through-line of all of these seems to be (as a first thought based on scant reading) that we simultaneously make and are made by our technologies and media. And that's what part of my exegesis is about - the making and the made. Humour theory, creativity theory, scriptwriting and dramaturgy, and artificial intelligence all have in common the relationship between the making and the made. These different disciplines theorize about the made (the product), the making (the process), and what these products and processes do for and to us (the social, psychological and cultural making of us).

Moment Two - I was riding to work when I had this revelation about technique. As such it sounds less deep, less profound than the discussion above. But the truth is, it's all about the making and without that these is no made. I've been consider ways of converting a simple two character script structure into AIML - how to split a script so that output from one (<template>) is input for the other (<pattern>) without having to manually code for one chat-bot and then re-code for the other. 

At work this morning I experimented with some song lyrics - Pulp's Common People because it's funny and has a clear narrative. I used the Pandorawriter on the Pandorabots site - it's a "Dialog to AIML Parser", in other words it converts dialog, delimited by a vacant line, into AIML. I fed in the first verse and out came an AIML file with a <category> for each pair of the lines set as <pattern> and <template>. See below, let's call this Atomic's text:
    <pattern> She came from Greece she had a thirst for knowledge </pattern>
    <template> she studied sculpture at Saint Martin's College </template>
Then I deleted the first line and ran it through the Pandorawriter again. Let's call this Romeo's text.
    <pattern> she studied sculpture at Saint Martin s College </pattern>
    <template> that's where I </template>
What does this do? When Atomic receives the line "She came from Greece she had a thirst for knowledge" he says, "she studied sculpture at Saint Martin's College". This is then thrown to Romeo who then says, "that's where I". And so on - Atomic and Romeo can sing a song, each taking a line.

The big advantage of this little technique is that I can write a script in any simple text editing program and then feed it through the Pandorawriter. To be honest, this is a very important revelation. It frees me from the need to simultaneously to be a script writer and a code writer. A very useful division of labour.

Thursday, December 8, 2011

The sub-set of AIML

I've got the list of files down to 18 files containing some 17800 categories. The next step is to go through these categories in much more detail. What am I looking for? Anything that doesn't match the character profiles of Atomic and Romeo. If it suits one of them it will still have to go.

Why is less AIML better than more? And why am I making this decision? The need to avoid Atomic and Romeo having too much in common is a part of the logic. Another part is less obvious. It is beyond difficult (if not impossible) to keep any overall image of the possible relationships between categories. Less is better. Another part comes from the scriptwriter in me and is even less obvious. How would I edit a script? Look for the crucial moments, those line of dialogue the audience simply must get to generate closure. Everything else is up for grabs. 

What is the absolute least? I don't know. However, Atomic and Romeo will have their own 'Properties' defined inside the Pandorabots server rather than in an AIML file. This is where I'll set the 'facts' of their back story.

Now back to the categories. 

Decision time

I spent yesterday going through the generic set of AIML, the aiml-en-us-foundation-alice.v1-5 set. This was not a easy task; there are 64 files containing over 93000 categories!

For each of the files I skimmed through the AIML categories. I was looking for the relationship between the and the

The core consideration in making the decision about which files stay and which go is character. Does this file or category suit Atomic and Romeo? It has to suit both as this edited set will be common to both characters.

There are some examples of very clever uses of AIML.  For example: telling jokes that require the chat-bot to remember the last thing it said and then deliver the punch-line after the client types in WHAT; doing some simple maths; and creating stories using celebrity names randomly chosen from a list that are added to existing story lines.

The automated story telling is interesting. It is akin to theatre games where the audience, using some random device like dice or a chocolate wheel, sets the location, characters and theme for actors to improvise around. Footlice Theatre Company in Newcastle used to to a parody of Melrose Place called Hellrose Place using these improvisational devices - performing in a pub with no 'safety net'!

When I'm finished creating the edited set I'll post a list of the remaining files.

Tuesday, December 6, 2011

Some elementary issues

This post is a device. The purpose of this device is to force me to clearly articulate some elementary issues in the development of character and AIML. So, please excuse me if the following contains more questions than answers and throws seemingly disconnected ideas around... Such is my want...

1.  The common back story problem
Atomic and Romeo need to share a common back story - they are friends rather than strangers. Cool. Simply give them some common AIML categories... That sounds easy...

2. The too much recursion / dead-end problem
There are on YouTube, and other places, examples of chat-bots talking to each other (or of a chat-bot talking to itself). For instance,  look for Fake Kirk talking to ALICE - they use the same ALICE 'engine' and AIML architecture as I am using. These conversations are pretty banal - strewn with non-sequiturs and odd recursions. Is this as good as it can be? If so I've got real problems in this project.

I have a hypothesis. When the two chat-bots share too much AIML this triggers a lot of recursive patterns or leads to conversational dead-ends. As an example, both ALICE and Fake Kirk respond to the "Do you like science fiction?" question in exactly the same way. Neither chat-bot actually knows how to reply to the answer "Yes I love it, especially the works of Philip K. Dick." Both get hung up on the "it" - what does 'it' refer to?

What does this mean in practice? Atomic and Romeo need to share some but not too much AIML. I think this balancing act will be difficult to achieve. Maybe this balance will emerge from the writing and rehearsal process? Depending on emergent phenomena is a risky business. 

3. The start point problem
Basically I've got a choice of two starting points.
Option One - I could start with a completely blank slates. Atomic and Romeo as they currently exist know nothing - even less than Sargent Schultz! I could write a completely unique set of each of them.
Option Two - I could start with a generic set of AIML, for example the set. This is "a free AIML set, in the English Language as spoken in the United States, authored by the AI Foundation".

The advantage of Option Two is that it maintains some serendipity in the interactions that could take me places that I would not think of going. Rehearsing with actors who don't even know there is a script would be tedious in the extreme - I would have to craft every single and

Some conclusions - so far...
The plan is to go with the V1.5 version of Alice.
Edit the set ruthlessly - strip it right back.
Generate a common set that I can use for Atomic and Romeo.
Then, in rehearsal, add to their individual sets.

Hopefully this will allow the balance between what the share in common and what is unique to each to emerge.

Been away a while

The arrow of time is really pointy - you know what I mean. Anyway over the past months I've been concentrating on writing sections of my exegesis and, where possible, converting these to journal articles. I've now got a pretty good handle on the overall structure of the exegesis. The sections I've already written are long but this is a good starting point for editing and shaping.

In early January I'm off to Los Angeles for a couple of conferences - the  Eighth International Conference on Technology, Knowledge and Society and then the Sixth International Conference on Design Principles and Practices. The papers for these have been written and submitted. Hopefully the publishing process will not cause any grief.

In February I'm delivering a paper at the 18th Australasian Humour Studies Network Colloquium in Canberra. Last year it was held in Hobart. A damn fine event that attracted academics and practitioners - this year promises to be bigger and better.

The next couple of posts will be about AIML development issues. This is my core task now.