Before long, a computer will write jokes as funny as those created by professional comedy writers.
I’m no expert in computational humor, but I am the author of Comedy Writing for Late-Night TV. It’s possibly the most practical guide to writing jokes and other short-form comedy ever written.
I’ve also been reading up on the rapid advances in artificial intelligence (AI).
Take a look at these AI milestones:
1997: IBM’s Deep Blue computer system beats
a human world champion in a chess match.
2011: IBM’s Watson computer system beats
human champions in Jeopardy.
2016: Google’s AlphaGo computer program beats
a top-ranked human in Go.
Each of those milestones was previously considered unattainable by a computer. Each of them was considered to be a true test of a computer’s ability to think like a human. And a computer raced past each one of them.
The ability to write a good joke will be the next barrier for AI that a computer leaps over. That’s because writing a joke involves executing the kind of algorithms that computers can apparently already execute.
Here’s how I believe a computer system like IBM’s Watson will soon be able to write a joke. (What I know about Watson I get from The AI Behind Watson: The Technical Article.)
Say you’re a senior citizen sitting at home with no one but your personal robot for companionship. You’re reading the news and you say, “Huh. Some airline employee was arrested with over two hundred eighty two thousand dollars in his backpack.”
In a flash, the computer brain in your robot companion takes these steps:
STEP 1: The computer identifies the most unusual keywords and sentence fragments in the potential joke topic you uttered. Those are the linguistic elements–I call them handles–that made the topic interesting enough for you to comment on.
This process of parsing the joke topic into handles seems similar to what IBM’s Watson did every time it “decomposed” a Jeopardy question into “subclues.”
In our hypothetical joke topic, the two handles are “airline employee” and “two hundred eighty two thousand dollars.”
STEP 2: For each of those two handles, the computer generates a list of what I call associations. An association is a word or phrase that’s somehow related to the handle.
One association of “airline employee” is “airport restaurant,” which has the sub-association “costs a lot of money.”
And one association of “two hundred eighty two thousand dollars” is “a lot of money.”
This process of generating associations seems similar to what IBM’s Watson did when it found phrases that were statistically related to keywords by using its “hypothesis generation” algorithms.
STEP 3: The computer makes a connection between the two associations “costs a lot of money” and “a lot of money” and it decides to build a punch line around that strong connection.
This process seems similar to what IBM’s Watson did when it evaluated candidate Jeopardy answers by using its “evidence retrieval” algorithms.
Here’s a diagram of Watson’s question-answering (QA) architecture:
STEP 4: The computer uses its automated reasoning skills to devise what I call an angle leading from the joke topic to the punch line. The computer might reason this way: The airline employee has a lot of money, so he can dine at an airport restaurant, which costs a lot of money.
STEP 5: The computer uses its natural language generation (NLG) skills to transform the topic-angle-punch line data of the candidate joke into conversational English.
Some NLG systems are currently used to transform numerical data into sentences in English. And other computer programs known as chatbots now use NLG systems to simulate human conversation.
STEP 6: The computer decides that the resulting candidate joke is probably surprising enough to be funny. It does this by searching through its store of human knowledge and finding that a meal at an airport restaurant is extremely unlikely to cost two hundred eighty two thousand dollars.
This process seems similar to what IBM’s Watson did when it performed “confidence estimation” and “ranking” on a candidate answer.
STEP 7: The computer directs your robot companion to tell you the joke.
Sure, those are a lot of steps for a computer to execute. But remember, IBM’s Watson beat human champions in Jeopardy. That strongly suggests that a computer could do all of the above really fast, as fast as a professional comedian.
And it may be even easier for a computer to get a laugh than to win dollars in Jeopardy. That’s because there is only one way to win a Jeopardy question: figure out the one correct answer and buzz in first.
But there are several ways to get a laugh from any given joke topic. A fertile joke topic–one with a lot of associations–may spawn three or more different jokes. And those jokes don’t have to be of professional quality to get a laugh; they just have to be reasonably funny.
So when you comment to your robot companion, “Look at this. Some airline employee was arrested with over two hundred eighty two thousand dollars in his backpack,” the robot might wisecrack:
“He probably needed the money to buy lunch at the airport.”
And you, the senior citizen, might chuckle and feel a little less lonely.
High-quality computational humor is the next Holy Grail for AI. That’s because a computer with a sense of humor is a more human computer. And a more human computer is worth billions of dollars.
UPDATE #1: A Computer Can Write a Joke
Soon after I wrote the above post I decided to dust off my engineering degree and teach a computer to be funny myself.
I learned how to program in Python and how to use many readily-available tools of natural language processing (NLP), natural language generation (NLG), and machine learning (ML).
Then I used those tools to transform some of the techniques in my book, “Comedy Writing for Late-Night TV,” into computer code.
Now I think it’s fair to update the second paragraph of my original post to say that I am an expert in computational humor.
I also think it’s fair to answer the question posed by the title of my original post this way: Yes, a computer can write a joke.
I call my joke-writing system Witscript (U.S. Patent Nos. 10,642,939; 10,878,817; and 11,080,485). Right now the jokes it makes aren’t very sophisticated.
But as research in artificial general intelligence (AGI) advances, Witscript can learn to create smarter jokes. Witscript is a road map to a computer with a sense of humor, like a witty human companion.
Witscript also represents a new approach to computational creativity.
On November 22, 2019, I presented a poster about Witscript at the Natural Language, Dialog and Speech (NDS) Symposium in New York City.
And below is the poster abstract. For a demo of Witscript, contact me through my company website.
Witscript: Computational Methods for Generating Contextually Integrated Jokes
Joseph E. Toplyn, SB, Twenty Lane Media, LLC
Research shows that people prefer to interact with an artificial intelligence (AI) that exhibits a sense of humor. But most conversational AIs have only a limited ability to make jokes. For example, they only output jokes written by humans, they mostly generate nonsense that requires human editing, they only tell jokes on request, or they tell jokes unrelated to a context. In contrast, we present Witscript, a novel approach to computational humor that independently generates original, contextually integrated jokes. A user inputs text, which may be an utterance in dialog, into the Witscript system. Witscript uses natural language processing tools and word embeddings to identify which pair of keywords in the input text is most likely to be useful in creating a joke response. Word embeddings are then used to list words associated with each of the two keywords. The two word associations that have the best wordplay are linked to create a punch line. Finally Witscript uses a language model fine-tuned on a dataset of jokes to fill the gap between the input text and the punch line with bridge text in a natural-sounding way. This bridge text and the punch line comprise a joke response to the original input text. The system outputs the joke response to the user only if it exceeds a preset score. With Witscript software to simulate a humanlike sense of humor in conversation, chatbots can be more engaging and personal robots can be friendlier companions.
UPDATE #2: This App Can Write a Joke
I’ve launched my AI comedy co-writer, Witscript, as a web app. Now anyone can get AI to write a joke quickly and easily.
Hey Joe,
I am wildly associative.
I wanna try witscript/to appreciate it/and to compare jokes that I might degenerate using organic personal logger rhythms like the barndance scene from 7 Brides for 7 Brothers.
I WANNA TRY IT!!!!!
Please retch out to me from Wry New Yuk!
Thanks very much for your interest in Witscript, Dave!
As much as we love that bangin’ barn dance scene, at the moment Witscript is only available to enterprise users because of logistical constraints. We are actively working on scaling up the app and hope to make it available to individual consumers in the future.
Please keep an eye on witscript.com for updates on when the app will be available to individual users.
Association jokes are more complex.
Even easier for automation is sarcasm and insults.
A bank computer asks a yes no question.
“Here for banking?”
YES. Computer says “Well duh.”
NO Computer says “First day on the internet?”
NO ANSWER “Are yes no quesitons too challenging?”
Wayne, those are funny jokes.
Yes, one way to get chatbots to crack jokes is to have humans write the jokes ahead of time, and also write rules that control when the chatbot will crack each pre-scripted joke. That approach gives the chatbot administrator total control over what the chatbot says in any given situation.
But that approach also limits the number of jokes that the chatbot can utter without repeating itself. It also requires that humans keep writing new jokes to keep the chatbot’s sense of humor up-to-date.
Witscript takes a different approach. Witscript lets a chatbot improvise original joke responses on the spot, instead of just retrieving canned joke responses from a database.
I think Witscript’s approach is better for chit-chat chatbots because it creates new jokes on the fly the way a witty human does, which gives it more flexibility.
Right now Witscript’s jokes are based on wordplay. But the same basic architecture will allow it to make more sophisticated associations and jokes as artificial intelligence tools improve.