rtfmbot
rtfmbot copied to clipboard
Because we're all tired of answering questions when people should clearly RTFM.
rtfmbot
Disclaimer: This is way early stage. I don't recommend it for "production" just yet.
Introduction
We're all tired of answering questions when the person asking clearly hasn't bothered to RTFM or put in any effort. Perhaps that person is even you (I know I'm guilty of it, but dang, Slack makes it so easy to ask questions!) sometimes. Save your context switching for things that matter and deploy the RTFMbot to your Slack network. Slack is great for communication, but sometimes it is too good and people ask questions when answers are easily found on the web or in your knowledge base.
Building out on the Slack Python Client and ChatterBot, this little bot also can dynamically pull in answers from the Open Source community via SearchHub -- our community site built on Lucidworks Fusion. It can also be extended to pull in other sources with a little work.
Getting Started
You'll need:
- Python 2.7 (VirtualEnv recommended)
- NLTK Data. See http://www.nltk.org/data.html
Installing
- virtualenv venv
- source venv/bin/activate
- pip install -r requirements.txt
Configuring
- In src/python, copy sample-config.cfg to config.cfg and fill in the appropriate values
Running
- cd src/python
- python run.py
Training
Chatterbot trains itself off of the json files located in src/python/training. Add in training files per https://github.com/gunthercox/ChatterBot/tree/master/chatterbot/corpus
as you see fit and Chatterbot will "learn" off of them, as well as learn as it goes. See example.json for an example.
NOTE: example.json is ignored by the trainer.
TODO:
- Make the adapters configurable
- Fusion/Solr storage adapter implementation
- Do something interesting with new questions
- Better question parsing
- Normalize scoring somehow for the SearchHubLogicAdapter so it the others have a chance.
- Feedback from Slack reactions
Contributing
Pull requests welcome. Note, I don't always check on my personal projects every day, so you can expect some delay.