def __init__(self, name, **kwargs): self.name = name storage_adapter = kwargs.get('storage_adapter', 'chatterbot.storage.SQLStorageAdapter') logic_adapters = kwargs.get('logic_adapters', [ 'chatterbot.logic.BestMatch' ]) # Check that each adapter is a valid subclass of it's respective parent utils.validate_adapter_class(storage_adapter, StorageAdapter) # Logic adapters used by the chat bot self.logic_adapters = [] self.storage = utils.initialize_class(storage_adapter, **kwargs) primary_search_algorithm = IndexedTextSearch(self, **kwargs) text_search_algorithm = TextSearch(self, **kwargs) self.search_algorithms = { primary_search_algorithm.name: primary_search_algorithm, text_search_algorithm.name: text_search_algorithm } for adapter in logic_adapters: utils.validate_adapter_class(adapter, LogicAdapter) logic_adapter = utils.initialize_class(adapter, self, **kwargs) self.logic_adapters.append(logic_adapter) preprocessors = kwargs.get( 'preprocessors', [ 'chatterbot.preprocessors.clean_whitespace' ] ) self.preprocessors = [] self.postprocessors = [] for preprocessor in preprocessors: self.preprocessors.append(utils.import_module(preprocessor)) postprocessors = kwargs.get( 'postprocessors', [ 'chatterbot.postprocessors.joint_sentence' ] ) for postprocessor in postprocessors: self.postprocessors.append(utils.import_module(postprocessor)) self.logger = kwargs.get('logger', logging.getLogger(__name__)) # Allow the bot to save input it receives so that it can learn self.read_only = kwargs.get('read_only', False)
def __init__(self, name, **kwargs): self.name = name self.logger = kwargs.get( 'logger', log.Logger('chatterbot', costum_format='[%Y-%m-%d %H:%M:%S] chatterbot', debug=kwargs.get('debug', False))) storage_adapter = kwargs.get('storage_adapter', 'chatterbot.storage.SQLStorageAdapter') logic_adapters = kwargs.get('logic_adapters', ['chatterbot.logic.BestMatch']) # Check that each adapter is a valid subclass of it's respective parent utils.validate_adapter_class(storage_adapter, StorageAdapter) # Logic adapters used by the chat bot self.logic_adapters = [] self.storage = utils.initialize_class(storage_adapter, **kwargs) primary_search_algorithm = IndexedTextSearch(self, **kwargs) text_search_algorithm = TextSearch(self, **kwargs) self.search_algorithms = { primary_search_algorithm.name: primary_search_algorithm, text_search_algorithm.name: text_search_algorithm } for adapter in logic_adapters: utils.validate_adapter_class(adapter, LogicAdapter) logic_adapter = utils.initialize_class(adapter, self, **kwargs) self.logic_adapters.append(logic_adapter) preprocessors = kwargs.get( 'preprocessors', ['chatterbot.preprocessors.clean_whitespace']) self.preprocessors = [] for preprocessor in preprocessors: self.preprocessors.append(utils.import_module(preprocessor)) self.trainer = ChatterBotCorpusTrainer(self) self.trainer.train("chatterbot.corpus.custom") log.add_logger('chatterbot', self.logger) self.this_file = os.path.dirname(__file__) self.learn_YAML = os.path.join( ''.join(os.path.split(self.this_file)[0]), 'chatterbot_corpus', 'data', 'custom', 'myown.yml') # Allow the bot to save input it receives so that it can learn self.read_only = kwargs.get('read_only', False)
def add_adapter(self, adapter, **kwargs): """ Appends a logic adapter to the list of logic adapters being used. :param adapter: The logic adapter to be added. :type adapter: LogicAdapter """ utils.validate_adapter_class(adapter, LogicAdapter) adapter = utils.initialize_class(adapter, **kwargs) self.adapters.append(adapter)
def __init__(self, name, **kwargs): self.name = name storage_adapter = kwargs.get('storage_adapter', 'chatterbot.storage.SQLStorageAdapter') logic_adapters = kwargs.get('logic_adapters', [ 'chatterbot.logic.BestMatch' ]) # Check that each adapter is a valid subclass of it's respective parent utils.validate_adapter_class(storage_adapter, StorageAdapter) # Logic adapters used by the chat bot self.logic_adapters = [] self.storage = utils.initialize_class(storage_adapter, **kwargs) primary_search_algorithm = IndexedTextSearch(self, **kwargs) self.search_algorithms = { primary_search_algorithm.name: primary_search_algorithm } for adapter in logic_adapters: utils.validate_adapter_class(adapter, LogicAdapter) logic_adapter = utils.initialize_class(adapter, self, **kwargs) self.logic_adapters.append(logic_adapter) preprocessors = kwargs.get( 'preprocessors', [ 'chatterbot.preprocessors.clean_whitespace' ] ) self.preprocessors = [] for preprocessor in preprocessors: self.preprocessors.append(utils.import_module(preprocessor)) self.logger = kwargs.get('logger', logging.getLogger(__name__)) # Allow the bot to save input it receives so that it can learn self.read_only = kwargs.get('read_only', False)
def _initialize_class(self, adapter): if isinstance(adapter, dict): adapter.pop("logic_adapters", None) adapter_path = adapter.get("import_path") else: adapter_path = adapter # Reload the logic adapters module_parts = adapter_path.split(".") module_path = ".".join(module_parts[:-1]) module = importlib.import_module(module_path) module = importlib.reload(module) return initialize_class(adapter, self.chatbot, **self.chatbot.context)
def __init__(self, name, **kwargs): self.name = name storage_adapter = kwargs.get('storage_adapter', 'chatterbot.storage.SQLStorageAdapter') # These are logic adapters that are required for normal operation system_logic_adapters = kwargs.get( 'system_logic_adapters', ('chatterbot.logic.NoKnowledgeAdapter', )) logic_adapters = kwargs.get('logic_adapters', ['chatterbot.logic.BestMatch']) input_adapter = kwargs.get('input_adapter', 'chatterbot.input.InputAdapter') output_adapter = kwargs.get('output_adapter', 'chatterbot.output.OutputAdapter') # Check that each adapter is a valid subclass of it's respective parent utils.validate_adapter_class(storage_adapter, StorageAdapter) utils.validate_adapter_class(input_adapter, InputAdapter) utils.validate_adapter_class(output_adapter, OutputAdapter) # Logic adapters used by the chat bot self.logic_adapters = [] # Required logic adapters that must always be present self.system_logic_adapters = [] self.storage = utils.initialize_class(storage_adapter, **kwargs) self.input = utils.initialize_class(input_adapter, self, **kwargs) self.output = utils.initialize_class(output_adapter, self, **kwargs) # Add required system logic adapter for system_logic_adapter in system_logic_adapters: utils.validate_adapter_class(system_logic_adapter, LogicAdapter) logic_adapter = utils.initialize_class(system_logic_adapter, self, **kwargs) self.system_logic_adapters.append(logic_adapter) for adapter in logic_adapters: utils.validate_adapter_class(adapter, LogicAdapter) logic_adapter = utils.initialize_class(adapter, self, **kwargs) self.logic_adapters.append(logic_adapter) preprocessors = kwargs.get( 'preprocessors', ['chatterbot.preprocessors.clean_whitespace']) self.preprocessors = [] for preprocessor in preprocessors: self.preprocessors.append(utils.import_module(preprocessor)) self.logger = kwargs.get('logger', logging.getLogger(__name__)) # Allow the bot to save input it receives so that it can learn self.read_only = kwargs.get('read_only', False) if kwargs.get('initialize', True): self.initialize()
def __init__(self, name, **kwargs): self.name = name storage_adapter = kwargs.get('storage_adapter', 'chatterbot.storage.SQLStorageAdapter') # These are logic adapters that are required for normal operation system_logic_adapters = kwargs.get('system_logic_adapters', ( 'chatterbot.logic.NoKnowledgeAdapter', )) logic_adapters = kwargs.get('logic_adapters', [ 'chatterbot.logic.BestMatch' ]) input_adapter = kwargs.get('input_adapter', 'chatterbot.input.InputAdapter') output_adapter = kwargs.get('output_adapter', 'chatterbot.output.OutputAdapter') # Check that each adapter is a valid subclass of it's respective parent utils.validate_adapter_class(storage_adapter, StorageAdapter) utils.validate_adapter_class(input_adapter, InputAdapter) utils.validate_adapter_class(output_adapter, OutputAdapter) # Logic adapters used by the chat bot self.logic_adapters = [] # Required logic adapters that must always be present self.system_logic_adapters = [] self.storage = utils.initialize_class(storage_adapter, **kwargs) self.input = utils.initialize_class(input_adapter, self, **kwargs) self.output = utils.initialize_class(output_adapter, self, **kwargs) # Add required system logic adapter for system_logic_adapter in system_logic_adapters: utils.validate_adapter_class(system_logic_adapter, LogicAdapter) logic_adapter = utils.initialize_class(system_logic_adapter, self, **kwargs) self.system_logic_adapters.append(logic_adapter) for adapter in logic_adapters: utils.validate_adapter_class(adapter, LogicAdapter) logic_adapter = utils.initialize_class(adapter, self, **kwargs) self.logic_adapters.append(logic_adapter) preprocessors = kwargs.get( 'preprocessors', [ 'chatterbot.preprocessors.clean_whitespace' ] ) self.preprocessors = [] for preprocessor in preprocessors: self.preprocessors.append(utils.import_module(preprocessor)) self.logger = kwargs.get('logger', logging.getLogger(__name__)) # Allow the bot to save input it receives so that it can learn self.read_only = kwargs.get('read_only', False) if kwargs.get('initialize', True): self.initialize()