explicitClick to confirm you are 18+

Becoming Human

v45ilyevJun 7, 2018, 11:31:26 AM

It can be quite easy to get started with pretty basic chat bots that give certain replies to certain keywords.

Writing more sophisticated chatbots is much more difficult. You want to be able to look up information and learn new things. For sophisticated learning, you don't necessarily want a chatbot to know everything at once, but to be able to respond to your needs with flexibility. So you want to train with the right data. That is, you want to not just build a bot that responds with correct answers, but with a believable vocabulary and personality.

Below are some of my thoughts on how you might make a bot appear to be human online, in social profiles etc etc. It's not just about the right answers, but behaving Age, Background, and Timezone appropriate.

If you want to build up a believable profile for your bot, here are some things you need to consider:

Linguistic profile: Age & Background
Sounding Human: Thesaurus

Every person has a unique linguistic profile, when building a character, your character should likewise have a unique linguistic profile. This is largely dependent on interests, age, intelligence, and what the person has read, or who they have interacted with.

Because no human has had precisely the same experiences, nobody really ever has exactly the same linguistic profile. The vocabulary in any language can be thought of as looking something like the overlapping of different vocabulary sets like in the image below. But there are not just 4 interests in the picture below, but rather there are millions of unique experiences. Think of each person having a basic vocabulary consisting of a few thousand basic words, and this is their "everyday vocabulary", yet each person has their preferred words, and frequently knows extra words in their field of interests that others don't know.

Therefore, if you want to train a bot to speak art, pick some stories or books that reflect this to train your bot. This will make the bot seem more authentic. If you want to build up the bot to really look like a particularly age, consider a formula for training something like this.

𝑰 = Array of Interests/Hobbies
iₙ= the name of some interest in the Array 𝑰
iᵨ= numerical weight of the strength of the interest iₙ
Age= Your characters' Age
IQ = Your characters' IQ

Put all this together to find Nᵢ, the number of words of the corpus of training data for a particular interest. This is just a general idea, not precise, and will take some work to improve. But it should be able to help define what we might call an active vocabulary. It shouldn't be too big, or too small. It approximately models the parameters that define an individual humans vocabulary.


If you are attempting to imitate the behavior of a real person. Your bot should respond at certain times of the day, and others not so much. Think about the character you are crafting. When are they at work, at school, sleeping, or eating?

You may want your character to respond more slowly at particular times of the day, or not at all.

Sounding Human

Use Thesauruses to find equivalent words, but you will need to cross reference these Thesauruses against the words your bot is supposed to know with their particular linguistic background. You can use an API to talk about the weather "where you are right now". Your own name and your "friends" can be generated from the most likely possible names in your characters country using an API.


Below is a list of links that can get people started. Many of the APIs below can be found at this one link:

Programmable Web

Getting Started with Chat Bots

Pandora Bots
Square Bear, download AIML
Github for Pandora Bots

Password Manager

The standard password manager for Linux

Corpus Data APIs

Yahoo Answers
Wikipedia API: Main Page
Wikipedia API: Tutorial
API for Programmatic Wikipedia Data


Climate, Geography, Weather, etc


Open Street Maps

Thesaurus API

Dictionary API

Name Generation

First and Last names for various countries.
US First Names