Source code for maidchan.chatbot
# -*- coding: utf-8 -*-
import logging
import os
import chatterbot_corpus
from chatterbot import ChatBot
from langdetect import detect
from langdetect.lang_detect_exception import LangDetectException
from maidchan.helper import copy_recursive
[docs]class ChatBotDriver(object):
def __init__(self, storage_adapter):
self.initialize() # Initialize corpus files
self.chatbot = ChatBot(
'Maid-chan',
trainer='chatterbot.trainers.ChatterBotCorpusTrainer',
output_adapter="chatterbot.output.OutputAdapter",
output_format='text',
storage_adapter=storage_adapter
)
self.chatbot.train(
"chatterbot.corpus.indonesia.conversations",
"chatterbot.corpus.indonesia.greetings",
"chatterbot.corpus.english.conversations",
"chatterbot.corpus.english.greetings",
"chatterbot.corpus.maidcorpus" # Custom!
)
logging.info("Chatterbot is initialized!")
def initialize(self):
"""
WARNING: Not exactly a correct way to do it
"""
# Get installed path
path = os.path.dirname(chatterbot_corpus.__file__)
# Put maidcorpus to the destination path
data_path = os.path.join(path, "data", "maidcorpus")
copy_recursive("maidcorpus", data_path)
[docs] def get_response_from_chatbot(self, query, language):
if not language:
return "nyaa <3"
else:
return self.chatbot.get_response(query)
[docs] def get_response(self, query):
try:
probable_language = detect(query)
except LangDetectException:
probable_language = ""
logging.info("Probable language is {}".format(probable_language))
return self.get_response_from_chatbot(query, probable_language)