in src/dfcx_scrapi/core/intents.py [0:0]
def intents_to_df_cosine_prep(
self,
agent_id: str = None) -> Tuple[pd.DataFrame, Dict[str,str]]:
"""Exports a dataframe and defaultdict of Intents for use with Cosine
Similarity tools.
Args:
agent_id: agent to pull list of intents from
Returns:
A tuple containing two values:
A Pandas Dataframe of Intents and TPs
A Defaultdict(List) that is prepped to feed to the
Cosine similarity tool (offline)
"""
if not agent_id:
agent_id = self.agent_id
intent_dict = defaultdict(list)
intents = self.list_intents(agent_id)
for intent in intents: # pylint: disable=R1702
if intent.display_name == "Default Negative Intent":
pass
else:
if "training_phrases" in intent:
for training_phrase in intent.training_phrases:
text_list = []
if len(training_phrase.parts) > 1:
for item in training_phrase.parts:
text_list.append(item.text)
intent_dict[intent.display_name].append(
"".join(text_list))
else:
intent_dict[intent.display_name].append(
training_phrase.parts[0].text
)
else:
intent_dict[intent.display_name].append("")
dataframe = pd.DataFrame.from_dict(
intent_dict, orient="index").transpose()
dataframe = dataframe.stack().to_frame().reset_index(level=1)
dataframe = dataframe.rename(
columns={"level_1": "display_name",
0: "training_phrase"}).reset_index(drop=True)
dataframe = dataframe.sort_values(["display_name", "training_phrase"])
return dataframe, intent_dict