Skills

The -b glossary skill enables qary to answer basic “what is” questions about data science for healthcare terms and concepts.

qary -b QA

It can even answer general factual questions like “What is Barak Obama’s Birthday?”. But if the answer isn’t explicitly stated on Wikipedia somewhere it will make something up:

YOU: When was Barak Obama born?
qary: August 4, 1961
YOU: Who invented the perceptron?
qary: Everett Rogers
YOU: -1 #shouldbe Frank Rosenblatt
YOU: Who invented the first perceptron neural network?
qary: Gustav Kirchhoff
YOU: -1 #shouldbe Frank Rosenblatt
YOU: Where do babies come from?
qary: industrialized countries
YOU: #goodone

Others

The current version of qary can imitate the classic therapist bot “Eliza” and carry on a relatively entertaining conversation based on lines it’s read from movie scripts. You can select any or all of these skills with command line args and the configuration file ~/qary.ini in your user directory.

You can also expand the complicated questions that qary can answer by adding Q/A pairs to yaml text files in data/faq. We’ll use that to train deep learning networks as well as actual answers if the questions are close enough to your wording in that training file.

qary -b your_name_here

And soon qary will be able to detect your mood and carry on more meaningful conversations, to give you encouragement and emotional support. We’ll have something like this online in a couple months:

bot: How are you doing?
YOU: not so great
bot: I'm really sorry to hear that. What do you think about doing 10 pushups to get your blood flowing?
YOU: not so much
bot: Would you like to chat about it?
YOU: sure
bot: So what are you feeling right now? How does your body feel?
...

qary personalities

Travis’s probabilistic conversation manager is working nicely to chose a reply from the possiblities generated by the bots:

  • qa (qa_bots.py): BERT and ALBERT Wikipedia Question Answering (WikiQA reading comprehension tests)

  • glossary (glossary_bots.py): definitions from glossary yml files in data/faq/glossary-*.yml

  • pattern_bots.py: regex patterns and greeting templates

  • fuzzy_search_bots.py: movie dialog fuzzy matching

  • parul_bots.py: Wikipedia searches using conventional TFIDFs, like a search engine

  • time_bots.py: A time and productivity tracker that parses your git logs and bash history

  • elastic_bots.py: Semantic search with elasticsearch and nboost to find better pages for WikiQA

Here’s how those bots work together:

$ bot
(qaryenv) hobs@Hobsons-MacBook-Air:~/code/chatbot/qary$ bot
# 2019-11-21 12:59:05,854 WARNING:qary.config:107:            <module> Starting logger in nlpia.config...
# 100%|█████████████████████████████████████████████████████████████████████████████████████████████| 64350/64350 [00:00<00:00, 495935.48it/s]
YOU: Hi
BOT: hey there. tired of breathing?
YOU: Hello
BOT: How do you do. Please state your problem.
YOU: What is an ELIZA chatbot?
BOT: joey never told you we went out, did he?
YOU: What is an ELIZA chatbot?
BOT: Does that question interest you ?
YOU: What is a chatbot?
BOT: hello barbie is an internet-connected version of the doll that uses a chatbot provided by the company toytalk, which previously used the chatbot for a range of smartphone-based characters for children.
YOU: Hello
BOT: hello.
YOU: Hello
BOT: How do you do. Please state your problem.
YOU: bye
$

Check out the config file in qary.ini or $ bot -h to change the default bot personalities loaded for your own personalized bot.