def process_admission_general(entities): response = response_generator.query_job_student() print(response) job_or_student = input("") entity_list = helper.change_entity_list(get_entities(job_or_student)) if "info_target" in entity_list: if contains("job", entity_list["info_target"]) or contains( "title", entity_list["info_target"]): print(response_generator.query_job()) new_state = "end" return new_state, entities else: print(response_generator.query_student()) program_choice = input("") entities_list_original = get_entities(program_choice) entity_list_new = helper.change_entity_list(entities_list_original) if "program" in entity_list_new: response = "" for i in range(len(entity_list_new["program"])): if i != 0: response += "\n" program = entity_list_new["program"][i]["value"] admission = helper.load_program_info()[program][2] response += admission print(response) new_state = "end" return new_state, entities return "end", entities print(response_generator.sorry()) return "end", entities
def process_coordinator(entities): print("Which program do you want to know?") response_user = input("") entity_list = get_entities(response_user)["entities"] if "status" in entity_list: if contains("undergraduate", entity_list["status"]): response = "The coordinator for UG programs is Dr. Qiong Luo." print(response) new_state = "end" return new_state, entities if contains("postgraduate", entity_list["status"]): response = "The coordinator for PG programs is Dr. Kai Chen." print(response) new_state = "end" return new_state, entities if "program" in entity_list: program_info_matching = helper.load_program_info() response = "" for i in range(len(entity_list["program"])): if i != 0: response += "\n" program = entity_list["program"][i]["value"] coordinator = program_info_matching[program][4] response += response_generator.provide_coordinator_info( program, coordinator) print(response) new_state = "end" return new_state, entities response = response_generator.provide_general_coordinator_info() print(response) new_state = "end" return new_state, entities
def classify_intent(entities): if contains("get_basic", entities["intent"]): new_state = "basic_query" return new_state, entities if contains("get_admission", entities["intent"]): new_state = "admission_query" return new_state, entities if contains("get_people", entities["intent"]): new_state = "people_query" return new_state, entities if contains("get_contact", entities["intent"]): new_state = "contact_query" return new_state, entities if contains("get_info", entities["intent"]): new_state = "info_query" return new_state, entities if contains("get_enrichment", entities["intent"]): new_state = "enrichment_query" return new_state, entities if contains("ensure_quality", entities["intent"]): new_state = "quality_query" return new_state, entities if contains("get_access", entities["intent"]): new_state = "access_query" return new_state, entities if contains("get_general", entities["intent"]): new_state = "general_query" return new_state, entities new_state = "error" return new_state, entities
def process_admission_general(entities): response = response_generator.query_job_student() print(response) job_or_student = input("") entity_list = get_entities(job_or_student)["entities"] if "info_target" in entity_list: if contains("job", entity_list["info_target"]) or contains("title", entity_list["info_target"]): print(response_generator.query_job()) # TODO: set up a navigation here else: print(response_generator.query_student())
def process_info_query(entities): if "faculty_name" in entities: faculty_attributes, faculty_info = helper.load_faculty_information() if contains("research area", entities["info_target"]): response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] research_area = str(faculty_info[staff_name][5]) response += response_generator.provide_faculty_research_area( staff_name, research_area) print(response) if contains("research interest", entities["info_target"]): response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] research_interest = str(faculty_info[staff_name][10]) response += response_generator.provide_faculty_research_interest( staff_name, research_interest) print(response) if contains("title", entities["info_target"]) or contains( "job", entities["info_target"]): response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] title = str(faculty_info[staff_name][1]) response += response_generator.provide_faculty_title( staff_name, title) print(response) new_state = "end" return new_state, entities if "staff_name" in entities: staff_attributes, staff_info = helper.load_staff_information() if helper.check_job(entities["info_target"]): response = "" for i in range(len(entities["staff_name"])): if i != 0: response += "\n" staff_name = entities["staff_name"][i]["value"] position = str(staff_info[staff_name][4].replace("\n", "")) staff_type = str(staff_info[staff_name][5]) response += response_generator.provide_staff_position( staff_name, position, staff_type) print(response) new_state = "end" return new_state, entities new_state = "error" return new_state, entities
def route_cost_check(phone_num: str, prefix_and_route_costs) -> str: '''cost variable updates as we iteratave over the dicitonary according too matching prefix if it is the lowest offset''' # This returns a dictionary of the prefixes and the cost as (key, value) pairs cost = None # arbitrary large value for beginning the loop old_offset = 2**1000 # loop through prefix keys in dict for prefix in prefix_and_route_costs.keys(): # ! Runtime = O(n), n being the number of keys in prefix dict found = contains(phone_num, prefix) if found: # the difference between the length of the phone number and the prefix offset = len(phone_num) - len(prefix) # the lowest difference is the 'correct' match if offset <= old_offset: # ! Runtime - O(1) cost = prefix_and_route_costs[prefix] # case: prefix not in dict if not cost: return None return cost
def fetch(name): check = helper.contains([root_dir, name]) # IF THE PIPELINE EXISTS if check != False: # LOAD & RETURN PIPELINE DETAILS details = storage.load_details(name) return details # OTHERWISE, RETURN FALSE return check
def process_number(entities): if "info_target" in entities: if contains("rank", entities["info_target"]): response = response_generator.provide_ranking_information() print(response) new_state = "end" return new_state, entities if "job_title" in entities: response = response_generator.provide_faculty_number() print(response) new_state = "end" return new_state, entities
def all(): return helper.contains([root_dir])
def main(): url = input( "Ayyyyo whasss Gucci! It's cha boi, Sir Pickles Von Quackmeister III here to help you with your recipe! Enter a URL to parse!\n" ) while "allrecipes" not in url: url = input("This URL doesn't work (must be AllRecipes). Try again:") run = True while run: # get a transform function = input('''What would you like to do? \n [a] Parse as-is [b] Transform to vegetarian [c] Parse with recipe doubled [d] Parse with recipe halved [e] Transform to Lithuanian [f] Transform to healthy ''') recipe = None if function == 'a' or function == 'A' or contains( function, "as-is") or contains(function, "as is"): recipe = url_to_recipe(url) elif function == 'b' or function == 'B' or contains( function, "vegetarian"): recipe = url_to_transform(url, veg_transform) elif function == 'c' or function == 'C' or contains( function, "double"): recipe = double(url_to_recipe(url)) elif function == 'd' or function == 'D' or contains( function, "half") or contains(function, "halve"): recipe = halve(url_to_recipe(url)) elif function == 'e' or function == 'E' or contains( function, "lithuanian"): recipe = url_to_transform_gen(url, Lithuanian_sub) elif function == 'f' or function == 'F' or contains( function, "health"): recipe = url_to_transform_gen(url, health_sub) elif function == 'q' or function == 'Q' or function == 'quit' or function == "Quit": print("Okay! Bye!") run = False break else: print( "Sorry, I didn\'t understand that. You can enter 'Q' at any time to quit." ) run = True # print information (basic goal 1, to expand on this we could use regex to scan for keywords) step = 0 prevStep = -1 if recipe: print("Ok, let's do that with your recipe, \'%s\'. " % recipe['name']) while recipe: function = input('''What would you like to see? \n [a] Ingredients [b] Steps [c] Tools [d] Methods [e] All of the above [f] I have a question. ''') if function == 'a' or function == 'A' or contains( function, "ingredient"): ingPy.ing_print(recipe['ingredients']) elif function == 'b' or function == 'B' or contains( function, "steps"): oneByOne = None while not oneByOne: oneByOne = input( 'Would you like [1] one step at a time or [2] all steps now?\n' ) if oneByOne == "2" or contains(oneByOne, "all"): print_steps(recipe) elif oneByOne == "1" or contains(oneByOne, "one"): print( "You can tell me to go forward, backward, start over, or go to a particular step at any time." ) print("Your recipe has " + str(len(recipe['steps'])) + ' steps.') print_step(recipe, step) prevStep = step step += 1 else: print('Hmm, I didn\'t catch that.') oneByOne = None elif function == 'c' or function == 'C' or contains( function, "tool"): print_tools(recipe) elif function == 'd' or function == 'D' or contains( function, "method"): print_methods(recipe) elif function == 'e' or function == 'E' or contains( function, "all"): print_all(recipe) elif function == 'f' or function == 'F' or contains( function, "question"): handle_question(recipe, prevStep) elif function == 'q' or function == 'Q' or function == 'quit' or function == "Quit": print("Okay! Bye!") recipe = False run = False break # navigate forward and back a step at a time (goal 2, complete) elif 'forward' in function or 'next' in function: doStep = True if 'step' not in function: check = input( "To be clear, you'd like to see the next step? [1] Yes [2] No \n" ) if check == '2': doStep = False if doStep: if step < len(recipe['steps']) - 1: #step += 1 print_step(recipe, step) prevStep = step step += 1 else: print("There is no next step! Here is the last step: ") prevStep = step step = len(recipe['steps']) - 1 print_step(recipe, step) elif 'backward' in function or 'back' in function or 'previous' in function: doStep = True if 'step' not in function: check = input( "To be clear, you'd like to see the previous step? [1] Yes [2] No \n" ) if check == '2': doStep = False if doStep: if step > 0: prevStep = step step -= 1 print_step(recipe, step) else: print( "There is no previous step! Here is the first step: " ) print_step(recipe, 0) prevStep = step step = 0 elif re.search( r"\bstep\b", function ): # the word "step" with word boundaries at either side found = False for word in function.lower().split(): nth = re.match(r"([0-9]+)", word) if nth: found = True num = nth.group(0) if int(num) > 0 and int(num) < len( recipe['steps']) + 1: print("Here is step " + nth.group(0) + ':') step = int(num) - 1 print_step(recipe, step) else: print("Sorry, that step number is out of bounds.") print("Your recipe has " + str(len(recipe['steps'])) + ' steps.') if not found: print( 'Sorry, which step would you like to see? Please use numerals rather than spelled out words.' ) else: print( "Sorry, I didn\'t understand that. You can enter 'Q' at any time to quit." )
def process_dialog(entities): if "intent" not in entities: response = response_generator.sorry() print(response) return # Respond the user's "plain statement" if contains("explain", entities["intent"]): if "info_target" not in entities: response = response_generator.sorry() print(response) return if contains("school", entities["info_target"]) or contains("degree", entities["info_target"]) or contains("student", entities["info_target"]): response = "DSCT: <DSCT>" + "\n" + "COMP: <COMP>" + "\n" + "COSC: <COSC>" print(response) return if contains("job", entities["info_target"]): print("Job info: <info>") return # Basically, if there is only one entity in the sentence, # we will answer the question directly if contains("get_basic", entities["intent"]): if "enrich_target" in entities: if contains("hackathon", entities["enrich_target"]): response = "Hackathon opportunities:" print(response) return if contains("contest", entities["enrich_target"]): response = "Contest opportunities:" print(response) return if contains("exchange", entities["enrich_target"]): response = "Exchange opportunities:" print(response) return if contains("independent work", entities["enrich_target"]): response = "Independent work:" print(response) return if contains("internship", entities["enrich_target"]): response = "Internship opportunities:" print(response) return if contains("honor courses", entities["enrich_target"]): response = "Honor courses:" print(response) return if contains("urop", entities["enrich_target"]): response = "Research opportunities:" print(response) return if "basic_target" not in entities and "program" not in entities: if contains("cse", entities["department_name"]): response = response_generator.give_basic_info("cse", "cse") print(response) return if "basic_target" not in entities: if contains("dsct", entities["program"]): response = "DSCT: <info>" print(response) return if contains("comp", entities["program"]): response = "COMP: <info>" print(response) return if contains("cosc", entities["program"]): response = "COSC: <info>" print(response) return if contains("vision", entities["basic_target"]) and contains("mission", entities["basic_target"]): response = response_generator.give_basic_info("vision statement", helper.vision_statement) response += "\n" response += response_generator.give_basic_info("mission statement", helper.mission_statement) print(response) return if contains("vision", entities["basic_target"]): response = response_generator.give_basic_info("vision statement", helper.vision_statement) print(response) return if contains("mission", entities["basic_target"]): response = response_generator.give_basic_info("mission statement", helper.mission_statement) print(response) return if contains("objective", entities["basic_target"]): response = response_generator.give_basic_info("objective", helper.objective) print(response) return if contains("news", entities["basic_target"]): response = response_generator.give_basic_info("news", "news") print(response) return # This part, we implement # how the chatbot will react if asked about admission if contains("get_admission", entities["intent"]): if "enrich_target" in entities: if contains("internship", entities["enrich_target"]): response = "Internship opportunities:" print(response) return if contains("honor courses", entities["enrich_target"]): response = "Honor courses:" print(response) return if contains("urop", entities["enrich_target"]): response = "Research opportunities:" print(response) return if "info_target" not in entities and "program" not in entities: response = "Are you a job seeker and a prospective student?" print(response) return if "info_target" in entities and "program" in entities: if contains("undergraduate", entities["program"]) or contains("postgraduate", entities["program"]): response = "Which program are you in?" print(response) return if contains("dsct", entities["program"]): response = "DSCT: <admission info>" print(response) return if contains("comp", entities["program"]): response = "COMP: <admission info>" print(response) return if contains("cosc", entities["program"]): response = "COSC: <admission info>" print(response) return # For the purpose of people information if contains("get_people", entities["intent"]): if "staff_name" in entities: response = "Information of " + entities["staff_name"][0]["value"] + " is ..." print(response) return if "research_area" in entities: response = "(Professor names) is doing " + entities["research_area"][0]["value"] print(response) return if "lab_name" in entities: response = "(Professor names) is doing " + entities["lab_name"][0]["value"] print(response) return if "faculty_name" in entities: response = "Information of " + entities["faculty_name"][0]["value"] + " is ..." print(response) return # For the purpose of getting contact if contains("get_contact", entities["intent"]): if "staff_name" in entities: if "info_target" in entities: if contains("tel", entities["info_target"]): response = "Tel of " + entities["staff_name"][0]["value"] + " is ..." print(response) return if contains("email", entities["info_target"]): response = "Email of " + entities["staff_name"][0]["value"] + " is ,,," print(response) return if contains("title", entities["info_target"]): response = "Title of " + entities["staff_name"][0]["value"] + " is ..." print(response) return response = "Contact of " + entities["staff_name"][0]["value"] + " is ..." print(response) return if "faculty_name" in entities: if "info_target" in entities: if contains("tel", entities["info_target"]): response = "Tel of " + entities["faculty_name"][0]["value"] + " is ..." print(response) return if contains("email", entities["info_target"]): response = "Email of " + entities["faculty_name"][0]["value"] + " is ,,," print(response) return if contains("title", entities["info_target"]): response = "Title of " + entities["faculty_name"][0]["value"] + " is ..." print(response) return response = "Contact of " + entities["faculty_name"][0]["value"] + " is ,,," print(response) return if "department_name" in entities: response = "Contact of cse ..." print(response) return if contains("get_info", entities["intent"]): if "faculty_name" in entities: if contains("research interest", entities["info_target"]): response = "Research interest of " + entities["faculty_name"][0]["value"] + " is ..." print(response) return if contains("research area", entities["info_target"]): response = "Research area of " + entities["faculty_name"][0]["value"] + " is ..." print(response) return if contains("tel", entities["info_target"]): response = "Tel of " + entities["faculty_name"][0]["value"] + " is ..." print(response) return # Check out the possible enrichment in CSE, HKUST if contains("get_enrichment", entities["intent"]): if "enrich_target" in entities: if contains("hackathon", entities["enrich_target"]): response = "Hackathon opportunities:" print(response) return if contains("contest", entities["enrich_target"]): response = "Contest opportunities:" print(response) return if contains("exchange", entities["enrich_target"]): response = "Exchange opportunities:" print(response) return if contains("independent work", entities["enrich_target"]): response = "Independent work:" print(response) return if contains("internship", entities["enrich_target"]): response = "Internship opportunities:" print(response) return if contains("honor courses", entities["enrich_target"]): response = "Honor courses:" print(response) return if contains("urop", entities["enrich_target"]): response = "Research opportunities:" print(response) return print("Available enrichment:") return # Check the quality assurance if contains("ensure_quality", entities["intent"]): if "dependent_independent" in entities: if contains("independently", entities["dependent_independent"]): print("Self assurance network") return else: print("External assurance sources") return print("Assurance methods:") return # Find out the url link of different website if contains("get_access", entities["intent"]): if "site_name" in entities: if contains("fypms", entities["site_name"]): print("The URL of FYPMS is: ") return if "access_target" in entities: if contains("computing facilities", entities["access_target"]): print("There are several possible computation resources:") return # When the user attempts to know the general information about the chatbot if contains("get_general", entities["intent"]): response = response_generator.greeting() print(response) return
def divide_basic_questions(entities): if "info_target" in entities: if contains("rank", entities["info_target"]): response = response_generator.provide_ranking_information() print(response) new_state = "end" return new_state, entities # Enrichment opportunities if "enrich_target" in entities: response = "" enrich_general = helper.load_enrichment_general_info() for i in range(len(entities["enrich_target"])): if i != 0: response += "\n\n" enrichment = entities["enrich_target"][i]["value"] if enrichment == "Exchange Programs": if "exchange_type" in entities: if contains("inbound", entities["exchange_type"]) and contains( "outbound", entities["exchange_type"]): response += response_generator.provide_inbound_exchange( ) response += "\n" response += response_generator.provide_outbound_exchange( ) elif contains("inbound", entities["exchange_type"]): response += response_generator.provide_inbound_exchange( ) elif contains("outbound", entities["exchange_type"]): response += response_generator.provide_outbound_exchange( ) else: response += enrich_general[enrichment][1] print(response) new_state = "end" return new_state, entities # Program information if "program" in entities: program_info = helper.load_program_info() response = "" for i in range(len(entities["program"])): if i != 0: response += "\n\n" program = entities["program"][i]["value"] intro = program_info[program][1] response += intro print(response) new_state = "end" return new_state, entities # Course information if "course" in entities and "honor_course" not in entities: if "info_target" in entities: if contains("prerequisite", entities["info_target"]): response = "" if "course" not in entities: total_course = entities["honor_course"] elif "honor_course" not in entities: total_course = entities["course"] else: total_course = entities["course"] + entities["honor_course"] attributes, course_info = helper.load_course_information() for i in range(len(total_course)): if i != 0: response += "\n" course_code = total_course[i]["value"] prerequisite = course_info[course_code][4] response += response_generator.provide_course_prerequisite( course_code, prerequisite) print(response) new_state = "end" return new_state, entities if contains("exclusion", entities["info_target"]): response = "" if "course" not in entities: total_course = entities["honor_course"] elif "honor_course" not in entities: total_course = entities["course"] else: total_course = entities["course"] + entities["honor_course"] attributes, course_info = helper.load_course_information() for i in range(len(total_course)): if i != 0: response += "\n" course_code = total_course[i]["value"] exclusion = course_info[course_code][3] response += response_generator.provide_course_exclusion( course_code, exclusion) print(response) new_state = "end" return new_state, entities course_attributes, course_info = helper.load_course_information() response = "" for i in range(len(entities["course"])): if i != 0: response += "\n\n" code = entities["course"][i]["value"] response += response_generator.provide_course_info_by_table( code, course_info) print(response) new_state = "end" return new_state, entities # To deal with the problem of unhandled "honor course" problem. if "honor_course" in entities and "course" not in entities: course_attributes, course_info = helper.load_course_information() response = "" for i in range(len(entities["honor_course"])): if i != 0: response += "\n\n" code = entities["honor_course"][i]["value"] response += response_generator.provide_course_info_by_table( code, course_info) print(response) new_state = "end" return new_state, entities # Dealing with the problem of "mixed" type of information. if "honor_course" in entities and "course" in entities: course_attributes, course_info = helper.load_course_information() response = "" course_entities_augmented = entities["honor_course"] + entities[ "course"] for i in range(len(course_entities_augmented)): if i != 0: response += "\n\n" code = course_entities_augmented[i]["value"] response += response_generator.provide_course_info_by_table( code, course_info) print(response) new_state = "end" return new_state, entities # Dealing with the problem of research area if "research_area" in entities: response = "" fullname, attributes = helper.load_research_area_full_name() for i in range(len(entities["research_area"])): if i != 0: response += "\n\n" research_area = entities["research_area"][i]["value"] response += attributes[research_area] print(response) new_state = "end" return new_state, entities # Basic information about the department response = response_generator.provide_basic_dept_info() print(response) new_state = "end" return new_state, entities
def process_contact_query_questions(entities): if "staff_name" in entities: staff_attributes, staff_info = helper.load_staff_information() if "info_target" in entities: # Query about telephone number if contains("tel", entities["info_target"]): response = "" for i in range(len(entities["staff_name"])): if i != 0: response += "\n" staff_name = entities["staff_name"][i]["value"] try: tel = str(int(staff_info[staff_name][2])) except ValueError: tel = "information not available" response += response_generator.provide_staff_telephone_number( staff_name, tel) print(response) # Query about email if contains("email", entities["info_target"]): response = "" for i in range(len(entities["staff_name"])): if i != 0: response += "\n" staff_name = entities["staff_name"][i]["value"] email = str(staff_info[staff_name][1]) if "\\N" in email: email = "information not available" response += response_generator.provide_staff_email( staff_name, email) print(response) # Query about room number if contains("room number", entities["info_target"]): response = "" for i in range(len(entities["staff_name"])): if i != 0: response += "\n" staff_name = entities["staff_name"][i]["value"] try: room_number = str(int(staff_info[staff_name][3])) except ValueError: room_number = "information not available" response += response_generator.provide_staff_room( staff_name, room_number) print(response) # Query about website if contains("links", entities["info_target"]): response = "" for i in range(len(entities["staff_name"])): if i != 0: response += "\n" staff_name = entities["staff_name"][i]["value"] link = str(staff_info[staff_name][6]) if "\\N" in link: link = "information not available" response += response_generator.provide_staff_link( staff_name, link) print(response) new_state = "end" return new_state, entities else: response = "" for i in range(len(entities["staff_name"])): if i != 0: response += "\n" staff_name = entities["staff_name"][i]["value"] # Get email email = str(staff_info[staff_name][1]) if "\\N" in email: email = "information not available" # Get telephone number try: tel = str(int(staff_info[staff_name][2])) except ValueError: tel = "information not available" # Get room number try: room_number = str(int(staff_info[staff_name][3])) except ValueError: room_number = "information not available" link = str(staff_info[staff_name][6]) if "\\N" in link: link = "information not available" response += response_generator.provide_staff_info( staff_name, email, tel, room_number, link) print(response) new_state = "end" return new_state, entities if "faculty_name" in entities: faculty_attributes, faculty_info = helper.load_faculty_information() if "info_target" in entities: # Query about telephone number if contains("tel", entities["info_target"]): response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] tel = faculty_info[staff_name][2] if "\\N" in tel: tel = "information not available" response += response_generator.provide_faculty_tel( staff_name, tel) print(response) # Query about email if contains("email", entities["info_target"]): response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] email = str(faculty_info[staff_name][3]) if "\\N" in email: email = "information not available" response += response_generator.provide_faculty_email( staff_name, email) print(response) # Query about room number # Query about website is given to "get_access" intent if contains("room number", entities["info_target"]): response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] room_number = str(faculty_info[staff_name][4]) if "\\N" in room_number: room_number = "information not available" response += response_generator.provide_staff_room( staff_name, room_number) print(response) if contains("links", entities["info_target"]): response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] link = "http://www.cse.ust.hk/~" link += faculty_info[staff_name][3].replace( "@cse.ust.hk", "") link += "/" response += response_generator.provide_staff_link( staff_name, link) print(response) else: response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" staff_name = entities["faculty_name"][i]["value"] # Get email email = str(faculty_info[staff_name][3]) if "\\N" in email: email = "information not available" # Get telephone number try: tel = str(faculty_info[staff_name][2]) except ValueError: tel = "information not available" # Get room number try: room_number = str(faculty_info[staff_name][4]) except ValueError: room_number = "information not available" link = str(faculty_info[staff_name][7]) if "\\N" in link: link = "information not available" profile_link = str(faculty_info[staff_name][8]) if "\\N" in profile_link: profile_link = "information not available" scholar_link = str(faculty_info[staff_name][9]) if "\\N" in scholar_link: scholar_link = "information not available" response += provide_faculty_info(staff_name, email, tel, room_number, link, profile_link, scholar_link) print(response) new_state = "end" return new_state, entities response = response_generator.provide_dept_contact_info() print(response) new_state = "end" return new_state, entities
def process_people_query_questions(entities): if "staff_name" in entities: staff_attributes, staff_info = helper.load_staff_information() response = "" for i in range(len(entities["staff_name"])): if i != 0: response += "\n" staff_name = entities["staff_name"][i]["value"].replace("\n", "") position = staff_info[staff_name][4].replace("\n", "").lower() staff_type = staff_info[staff_name][5].replace("\n", "") response += response_generator.provide_staff_people_info( staff_name, position, staff_type) print(response) new_state = "end" return new_state, entities if "research_area" in entities: response = "" area_faculty, faculty_area = helper.load_faculty_research_info() for i in range(len(entities["research_area"])): if i != 0: response += "\n" research_area = entities["research_area"][i]["value"] faculty_list = area_faculty[research_area] response += response_generator.provide_faculty_in_research_area( research_area, faculty_list) print(response) new_state = "end" return new_state, entities if "faculty_name" in entities: faculty_attributes, faculty_info = helper.load_faculty_information() response = "" for i in range(len(entities["faculty_name"])): if i != 0: response += "\n" name = entities["faculty_name"][i]["value"] response += faculty_info[name][6] print(response) new_state = "end" return new_state, entities if "info_target" in entities: if contains("head", entities["info_target"]): response = "The head of the department is Prof. Dit-Yan Yeung." print(response) new_state = "end" return new_state, entities if contains("ug coordinator", entities["info_target"]): response = "The coordinator for UG programs is Dr. Qiong Luo." print(response) new_state = "end" return new_state, entities if contains("pg coordinator", entities["info_target"]): response = "The coordinator for PG programs is Dr. Kai Chen." print(response) new_state = "end" return new_state, entities if contains("coordinator", entities["info_target"]): if "program" in entities: response = "" for i in range(len(entities["program"])): if i != 0: response += "\n" program = entities["program"][i]["value"] coordinator = helper.load_program_info()[4] response += response_generator.provide_coordinator_info( program, coordinator) print(response) new_state = "end" return new_state, entities new_state = "query_coordinator" return new_state, entities new_state = "error" return new_state, entities
def divide_admission_questions(entities): if "enrich_target" in entities: if contains("Exchange Programs", entities["enrich_target"]): if "exchange_type" in entities: if contains("inbound", entities["exchange_type"]): response = response_generator.provide_inbound_exchange() print(response) new_state = "end" return new_state, entities else: response = response_generator.provide_outbound_exchange() print(response) new_state = "end" return new_state, entities else: response = response_generator.query_in_out() print(response) in_or_out = input("") entity_list = get_entities(in_or_out)["entities"] if "exchange_type" in entity_list: if contains("outbound", entity_list["exchange_type"]): response = response_generator.provide_outbound_exchange( ) print(response) new_state = "end" return new_state, entities else: response = response_generator.provide_inbound_exchange( ) print(response) new_state = "end" return new_state, entities else: response = response_generator.provide_inbound_outbound_exchange( ) print(response) new_state = "end" return new_state, entities else: enrichment_info = helper.load_enrichment_general_info() response = "" for i in range(len(entities["enrich_target"])): if i != 0: response += "\n\n" name = entities["enrich_target"][i]["value"] response += enrichment_info[name][4] print(response) new_state = "end" return new_state, entities # Process the queries related to specific information if "info_target" in entities: if contains("faculty", entities["info_target"]): response = response_generator.provide_faculty_recruitment() print(response) new_state = "end" return new_state, entities if contains("job", entities["info_target"]): new_state = "admission_job" return new_state, entities # Process the query of enrolling some course if "course" in entities or "honor_course" in entities: attributes, course_info = helper.load_course_information() if "course" not in entities: total_course = entities["honor_course"] elif "honor_course" not in entities: total_course = entities["course"] else: total_course = entities["course"] + entities["honor_course"] response = "" for i in range(len(total_course)): if i != 0: response += "\n" course_code = total_course[i]["value"] prerequisite = course_info[course_code][4] response += response_generator.provide_course_prerequisite( course_code, prerequisite) print(response) new_state = "end" return new_state, entities # Process the admission to specific program if "program" in entities: response = "" for i in range(len(entities["program"])): if i != 0: response += "\n" program = entities["program"][i]["value"] admission = helper.load_program_info()[program][2] response += admission print(response) new_state = "end" return new_state, entities new_state = "admission_general" return new_state, entities
def divide_basic_questions(entities): # TODO: implement the "inbound"/"outbound" differentiation for exchange # Enrichment opportunities if "enrich_target" in entities: response = "" enrich_general = helper.load_enrichment_general_info() for i in range(len(entities["enrich_target"])): if i != 0: response += "\n\n" enrichment = entities["enrich_target"][i]["value"] # TODO if enrichment == "Exchange Programs": if contains("inbound", entities["enrich_target"]) and contains("outbound", entities["enrich_target"]): response += "" response += enrich_general[enrichment][1] print(response) new_state = "end" return new_state, entities # Program information if "program" in entities: program_info = helper.load_program_info() response = "" for i in range(len(entities["program"])): if i != 0: response += "\n\n" program = entities["program"][i]["value"] intro = program_info[program][1] response += intro print(response) new_state = "end" return new_state, entities # Course information if "course" in entities and "honor_course" not in entities: course_attributes, course_info = helper.load_course_information() response = "" for i in range(len(entities["course"])): if i != 0: response += "\n\n" code = entities["course"][i]["value"] response += response_generator.provide_course_info_by_table(code, course_info) print(response) new_state = "end" return new_state, entities # To deal with the problem of unhandled "honor course" problem. if "honor_course" in entities and "course" not in entities: course_attributes, course_info = helper.load_course_information() response = "" for i in range(len(entities["honor_course"])): if i != 0: response += "\n\n" code = entities["honor_course"][i]["value"] response += response_generator.provide_course_info_by_table(code, course_info) print(response) new_state = "end" return new_state, entities # Dealing with the problem of "mixed" type of information. if "honor_course" in entities and "course" in entities: course_attributes, course_info = helper.load_course_information() response = "" course_entities_augmented = entities["honor_course"] + entities["course"] for i in range(len(course_entities_augmented)): if i != 0: response += "\n\n" code = course_entities_augmented[i]["value"] response += response_generator.provide_course_info_by_table(code, course_info) print(response) new_state = "end" return new_state, entities # Dealing with the problem of research area if "research_area" in entities: response = "" fullname, attributes = helper.load_research_area_full_name() for i in range(len(entities["research_area"])): if i != 0: response += "\n\n" research_area = entities["research_area"][i]["value"] response += attributes[research_area] print(response) new_state = "end" return new_state, entities # Basic information about the department if "basic_target" not in entities and "program" not in entities and "course" not in entities: if "department_name" in entities: response = response_generator.provide_basic_dept_info() print(response) new_state = "end" return new_state, entities new_state = "error" return new_state, entities