Source code for chatbot.common.chat_conf_manager
from chatbot import models
from django.core import serializers as serial
import json
[docs]class ChatBotConfManager:
    """
    class which handle chabot conf include nlp, stroyboard, entity and service
    (1) on prepare time : set confs for chat bot
    (2) on run time : get confs from db and provide getter for essential values
    """
    def __init__(self, cb_id):
        """
        init global variables
        """
        self.pos_type = ""
        self.entity_key_list = []
        self.word_embed_model = ""
        self.intent_analyze_model = ""
        self.ner_analyze_model = ""
        self.resp_gen_model = ""
        self.ton_gen_model = ""
        self.stroy_board = []     #available story_board lists
        self._restore_conf(cb_id)
    def _restore_conf(self, cb_id):
        """
        restore conf data from db
        :param cb_id:
        :return:
        """
        #TODO:need to get data from cache server and chatbot model DB
        self.pos_type = "mecab"
        self.word_embed_model = "nn00002"
        self.pattern_intent_analyze_model = self.get_model_conf(cb_id, 'PIntent')['nn_id']
        self.intent_analyze_model = self.get_model_conf(cb_id, 'Intent')['nn_id']
        self.ner_analyze_model = self.get_model_conf(cb_id, 'NER')['nn_id']
        self.resp_gen_model = ""
        self.ton_gen_model = ""
        self.stroy_board = []
[docs]    def get_model_conf(self, cb_id, purpose):
        try :
            query_set = models.CB_MODEL_LIST_INFO.objects.filter(cb_id = cb_id, nn_purpose = purpose)
            query_set = serial.serialize("json", query_set)
            return json.loads(query_set)[0]['fields']
        except Exception as e :
            raise Exception ("Model for {0} is required : {1}".format(purpose, e)) 
[docs]    def get_pattern_intent_model(self):
        """
        tag type mecab, twitter, etc
        :param data:
        :return:
        """
        return self.pattern_intent_analyze_model 
[docs]    def get_intent_model(self):
        """
        tag type mecab, twitter, etc
        :param data:
        :return:
        """
        return self.intent_analyze_model 
    def _save_conf(self, cb_id):
        """
        restore conf data from db
        :param cb_id:
        :return:
        """
        #TODO:need to save conf data into db
        pass
    def _set_cache(self, conf_data):
        """
        set conf data on cache server
        :param data_conf:
        :return:
        """
        pass
[docs]    def set_entity_list(self, data):
        """
        set entity list to use
        :param data:
        :return:
        """
        self.entity_key_list.append(data) 
[docs]    def get_entity_list(self):
        """
        get entity list to use
        :param data:
        :return:
        """
        return self.entity_key_list 
[docs]    def set_word_embed_model(self, data):
        """
        set word embed model (w2v.. )
        :param data:
        :return:
        """
        self.word_embed_model = data 
[docs]    def get_word_embed_model(self):
        """
        get word embed model (w2v.. )
        :param data:
        :return:
        """
        return self.word_embed_model 
[docs]    def set_pos_type(self, data):
        """
        tag type mecab, twitter, etc
        :param data:
        :return:
        """
        self.pos_type = data 
[docs]    def get_pos_type(self):
        """
        tag type mecab, twitter, etc
        :param data:
        :return:
        """
        return self.pos_type 
[docs]    def set_ner_model(self, data):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        self.ner_analyze_model = data 
[docs]    def get_ner_model(self):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        return self.ner_analyze_model 
[docs]    def set_resp_model(self, data):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        self.resp_gen_model = data 
[docs]    def get_resp_model(self):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        return self.resp_gen_model 
[docs]    def set_ton_model(self, data):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        self.ton_gen_model = data 
[docs]    def get_ton_model(self):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        return self.ton_gen_model 
[docs]    def set_story_board(self, data):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        self.stroy_board = data 
[docs]    def get_story_board(self):
        """
        net id pretrained on hoyai
        :param data:
        :return:
        """
        return self.stroy_board