| |
| """ |
| ๊ฒฐํฉ(bundle-v3) ํ๋ฅด์๋ ๊ธฐ๋ฐ ์๋ ๋ฐ์ดํฐ์
์์ฑ. |
| |
| CS์ build_cs_dataset.py์ ๋์ผ ๊ตฌ์กฐ์ด๋ ๊ฒฐํฉ ์์ง/ํ๋/๋งคํ์ ์ฌ์ฉํ๋ค. |
| 1. 8๊ฐ ๊ฒฐํฉ ํ๋ฅด์๋ ์ ์ (๋ต๋ณ ๋ถํฌยท์ ํธ ํ๋ ์ํ์คยทexpected_intents) |
| 2. ๊ฐ์ค์น ์ํ๋ง โ ์ค๋ฌธ ๋ต๋ณยทbatch/pattern/event featureยท์์ฑ Intent ๋ผ๋ฒจ ์์ฑ |
| 3. scenarios/bundle-v3/seed_dataset.json ์ ์ฌ |
| |
| ์คํ: |
| cd roadshow-server-v3 |
| python scripts/build_bundle_dataset.py --n 500 --seed 42 |
| """ |
| from __future__ import annotations |
|
|
| import sys |
| from pathlib import Path |
|
|
| sys.path.insert(0, str(Path(__file__).parent.parent)) |
|
|
| from core.engines import config, get_engine |
| from scripts._dataset_common import ( |
| parse_args, build_samples, tree_action_resolver, write_dataset, print_label_stats, |
| ) |
|
|
|
|
| SCENARIO_ID = "bundle-v3" |
| SCENARIO_DIR = Path(__file__).parent.parent / "scenarios" / SCENARIO_ID |
|
|
|
|
| |
| PERSONAS = [ |
| { |
| "id": "B1", "name": "์ ๊ท ๊ฐ์
๊ฒํ (๊ฒฐํฉ ๋ฏธ๋ณด์ )", "weight": 0.13, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"A": 0.5, "B": 0.4, "C": 0.1}, |
| "Q3": {"B": 0.4, "C": 0.5, "D": 0.1}, "Q4": {"B": 0.5, "C": 0.5}, |
| "Q5": {"A": 0.8, "B": 0.2}, "Q6": {"A": 0.4, "B": 0.3, "C": 0.3}, |
| "Q7": {"A": 0.6, "B": 0.4}, "Q8": {"A": 0.7, "C": 0.3}, |
| "Q9": {"A": 0.5, "B": 0.5}, "Q10": {"B": 0.5, "C": 0.5}, |
| "Q11": {"A": 0.4, "B": 0.4, "F": 0.2}, "Q12": {"B": 0.4, "C": 0.6}, |
| }, |
| "action_seqs": [["1-B", "2-B3"], ["1-B", "2-B1"], ["1-B", "2-B4"], ["1-A", "2-A1"]], |
| "expected_intents": ["INT-B1110", "INT-B1210", "INT-B1310", "INT-B1410"], |
| }, |
| { |
| "id": "B2", "name": "๊ฐ์กฑ ๊ฒฐํฉ ํ์ฉ (ํ์ ํ์ฅ)", "weight": 0.14, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"C": 0.5, "D": 0.5}, |
| "Q3": {"C": 0.5, "D": 0.5}, "Q4": {"B": 0.4, "C": 0.6}, |
| "Q5": {"B": 0.4, "C": 0.6}, "Q6": {"A": 0.4, "C": 0.6}, |
| "Q7": {"B": 0.5, "C": 0.5}, "Q8": {"A": 0.4, "B": 0.6}, |
| "Q9": {"B": 0.4, "C": 0.4, "D": 0.2}, "Q10": {"B": 0.5, "C": 0.5}, |
| "Q11": {"B": 0.4, "F": 0.6}, "Q12": {"B": 0.4, "C": 0.6}, |
| }, |
| "action_seqs": [["1-B", "2-B1"], ["1-C", "2-C1"], ["1-C", "2-C3"], ["1-B", "2-B1", "BACK", "1-C", "2-C3"]], |
| "expected_intents": ["INT-B3110", "INT-B1110", "INT-B3310", "INT-B3140"], |
| }, |
| { |
| "id": "B3", "name": "ํ ์ธยทํํ ์ถ๊ตฌ (ํ ์ธ ์ต์ ํ)", "weight": 0.13, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"B": 0.4, "C": 0.4, "D": 0.2}, |
| "Q3": {"B": 0.3, "C": 0.4, "D": 0.3}, "Q4": {"A": 0.5, "B": 0.5}, |
| "Q5": {"A": 0.5, "B": 0.5}, "Q6": {"A": 0.7, "B": 0.3}, |
| "Q7": {"B": 0.5, "C": 0.5}, "Q8": {"A": 0.5, "B": 0.5}, |
| "Q9": {"A": 0.3, "B": 0.4, "C": 0.3}, "Q10": {"A": 0.6, "B": 0.4}, |
| "Q11": {"A": 0.5, "B": 0.5}, "Q12": {"A": 0.2, "B": 0.4, "C": 0.4}, |
| }, |
| "action_seqs": [["1-A", "2-A1"], ["1-A", "2-A2"], ["1-A", "2-A3"], ["1-A", "2-A1", "BACK", "1-A", "2-A2"]], |
| "expected_intents": ["INT-B2210", "INT-B2340", "INT-B2110"], |
| }, |
| { |
| "id": "B4", "name": "์ฌ์ฝ์ ์๋ฐ (์ ์ง/๋ฝ์ธ)", "weight": 0.12, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"C": 0.4, "D": 0.6}, |
| "Q3": {"C": 0.5, "D": 0.5}, "Q4": {"B": 0.5, "C": 0.5}, |
| "Q5": {"B": 0.5, "C": 0.5}, "Q6": {"A": 0.8, "B": 0.2}, |
| "Q7": {"C": 0.8, "B": 0.2}, "Q8": {"C": 0.8, "B": 0.2}, |
| "Q9": {"B": 0.4, "C": 0.4, "D": 0.2}, "Q10": {"B": 0.5, "C": 0.5}, |
| "Q11": {"A": 0.3, "B": 0.3, "F": 0.4}, "Q12": {"B": 0.5, "C": 0.5}, |
| }, |
| "action_seqs": [["1-D", "2-D1"], ["1-D", "2-D3"], ["1-D", "2-D4"], ["1-D", "2-D1", "BACK", "1-D", "2-D3"]], |
| "expected_intents": ["INT-B4110", "INT-B4120", "INT-B4210", "INT-B4320"], |
| }, |
| { |
| "id": "B5", "name": "์ดํ ๊ณ ์ํ (ํด์ง ๊ฒํ )", "weight": 0.12, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"C": 0.4, "D": 0.6}, |
| "Q3": {"B": 0.4, "C": 0.4, "D": 0.2}, "Q4": {"A": 0.6, "B": 0.4}, |
| "Q5": {"A": 0.5, "B": 0.5}, "Q6": {"A": 0.6, "B": 0.4}, |
| "Q7": {"C": 0.6, "B": 0.4}, "Q8": {"C": 0.6, "A": 0.4}, |
| "Q9": {"C": 0.4, "D": 0.4, "B": 0.2}, "Q10": {"A": 0.6, "B": 0.4}, |
| "Q11": {"A": 0.3, "C": 0.3, "D": 0.2, "E": 0.2}, "Q12": {"A": 0.2, "B": 0.4, "C": 0.4}, |
| }, |
| "action_seqs": [["1-E", "2-E2"], ["1-E", "2-E2"], ["1-E", "2-E1"], ["1-E", "2-E2", "BACK", "1-E", "2-E2", "EXIT"]], |
| "expected_intents": ["INT-B5410", "INT-B5420", "INT-B5120"], |
| }, |
| { |
| "id": "B6", "name": "ํ๋ฆฌ๋ฏธ์ ํํ ํ์ฉ VIP", "weight": 0.10, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"C": 0.4, "D": 0.4, "B": 0.2}, |
| "Q3": {"D": 0.8, "C": 0.2}, "Q4": {"B": 0.4, "C": 0.6}, |
| "Q5": {"C": 0.7, "B": 0.3}, "Q6": {"A": 0.7, "C": 0.3}, |
| "Q7": {"C": 0.7, "B": 0.3}, "Q8": {"A": 0.4, "B": 0.6}, |
| "Q9": {"C": 0.4, "D": 0.6}, "Q10": {"C": 0.8, "B": 0.2}, |
| "Q11": {"B": 0.4, "F": 0.6}, "Q12": {"C": 0.7, "B": 0.3}, |
| }, |
| "action_seqs": [["1-A", "2-A2"], ["1-A", "2-A4"], ["1-D", "2-D2"], ["1-A", "2-A2", "BACK", "1-D", "2-D2"]], |
| "expected_intents": ["INT-B1230", "INT-B2310"], |
| }, |
| { |
| "id": "B7", "name": "์ฝํ
์ธ ํค๋น (ํ์๋น์ค ํ์ฅ)", "weight": 0.13, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"A": 0.5, "B": 0.5}, |
| "Q3": {"C": 0.5, "D": 0.5}, "Q4": {"A": 0.5, "B": 0.5}, |
| "Q5": {"A": 0.6, "B": 0.4}, "Q6": {"A": 0.5, "B": 0.5}, |
| "Q7": {"A": 0.4, "B": 0.6}, "Q8": {"A": 0.6, "C": 0.4}, |
| "Q9": {"A": 0.3, "B": 0.4, "C": 0.3}, "Q10": {"B": 0.5, "C": 0.5}, |
| "Q11": {"C": 0.3, "D": 0.3, "F": 0.4}, "Q12": {"C": 0.8, "B": 0.2}, |
| }, |
| "action_seqs": [["1-C", "2-C3"], ["1-C", "2-C1", "BACK", "1-C", "2-C2"], ["1-C", "2-C3", "BACK", "1-C", "2-C4"], ["1-C", "2-C2", "BACK", "1-C", "2-C4"]], |
| "expected_intents": ["INT-B3120", "INT-B3130", "INT-B3140", "INT-B3150"], |
| }, |
| { |
| "id": "B8", "name": "๋น์ฉ ๋ฏผ๊ฐ ์ ๊ฐ ์ถ๊ตฌ", "weight": 0.13, |
| "answer_dist": { |
| "Q1": {"A": 0.5, "B": 0.5}, "Q2": {"B": 0.4, "C": 0.4, "D": 0.2}, |
| "Q3": {"A": 0.4, "B": 0.4, "C": 0.2}, "Q4": {"A": 0.5, "B": 0.5}, |
| "Q5": {"A": 0.6, "B": 0.4}, "Q6": {"A": 0.7, "B": 0.3}, |
| "Q7": {"B": 0.5, "C": 0.5}, "Q8": {"A": 0.4, "C": 0.6}, |
| "Q9": {"A": 0.5, "B": 0.4, "C": 0.1}, "Q10": {"A": 0.5, "B": 0.5}, |
| "Q11": {"A": 0.6, "B": 0.4}, "Q12": {"A": 0.3, "B": 0.5, "C": 0.2}, |
| }, |
| "action_seqs": [["1-A", "2-A1"], ["1-C", "2-C5"], ["1-A", "2-A3"], ["1-E", "2-E2"]], |
| "expected_intents": ["INT-B2210", "INT-B5230", "INT-B2340", "INT-B1210"], |
| }, |
| ] |
|
|
|
|
| def main(): |
| args = parse_args() |
| behaviors = config.get_behaviors(SCENARIO_ID) |
| entity_intents = config.get_behavior_signals(SCENARIO_ID) |
|
|
| |
| def _q9_fixup(a): |
| if a.get("Q5") == "A": |
| a["Q9"] = "A" |
|
|
| rows = build_samples( |
| n=args.n, seed=args.seed, personas=PERSONAS, engine=get_engine(SCENARIO_ID), |
| behavior_labels=False, |
| seq_key="action_seqs", action_resolver=tree_action_resolver(behaviors), |
| entity_intents=entity_intents, cust_prefix="BC", answer_fixup=_q9_fixup, |
| ) |
|
|
| write_dataset(SCENARIO_DIR / "seed_dataset.json", rows, SCENARIO_ID, len(PERSONAS), args.seed) |
| print_label_stats(rows, total=43, top_n=20) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|