Skip to content

Commit

Permalink
fix: parse intent in action condition
Browse files Browse the repository at this point in the history
  • Loading branch information
Cheng Qian committed Feb 18, 2025
1 parent 31df0b7 commit 376c9fd
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 6 deletions.
25 changes: 19 additions & 6 deletions assistant_skill_analysis/utils/skills_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,15 @@ def retrieve_workspace(skill_id, conversation, export_flag=True):
return ws_json.get_result()


def _get_intent_name_from_action_condition(condition: dict):
if "intent" in condition and condition["intent"] is not None:
return condition["intent"]
for v in condition.values():
if isinstance(v, list):
for cond in v:
return _get_intent_name_from_action_condition(cond)


def parse_workspace_json(workspace_json):
"""
Parse workspace json and returns list of utterances, list of intents, and list of entities, and intent to action title mapping
Expand All @@ -202,13 +211,17 @@ def parse_workspace_json(workspace_json):

else:
# intent name to action title mapping for readability
raw_intent_name_to_action_title_mapping = {
action["condition"]["intent"]: action["title"]
for action in workspace_json["workspace"]["actions"]
if action.get("condition", {}).get("intent")
}
raw_intent_name_to_action_title_mapping = {}
for action in workspace_json["workspace"]["actions"]:
possible_intent = _get_intent_name_from_action_condition(action.get("condition", {}))
if possible_intent:
raw_intent_name_to_action_title_mapping[possible_intent] = action["title"]
for intent in workspace_json["workspace"]["intents"]:
action_title = raw_intent_name_to_action_title_mapping[intent["intent"]]
intent_name = intent["intent"]
action_title = raw_intent_name_to_action_title_mapping.get(intent_name)
if action_title is None:
raw_intent_name_to_action_title_mapping[intent_name] = intent_name
action_title = intent_name
for example in intent["examples"]:
utterances.append(example["text"])
intents.append(action_title)
Expand Down
22 changes: 22 additions & 0 deletions tests/utils/test_skills_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,28 @@ def test_extract_workspace_data(self):
len(workspace_pd["intent"].unique()), 9, "Extract workspace failed"
)

def test_parse_intent_from_action_condition(self):

data = {
"intent": "action_10017_intent_27671"
}
self.assertEqual(
skills_util._get_intent_name_from_action_condition(data), "action_10017_intent_27671"
)
data = {
"and": [
{
"intent": "action_15841_intent_20012"
},
{
"expression": "false"
}
]
}
self.assertEqual(
skills_util._get_intent_name_from_action_condition(data), "action_15841_intent_20012"
)

@classmethod
def tearDownClass(cls):
cls.skill_file.close()
Expand Down

0 comments on commit 376c9fd

Please sign in to comment.