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))
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)