Skip to main content

"An open framework and dataset for building a distributed-agent chatbot based on _Natural Language Processing in Action_."

Project description

Buy Us Tea PyPI version License codecov

qary

The qary package is both a chatbot framework and a working "reference implementation" virtual assistant that actually assists! Most bots manipulate you to make money for their corporate masters. With qary, you can build your bot to protect you and amplify your intelligence and prosocial instincts.

qary was conceived as part of NLP in Action book, is maintained by an active developer community and is supported by San Diego Python User Group (some qary talks here and in docs/) and San Diego Machine Learning Group.

Install

Package install

qary package can be installed from PyPi by running:

pip install qary

Developer install

First retrieve a copy of the source code for qary:

git clone git@gitlab.com:tangibleai/qary
cd qary

Then, install and use the conda python package manager within the Anaconda software package.

conda update -y -n base -c defaults conda
conda create -y -n qaryenv 'python>=3.6.5,<3.9'
conda env update -n qaryenv -f environment.yml
source activate qaryenv
pip install --editable .

Windows Users: docs/README-windows-install.md

Usage

$ qary --help
usage: qary [-h] [--version] [--name STR] [-p] [-s STR] [-v] [-vv] [words [words ...]]

Running qary for just one skill

$ qary -s qa
# ... (logging messages)
YOU: When was Barack Obama born?
# ... (logging messages)
qary: August 4, 1961

qary skills

qary's probabilistic conversation manager chooses a reply from the possiblities generated by the different personalities:

  • pattern (skills/pattern.py): example skill using regex patterns to reply to greetings like "hi"
  • qa (skills/qa.py): BERT and ALBERT Wikipedia Question Answering (WikiQA reading comprehension tests)
  • faq (skills/faq.py): answers to frequently asked questions using data/faq/*.yml
  • glossary (skills/glossary.py): definitions from glossary yml files in data/faq/glossary-*.yml
  • eliza (eliza.py): a python port of the ELIZA therapist bot

Configuring default personalities

By default, qary runs with qa personality. Check out the config file in qary.ini to change the default skills loaded for your own custom skill in the skills directory.

Approach

qary's chatbot framework allows you to combine many approaches to give you state-of-the-art capability to answer questions and carry on a conversation:

  1. search: chatterbot, will
  2. pattern matching and response templates: Alexa, AIML
  3. generative deep learning: robot-bernie, movie-bot
  4. grounding: snips

It's all explained in detail at NLP in Action.

Presentations for San Diego Python User Group are in [docs/](/docs/2019-08-22--San Diego Python User Group -- How to Build a Chatbot.odp) and on the web at http://totalgood.org/midata/talks

Contributing pattern for developers

DM @hobs if you'd like to join us for weekly Zoom collaborative-coding sessions.

  1. Create a fork of the main qary repository on Gitlab.
  2. Make your changes in a branch named something different from master, e.g. create a new branch my-pull-request.
  3. Create a merge request.
  4. Help your fellow contributors out by:
  • Follow the PEP-8 style guide.
  • Try to include a docstring, at least a single line, in any function, method, or class
  • Bonus points for adding a doctest as part of your contribution.
  • If you add a new feature, write some quick docs in the README.
  • Add your name and attribution to the AUTHORS file.
  • Know we are grateful for your contribution! You've made the chatbot world a little better!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qary-0.6.5.tar.gz (5.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qary-0.6.5-py2.py3-none-any.whl (3.9 MB view details)

Uploaded Python 2Python 3

File details

Details for the file qary-0.6.5.tar.gz.

File metadata

  • Download URL: qary-0.6.5.tar.gz
  • Upload date:
  • Size: 5.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.3.3.post20210118 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for qary-0.6.5.tar.gz
Algorithm Hash digest
SHA256 c7229be546a2bccf6108aef5c7bab24726a306af79e29ed1e3dfe796f3eb365f
MD5 3af6cea77d4d61a9a5877c0766f92a0a
BLAKE2b-256 96c1707dfd1d49ee1b50d605d78a4e30a06694e301c177d98f6cf82aebc3b276

See more details on using hashes here.

File details

Details for the file qary-0.6.5-py2.py3-none-any.whl.

File metadata

  • Download URL: qary-0.6.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.3.3.post20210118 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9

File hashes

Hashes for qary-0.6.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e99a2bcb49496905d4960cfc1217bc232999b7c85c9282439f53a5de48501e38
MD5 9341ebfd9b6e5fed3883cb00ae1570b7
BLAKE2b-256 5e0a0b91523c10699a37a1fdee18ba25001b81598687516e6abd95b475191c70

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page