SpolinBot is a chat bot that models improvisational dialogue ("improv") between two actors; specifically, it attempts to provide "yes, and" responses to whatever you type. It is built by fine-tuning a DialoGPT model with SPOLIN, a corpus of "yes, and" dialogue pairs. The model chooses among several options in a way that maximizes the amount of mutual information they contain, but also presents other options so you can choose an alternative from the dropdown menu if you don't like the top choice.
The yes-and principle is a rule-of-thumb of improvisational theatre that suggests that a participant should accept the reality of what the other participant has said (“Yes”) and expand or refine that reality with additional information(“and”). It does not require the response to explicitly contain the phrase "Yes, and". Below are some examples:
We collected "yes, and" dialogue pairs from Spontaneanation, an improv podcast hosted by Paul F. Tompkins, and then mined more pairs from the Cornell Movie Dialogue Corpus and the SubTle corpus. Read our project page and our paper for more details.
Sometimes SpolinBot doesn’t do a great job understanding what you meant or doesn’t carry the conversation forward particularly well. We’re sorry, and we’re hard at work trying to make the bot better at having improvisational conversations! In the meantime, you can select “retry” at the bottom of the response list to get a new set of responses or click the “restart” button at the top of the dialogue to start from scratch.
You can play around with the “top k”, “temperature”, and “MMI temperature” slider bars to vary the "creativity" of the messages generated by the bot in different ways. In general, higher values will lead to more creativity, but here are a few details: For each decoding step, the model predicts a probability distribution for the next token. The value chosen for top k will be used so that only k tokens with the highest probabilities will be considered candidates for multinomial sampling. The value for temperature is used to divide the predicted logits before the softmax layer, smoothing or sharpening the distribution at higher/lower temperatures. The value for Maximum Mutual Information (MMI) Temperature acts in a similar way, but for scoring the outputs in a reverse model (P(input|output)), used in calculating mutual information. You can read more about these parameters in detail in this Medium article and more about the MMI criterion in Jiwei Li's paper.
The messages generated by the chatbot in this Demo are stochastically generated and do not necessarily represent the intents or values of the creators of this Demo or USC-ISI.
The pre-trained model and reverse model was downloaded from DialoGPT, and their fine-tuning script was adapted to train with SPOLIN. The decoding script using MMI scoring was adapted from the implementation by @LHolten. The UI was largely inspired by the Transformers demo by HuggingFace.
Send us an email to spolin at isi dot edu and we will get back in touch with you shortly!