The mysterious nature of bots

A couple of years ago @JackLScanlan made a joke of some kind, as he often does. The subject of the joke was @Horse_ebooks, a uniquely Twitter oddity and likely the most infamous spambot to have ever lived. This seemed like a prime opportunity for silliness, so after a bit of coding @scanlan_ebooks was born. Little did I know this would be but the first of many robot clones.

Markov chain chatbots have a long history in programming, being very easy toy examples of a simple but powerful mathematical model which is used for a whole lot of more serious stuff. The classic Markov text generator maintains a probability map of which words are more or less likely to come after some number of preceding words, and builds a sentence by following it from a given start point.

The algorithm I use now is a variation on this. Instead of linearly chaining words, it starts with an intact sentence from the corpus and mixes it with one or more other sentences in a manner similar to DNA recombination. The Markov model is used to select the junction sites where this recombination occurs. This seems to strike a nice balance between diversifying the output and avoiding complete gibberish; the sentences it produces are grammatically correct more often than not. (well, assuming the source is!)

This has proliferated somewhat, and I have no idea how many of the various _ebooks accounts are using my twitter_ebooks Ruby gem or how modified they are. There have been bots based on novels, cartoon characters, and all manner of strange text corpora. Kevin Nguyen wrote a very introspective article about @knguyen_ebooks, deployed by @negatendo.

What I find much more interesting than the bots themselves though is the way people interact with them. These generally fall into three groups:

  • Those familiar with Markov chains who are being tongue-in-cheek about it
  • Non-programmers experiencing the ELIZA effect to various degrees
  • People who should probably never be relied upon to judge a Turing test

The third group is more populous than you might expect, especially if you include ESL speakers. My bots will try to imitate human interaction patterns, responding to mentions using keyword analysis to come up with something vaguely related to the input, and a slight random delay to avoid appearing superhuman. They will also follow back and occasionally favorite or RT tweets they find sufficiently interesting.

Some examples of amusing events in recent history:

mcc_ebooks and the robot uprising

I think @mcc_ebooks is my favorite overall, just because @mcclure111 and her friends are already so suffused with baffling surreal humor that it just sort of amplifies it.

People tend to give it the benefit of the doubt, which is often very sweet and heart-warming.

As the original human tweets at and about the bot, more bot-related statements enter the corpus, so it becomes "self-aware".

Which of course, has only one logical endpoint.

m1sp1dea_ebooks spooks Rackspace security

@m1sp1dea_ebooks uses a combined corpus consisting of myself and @0xabad1dea's tweets. It's kind of a freakish hybrid. (people keep confusing the two of us anyway, somehow)

Of course since @0xabad1dea spends a lot of time talking about infosec, it was inevitable that the bot would one day announce it had found a vulnerability.

And not do very much to discourage the idea.

Fortunately, a human quickly intervened.

The political intrigues of TonyAbotMHR

During the last Australian federal election season, someone made a joke about Tony Abbott and his propensity for Markov-like meaningless rambling. Thus, @TonyAbotMHR was born, using a slightly different algorithm that replaces nouns with random other nouns.

Occasionally, he is mistaken for the real thing, by endearingly optimistic citizens who seemingly believe the denizens of high politics are likely to engage in individual discourse with them.

There's been at least one truly epic debate, covering everything from genetically modified giraffes to the local entertainment industry.

This man has since been elected Prime Minister, to our great dismay.

winocm_ebooks and the jailbreak swarm

@winocm has the highest follower count of my Twitter friends by a large margin, largely on account of her role in the iOS jailbreaking community. Sadly this means she is constantly pestered by people demanding the release of various things.

Fortunately, this was a trivial extension to make to @winocm_ebooks.

  make_bot(bot, "winocm") do |gen|
    EM.next_tick do"@winocm") do |tweet|
        text = tweet[:text].downcase
        if !tweet[:user][:screen_name].include?("_ebooks") && (text.include?("7.1") || text.include?("jailbreak") || text.split.include?("jb"))
          bot.reply(tweet, "@#{tweet[:user][:screen_name]} " + gen.model.make_response(tweet[:text]))

It works really quite surprisingly well. People mention @winocm, receive a reply from @winocm_ebooks, and proceed to engage with it, seemingly unaware that their jailbreaking deity has been replaced with a robot.

These conversations go on for many, many pages. A few bold individuals even requested the bot's hand in marriage:

I'm fairly sure this isn't legal anywhere yet. Maybe Japan.

Can we draw any interesting conclusions from all of this? Probably not. I do like to think, though, that the readiness with which people engage with the bots speaks well of our capacity to accept that which is fundamentally different from us. Should true non-human intelligence appear, I hope we will be similarly ready to adapt our culture around it.