def utt_non_punct_dialog(dialog: Dict): """ Used by: book_skill """ dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) return [{"dialogs": [dialog]}]
def alice_formatter_dialog(dialog: Dict) -> List: # Used by: alice dialog = utils.get_last_n_turns(dialog, bot_last_turns=4) dialog = utils.remove_clarification_turns_from_dialog(dialog) return utils.last_n_human_utt_dialog_formatter(dialog, last_n_utts=2, only_last_sentence=True)
def utt_sentseg_punct_dialog(dialog: Dict): """ Used by: skill_with_attributes_formatter; punct_dialogs_formatter, dummy_skill_formatter, base_response_selector_formatter """ dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="punct_sent") return [{"dialogs": [dialog]}]
def cobot_formatter_dialog(dialog: Dict): # Used by: cobot_dialogact_formatter, cobot_classifiers_formatter dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="segments") utterances_histories = [] for utt in dialog["utterances"]: utterances_histories.append(utt["text"]) return [{"utterances_histories": [utterances_histories]}]
def topic_recommendation_formatter(dialog: Dict): dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) active_skills, topics = [], [] for utt in dialog["utterances"]: active_skills.append(utt.get("active_skill", "")) topics += utt.get("annotations", {}).get("cobot_topics", {}).get("text", []) active_skills = [skill for skill in active_skills if skill] return [{"active_skills": [active_skills], "cobot_topics": [topics]}]
def game_cooperative_skill_formatter(dialog: Dict): dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="punct_sent") dialog["human"]["attributes"] = { "game_cooperative_skill": dialog["human"]["attributes"].get("game_cooperative_skill", {}), "used_links": dialog["human"]["attributes"].get("used_links", {}), } return [{"dialogs": [dialog]}]
def last_utt_and_history_dialog(dialog: Dict) -> List: # Used by: topicalchat retrieval skills dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="punct_sent") sent = dialog["human_utterances"][-1]["annotations"].get( "spelling_preprocessing", dialog["human_utterances"][-1]["text"]) return [{ "sentences": [sent], "utterances_histories": [[utt["text"] for utt in dialog["utterances"]]] }]
def sent_rewrite_formatter_w_o_last_dialog(dialog: Dict) -> List[Dict]: dialog = utils.get_last_n_turns(dialog, utils.LAST_N_TURNS + 1) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="segments") utterances_histories = [] annotation_histories = [] for utt in dialog["utterances"][:-1]: annotation_histories.append(deepcopy(utt["annotations"])) utterances_histories.append(utt["text"]) return [{ "utterances_histories": [utterances_histories], "annotation_histories": [annotation_histories] }]
def convers_evaluator_annotator_formatter(dialog: Dict) -> List[Dict]: dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) conv = dict() hypotheses = dialog["human_utterances"][-1]["hypotheses"] conv["hypotheses"] = [h["text"] for h in hypotheses] conv["currentUtterance"] = dialog["utterances"][-1]["text"] # cobot recommends to take 2 last utt for conversation evaluation service conv["pastUtterances"] = [ uttr["text"] for uttr in dialog["human_utterances"] ][-3:-1] conv["pastResponses"] = [ uttr["text"] for uttr in dialog["bot_utterances"] ][-2:] return [conv]
def convert_formatter_dialog(dialog: Dict) -> List[Dict]: # Used by: convert dialog_20 = utils.get_last_n_turns(dialog, bot_last_turns=20) dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="punct_sent") return [{ "utterances_histories": [[utt["text"] for utt in dialog_20["utterances"]]], "personality": [dialog["bot"]["persona"]], "num_ongoing_utt": [ utils.count_ongoing_skill_utterances(dialog["bot_utterances"], "convert_reddit") ], "human_attributes": [dialog["human"]["attributes"]], }]
def utt_sentrewrite_modified_last_dialog(dialog: Dict): # Used by: book_skill_formatter; misheard_asr_formatter, cobot_qa_formatter all_prev_active_skills = [ uttr.get("active_skill", "") for uttr in dialog["bot_utterances"] ] all_prev_active_skills = [ skill_name for skill_name in all_prev_active_skills if skill_name ] dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="modified_sents") return [{ "dialogs": [dialog], "all_prev_active_skills": [all_prev_active_skills] }]
def hypothesis_histories_list(dialog: Dict): hypotheses = dialog["human_utterances"][-1]["hypotheses"] dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="segments") utterances_histories_batch = [] for hyp in hypotheses: utterances_histories = [] for utt in dialog["utterances"]: utt_text = utt["text"] if isinstance(utt_text, list): utt_text = " ".join(utt_text) utterances_histories.append(utt_text) # hyp["text"] is a string. We need to pass here list of strings. utterances_histories.append(hyp["text"]) utterances_histories_batch.append(utterances_histories) return [{"utterances_with_histories": utterances_histories_batch}]
def eliza_formatter_dialog(dialog: Dict) -> List[Dict]: # Used by: eliza_formatter dialog = utils.get_last_n_turns(dialog) dialog = utils.remove_clarification_turns_from_dialog(dialog) history = [] prev_human_utterance = None for utt in dialog["utterances"]: if utt["user"]["user_type"] == "human": prev_human_utterance = utt["annotations"].get( "spelling_preprocessing", utt["text"]) elif utt["user"]["user_type"] == "bot" and utt[ "active_skill"] == "eliza" and prev_human_utterance is not None: history.append(prev_human_utterance) last_utterance = dialog["human_utterances"][-1]["annotations"].get( "spelling_preprocessing", dialog["human_utterances"][-1]["text"]) return [{ "last_utterance_batch": [last_utterance], "human_utterance_history_batch": [history], }]
def base_skill_selector_formatter_dialog(dialog: Dict) -> List[Dict]: # Used by: base_skill_selector_formatter dialog = utils.get_last_n_turns(dialog, bot_last_turns=5) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="punct_sent") return [{"states_batch": [dialog]}]
def utt_sentrewrite_modified_last_dialog_emotion_skill(dialog: Dict): dialog = utils.get_last_n_turns(dialog, bot_last_turns=2) dialog = utils.remove_clarification_turns_from_dialog(dialog) dialog = utils.replace_with_annotated_utterances(dialog, mode="modified_sents") return [{"dialogs": [dialog]}]