def ie_food_state_flow(customer_utterance, state_tracker_obj, entities, lac, db_obj, collection_name): give_up_state = give_up_nlu.whether_give_up(customer_utterance, senta_gru, confirm_interpreter) if give_up_state: state_tracker_obj.update_last_slot_state("stop") return give_up_nlg.response_give_up(), "stop" else: if state_tracker_obj.get_last_slot_state() is not "change": ie_slot_result = food_nlu.ie_all_consult_food( customer_utterance, lac, entities) else: ie_slot_result = entities state_tracker_obj.update_all_state(ie_slot_result) slot_state_dict = state_tracker_obj.judge_each_slot_state( consult_food_slot.keys()) if slot_state_dict["food"] is False and slot_state_dict[ "restaurant"] is False: state_tracker_obj.update_last_slot_state("ask") return food_nlg.ask_food_restaurant(), "ask" else: search_restaurants_results = search_consult_food( state_tracker_obj.get_all_confident_slot_values(), db_obj.get_db_conn()[collection_name]) # print(state_tracker_obj.get_all_confident_slot_values()) # search_restaurants_results = '' print(search_restaurants_results) state_tracker_obj.update_last_slot_state("confirm") return food_nlg.response_restaurant_list( search_restaurants_results, state_tracker_obj.get_all_confident_slot_values() ), "confirm"
def ie_traffic_state_flow(customer_utterance, state_tracker_obj, entities, lac, db_obj, collection_name): give_up_state = give_up_nlu.whether_give_up(customer_utterance, senta_gru, confirm_interpreter) if give_up_state: state_tracker_obj.update_last_slot_state("stop") return give_up_nlg.response_give_up(), "stop" else: if state_tracker_obj.get_last_slot_state() != "change": if state_tracker_obj.get_last_slot_state() == "ask_dept": ie_slot_result = traffic_nlu.ie_all_consult_traffic( customer_utterance, lac, entities, "ask_dept") elif state_tracker_obj.get_last_slot_state() == "ask_dest": ie_slot_result = traffic_nlu.ie_all_consult_traffic( customer_utterance, lac, entities, "ask_dest") else: ie_slot_result = traffic_nlu.ie_all_consult_traffic( customer_utterance, lac, entities) else: ie_slot_result = entities print("update all", ie_slot_result) state_tracker_obj.update_all_state(ie_slot_result) slot_state_dict = state_tracker_obj.judge_each_slot_state( consult_traffic_slot.keys()) # if True not in slot_state_dict.values(): if slot_state_dict["departure"] is False and slot_state_dict[ "destination"] is False and slot_state_dict[ "vehicle"] is False: state_tracker_obj.update_last_slot_state("ask") return traffic_nlg.ask_depart_dest_vehicle(), "ask" elif slot_state_dict["departure"] is False: state_tracker_obj.update_last_slot_state("ask_dept") return traffic_nlg.ask_depart(), "ask_dept" elif slot_state_dict["destination"] is False: state_tracker_obj.update_last_slot_state("ask_dest") return traffic_nlg.ask_dest(), "ask_dest" elif slot_state_dict["vehicle"] is False: state_tracker_obj.update_last_slot_state("ask") return traffic_nlg.ask_vehicle(), "ask" else: pass # ie_time_result = traffic_nlu.ie_departure_time(customer_utterance, lac) # if ie_time_result: # if state_tracker_obj.get_confident_slot_value("departure_time"): # state_tracker_obj.update_slot_value("departure_time", ie_slot_result) # state_tracker_obj.update_confidence("departure_time", 1) # else: # if state_tracker_obj.get_slot_value("departure_time") == ie_time_result: # state_tracker_obj.update_confidence("departure_time", 1) # else: # state_tracker_obj.add_one_state("departure_time", ie_slot_result, 1) # search_traffic_results = db_conn.search_db(collection_name, state_tracker_obj.get_all_confident_slot_values()) search_traffic_results = get_traffic_route_interface( state_tracker_obj.get_all_confident_slot_values()) state_tracker_obj.update_last_slot_state("confirm") return traffic_nlg.response_traffic_list( search_traffic_results, state_tracker_obj.get_all_confident_slot_values()), "confirm"
def ie_scenic_spot_state_flow(customer_utterance, state_tracker_obj, entities, lac, db_obj, collection_name): give_up_state = give_up_nlu.whether_give_up(customer_utterance, senta_gru, confirm_interpreter) if give_up_state: state_tracker_obj.update_last_slot_state("stop") return give_up_nlg.response_give_up(), "stop" else: if state_tracker_obj.get_last_slot_state() != "change": ie_slot_result = scenic_spot_nlu.ie_all_plan_scenic_spot( customer_utterance, lac, entities) else: ie_slot_result = entities print("ie_slot_result:", ie_slot_result) state_tracker_obj.update_all_state(ie_slot_result) slot_state_dict = state_tracker_obj.judge_each_slot_state( plan_scenic_spot_slot.keys()) if slot_state_dict["city"] is False and slot_state_dict[ "days"] is False: state_tracker_obj.update_last_slot_state("ask") return scenic_spot_nlg.ask_city_days(), "ask" elif slot_state_dict["city"] is False: state_tracker_obj.update_last_slot_state("ask") return scenic_spot_nlg.ask_city(), "ask" elif slot_state_dict["days"] is False: state_tracker_obj.update_last_slot_state("ask") return scenic_spot_nlg.ask_days(), "ask" else: if state_tracker_obj.get_confidence("schemes") == 1: state_tracker_obj.update_confidence("schemes", 0) search_scheme_dict_results = db_obj.search_db( collection_name, state_tracker_obj.get_all_confident_slot_values()) if search_scheme_dict_results: print("search_scheme_dict_results:", search_scheme_dict_results[0]['schemes']) state_tracker_obj.add_one_state( "schemes", search_scheme_dict_results[0]["schemes"], 1) print("start to select schemes") state_tracker_obj.update_last_slot_state("confirm_select") print("common last state", state_tracker_obj.get_last_slot_state()) return scenic_spot_nlg.response_scheme_list( search_scheme_dict_results[0]["schemes"], state_tracker_obj.get_all_confident_slot_values() ), "confirm_select" else: state_tracker_obj.update_last_slot_state("confirm_select") return scenic_spot_nlg.response_scheme_list( '', state_tracker_obj.get_all_confident_slot_values() ), "confirm_select"
def ie_ticket_info_state_flow(customer_utterance, state_tracker_obj, entities, lac, db_obj, collection_name): give_up_state = give_up_nlu.whether_give_up(customer_utterance, senta_gru, confirm_interpreter) if give_up_state: state_tracker_obj.update_last_slot_state("stop") return give_up_nlg.response_give_up(), "stop" else: if state_tracker_obj.get_last_slot_state() != "change": if state_tracker_obj.get_last_slot_state() == "ask_dept": ie_slot_result = ticket_nlu.ie_all_plan_ticket(customer_utterance, lac, entities, "ask_dept") elif state_tracker_obj.get_last_slot_state() == "ask_dest": ie_slot_result = ticket_nlu.ie_all_plan_ticket(customer_utterance, lac, entities, "ask_dest") else: ie_slot_result = ticket_nlu.ie_all_plan_ticket(customer_utterance, lac, entities) else: ie_slot_result = entities print("update all", ie_slot_result) state_tracker_obj.update_all_state(ie_slot_result) slot_state_dict = state_tracker_obj.judge_each_slot_state(plan_ticket_slot.keys()) # if True not in slot_state_dict.values(): if slot_state_dict["departure"] is False and slot_state_dict["destination"] is False and slot_state_dict["vehicle"] is False and slot_state_dict["departure_date"] is False: state_tracker_obj.update_last_slot_state("ask") return ticket_nlg.ask_depart_dest_vehicle_date(), "ask" elif slot_state_dict["departure"] is False: state_tracker_obj.update_last_slot_state("ask_dept") return ticket_nlg.ask_depart(), "ask_dept" elif slot_state_dict["destination"] is False: state_tracker_obj.update_last_slot_state("ask_dest") return ticket_nlg.ask_dest(), "ask_dest" elif slot_state_dict["vehicle"] is False: state_tracker_obj.update_last_slot_state("ask") return ticket_nlg.ask_vehicle(), "ask" elif slot_state_dict["departure_date"] is False: state_tracker_obj.update_last_slot_state("ask") return ticket_nlg.ask_departure_date(), "ask" else: # search_ticket_dict_results = db_conn.search_db(collection_name, state_tracker_obj.get_all_confident_slot_values()) # TODO: database # search_ticket_dict_results = { # 1: "线路1", # 2: "线路2", # 3: "线路3", # 4: "线路4" # } # TODO from make_data.ticket.make_ticket_data import search_ticket_interface search_ticket_dict_results = search_ticket_interface(state_tracker_obj.get_all_confident_slot_values(), 5) print(search_ticket_dict_results) state_tracker_obj.add_one_state("solutions", search_ticket_dict_results, 1) print("start to select solution") state_tracker_obj.update_last_slot_state("confirm_select") print("common last state", state_tracker_obj.get_last_slot_state()) return ticket_nlg.response_solution_list(search_ticket_dict_results, state_tracker_obj.get_all_confident_slot_values()), "confirm_select"
def ie_personal_info_state_flow(customer_utterance, state_tracker_obj, lac): give_up_state = give_up_nlu.whether_give_up(customer_utterance, senta_gru, confirm_interpreter) if give_up_state: state_tracker_obj.update_last_slot_state("stop") return give_up_nlg.response_give_up(), "stop" temp_ie_slot_result = ticket_nlu.ie_name_ID(customer_utterance, lac) state_tracker_obj.update_all_state(temp_ie_slot_result) slot_state_dict = state_tracker_obj.judge_each_slot_state(plan_ticket_slot.keys()) if slot_state_dict["name"] is False and slot_state_dict["ID"] is False: state_tracker_obj.update_last_slot_state("perinfo_ask") return ticket_nlg.ask_name_ID(), "perinfo_ask" elif slot_state_dict["name"] is False: state_tracker_obj.update_last_slot_state("perinfo_ask") return ticket_nlg.ask_name(), "perinfo_ask" elif slot_state_dict["ID"] is False: state_tracker_obj.update_last_slot_state("perinfo_ask") return ticket_nlg.ask_ID(), "perinfo_ask" else: state_tracker_obj.update_last_slot_state("confirm_ticket") return ticket_nlg.confirm_ticket_info(state_tracker_obj.get_all_confident_slot_values()), "confirm_ticket"
def ie_weather_state_flow(customer_utterance, state_tracker_obj, entities, city_ls): give_up_state = give_up_nlu.whether_give_up(customer_utterance, senta_gru, confirm_interpreter) if give_up_state: state_tracker_obj.update_last_slot_state("stop") return give_up_nlg.response_give_up(), "stop" else: if state_tracker_obj.get_last_slot_state() is not "change": ie_slot_result = weather_nlu.ie_city_date( customer_utterance, city_ls) else: ie_slot_result = entities state_tracker_obj.update_all_state(ie_slot_result) slot_state_dict = state_tracker_obj.judge_each_slot_state( consult_weather_slot.keys()) if slot_state_dict["city"] is False and slot_state_dict[ "date"] is False: state_tracker_obj.update_last_slot_state("ask") return weather_nlg.ask_city_date(), "ask" elif slot_state_dict["city"] is False: state_tracker_obj.update_last_slot_state("ask") return weather_nlg.ask_city(), "ask" elif slot_state_dict["date"] is False: state_tracker_obj.update_last_slot_state("ask") return weather_nlg.ask_date(), "ask" else: print(state_tracker_obj.get_all_confident_slot_values()) state_tracker_obj.update_last_slot_state("confirm") weather_result = request_weather_interface( state_tracker_obj.get_confident_slot_value("city"), state_tracker_obj.get_confident_slot_value("date")) return weather_nlg.response_weather_result( weather_result, state_tracker_obj.get_all_confident_slot_values() ), "confirm"