in src/dfcx_scrapi/core/intents.py [0:0]
def process_advanced_mode_proto(self, obj: types.Intent):
"""Process Intent Proto in advanced mode."""
intent_df = pd.DataFrame(columns=[
"name", "display_name", "description", "priority",
"is_fallback", "labels", "id", "repeat_count",
"training_phrase_idx", "text", "text_idx",
"parameter_id", "entity_type", "is_list", "redact",
])
intent_dict = {
"name": str(obj.name),
"display_name": str(obj.display_name),
"description": str(obj.description),
"priority": int(obj.priority),
"is_fallback": bool(obj.is_fallback),
}
# labels
intent_dict["labels"] = ",".join([
key if key == val else f"{key}:{val}"
for key, val in obj.labels.items()
])
# parameters
params_dict = {
str(param.id): {
"parameter_id": str(param.id),
"entity_type": str(param.entity_type),
"is_list": bool(param.is_list),
"redact": bool(param.redact),
}
for param in obj.parameters
}
# training phrases
if not obj.training_phrases:
intent_df = self.concat_dict_and_df(intent_df, intent_dict)
else:
for tp_count, phrase in enumerate(obj.training_phrases):
intent_dict.update({
"id": str(phrase.id),
"repeat_count": int(phrase.repeat_count),
"training_phrase_idx": tp_count,
})
for part_count, part in enumerate(phrase.parts):
intent_dict = self.parse_phrase_for_parameter_info(
intent_dict, params_dict, part, part_count)
intent_df = self.concat_dict_and_df(intent_df, intent_dict)
return intent_df