Ejemplo n.º 1
0
class ChatBotInit:
    def __init__(self):

        #TODO move to outside
        self.model_name = CHATBOT_MODEL
        self.embedding_file = 'embedding_wiki_100d_pt.txt'
        self.ds = Dataset()
        self.messages = self.ds.import_dataset()
        self.questions = self.ds.get_questions(
            self.messages)  #['why?', 'how?', 'when?, ...']
        self.answers = self.ds.get_answers(
            self.messages)  #['yes', 'no', 'maybe', ...]
        self.model = load_model(CHATDATA_DIR + self.model_name)
        self.pc_questions = self.ds.get_page_compute(qea=1)
        self.pc_answers = self.ds.get_page_compute(qea=0)
        self.tokenizer = self.ds.load_tokenizer()
        self.p = Prediction(model=self.model,
                            messages=self.messages,
                            questions=self.questions,
                            answers=self.answers,
                            pc_questions=self.pc_questions,
                            pc_answers=self.pc_answers,
                            tokenizer=self.tokenizer)

    def init_chat_cmd(self, run_once=False):

        m = None
        exit = 'exit'

        print('I am ready to talk.')
        print(' Tip: You can type \"exit\" (lowercase) anytime to leave.')

        while (m != exit):
            #TODO save conversation to file_timestamp
            try:
                m = input(YOU_PREFIX)
                save_content_to_log_file(YOU_PREFIX + str(m))

            except KeyboardInterrupt:
                print(BOT_PREFIX + emergency_message())
                save_content_to_log(sys.exc_info())

            if m != exit:
                r = str(self.p.predict(m))
                print(BOT_PREFIX + r)
                save_content_to_log_file(BOT_PREFIX + str(r))

            if run_once == True:
                m = exit

        print(BOT_PREFIX + 'Bye!')

    def get_conversation(self, message):
        return str(self.p.predict(message))
Ejemplo n.º 2
0
mode = sys.argv[1]
if mode == "train" or mode == "onlyexport":
    data_file = sys.argv[2]
    parameter_file = sys.argv[3]
    examples_file = sys.argv[4]
    with codecs.open(parameter_file, 'r', 'utf-8') as f:
        params = json.load(f)
    with codecs.open(examples_file, 'r', 'utf-8') as f:
        examples = json.load(f)
    t = Training(data_file=data_file, examples=examples)

    for p in params:
        print("Trying:{}".format(p))
        p["only_export"] = (mode == "onlyexport")
        t.train(**p)

if mode == "predict":
    vocab_file = sys.argv[2]
    model_file = sys.argv[3]
    text = sys.argv[4]
    p = Prediction(model_file, vocab_file)
    print(p.predict(text))

if mode == "predict_server":
    data_file = sys.argv[2]
    model_file = sys.argv[3]
    p = Prediction(model_file, data_file)
    db = get_database_from_file(data_file)
    PredictServer(p, db)