{"id":31753806,"url":"https://github.com/servicenow/workflow-discovery","last_synced_at":"2025-10-19T21:14:49.477Z","repository":{"id":149417897,"uuid":"600563776","full_name":"ServiceNow/workflow-discovery","owner":"ServiceNow","description":null,"archived":false,"fork":false,"pushed_at":"2023-02-14T15:25:40.000Z","size":38,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T17:54:39.932Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ServiceNow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"Notice.txt","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-11T21:52:26.000Z","updated_at":"2024-10-06T15:36:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"38f19d35-71d1-48ad-9d75-c083ab3ad773","html_url":"https://github.com/ServiceNow/workflow-discovery","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ServiceNow/workflow-discovery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ServiceNow%2Fworkflow-discovery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ServiceNow%2Fworkflow-discovery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ServiceNow%2Fworkflow-discovery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ServiceNow%2Fworkflow-discovery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ServiceNow","download_url":"https://codeload.github.com/ServiceNow/workflow-discovery/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ServiceNow%2Fworkflow-discovery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279913591,"owners_count":26243091,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-19T02:00:07.647Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-09T17:54:33.249Z","updated_at":"2025-10-19T21:14:49.470Z","avatar_url":"https://github.com/ServiceNow.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workflow Discovery from Dialogues in the Low Data Regime\n\nThis code base the training code and dataset generation for \"Workflow Discovery from Dialogues in the Low Data Regime\"\n\nThe code base relies on the huggingface transformer library.\n\n# Data\nIn this work we use two dataset ABCD (Chen et al., 2021) and MultiWOZ 2.2 (Zang et al., 2020).\n\n### Create folder Structure\nCreate a following folder structure to contain all the data\n```\n\u003cProject Directory\u003e/\n└── data/\n    ├── raw \n    └── processed \n```\n\n```shell\nmkdir -p data/raw\nmkdir -p data/processed\n```\n\n### Copy Action Mapping files\nIn this work we use a mapping for the action names to convert them to a human written names (e.g., \"pull up customer account\" instead of \"pull-up-account\").\nThis code base includes the mapping that were use for all the experiments in our work for both datasets.\n\n```shell\ncp ${Clone_Directory}/resources/abcd_action_mappings.json data/raw\ncp ${Clone_Directory}/resources/multiwoz_action_mappings.json data/raw\n```\n\n\n\n### Download ABCD Dataset \nSince ABCD is not on huggingface datasets, we need to download it manually:\n\n```shell\ncd data/raw\nwget https://github.com/asappresearch/abcd/raw/master/data/abcd_v1.1.json.gz\nwget https://raw.githubusercontent.com/asappresearch/abcd/master/data/guidelines.json\nwget https://raw.githubusercontent.com/asappresearch/abcd/master/data/ontology.json\nwget https://raw.githubusercontent.com/asappresearch/abcd/master/data/utterances.json\ngunzip abcd_v1.1.json.gz\n```\n\n### Create Workflow Discovery Datasets for both ABCD and MultiWOZ\n\n```shell\n# Enable you virtual env\npip install -r requirements.txt\n\npython generated_datasets.py --raw_data_folder ./data/raw --processed_data_folder ./data/processed \n```\n\nOnce the script above runs successfully, you should see the following files in the processed data folder\n```\n\u003cProject Directory\u003e/\n└── data/\n    └── processed \n       ├── train_workflow_discovery_abcd.json \n       ├── dev_workflow_discovery_abcd.json \n       ├── test_workflow_discovery_abcd.json \n       ├── train_AST_abcd.json \n       ├── dev_AST_abcd.json \n       ├── test_AST_abcd.json \n       ├── train_CDS_abcd.json \n       ├── dev_CDS_abcd.json \n       ├── test_CDS_abcd.json \n       ├── train_workflow_discovery_multiwoz.json \n       ├── validation_workflow_discovery_multiwoz.json \n       └── test_workflow_discovery_multiwoz.json \n```\n\n# Training\n\n### Set up you environment:\n```shell\n# Enable you virtual env\npip install -r requirements.txt\n\n# Or use docker\ndocker build .\ndocker run \u003cIMG name\u003e \u003carguments\u003e\n# same args as bellow\n```\n\n### Run\n\n```shell\npython train.py --experiment_name my_wd_experiment \\\n --model_name_or_path t5-small \\\n  --do_train \\\n  --do_eval \\\n  --do_predict \\\n  --num_train_epochs 100 \\\n  --train_file ./data/processed/train_workflow_discovery_abcd.json \\\n  --validation_file ./data/processed/dev_workflow_discovery_abcd.json \\\n  --test_file ./data/processed/dev_workflow_discovery_abcd.json \\\n  --text_column input \\\n  --summary_column target \\\n  --per_device_train_batch_size 16 \\\n  --per_device_eval_batch_size 16 \\\n  --predict_with_generate\n  --output_dir /tmp/results/\n  --save_strategy epoch \\\n  --source_prefix \"Extract workflow : \" \\\n  --max_source_length 1024 \\\n  --max_target_length 256 \\\n  --val_max_target_length 256 \\\n  --learning_rate 5e-5 \\\n  --warmup_steps 500\n```\n\nIn other to fine-tune the model a different task, one only need to change the dataset path and the ``--source_prefix`` parameter as follows:\n### Workflow Discovery Task on ABCD\n```\n--train_file ./data/processed/train_workflow_discovery_abcd.json \\\n--validation_file ./data/processed/dev_workflow_discovery_abcd.json \\\n--test_file ./data/processed/dev_workflow_discovery_abcd.json \\\n--source_prefix 'Extract workflow : ' \n```\n\n### Workflow Discovery Task on MultiWoz \n```\n--train_file ./data/processed/train_workflow_discovery_multiwoz.json \\\n--validation_file ./data/processed/dev_workflow_discovery_multiwoz.json \\\n--test_file ./data/processed/test_workflow_discovery_multiwoz.json \\\n--source_prefix 'Extract workflow : ' \n```\n\n### AST\n```\n--train_file ./data/processed/train_AST_abcd.json \\\n--validation_file ./data/processed/dev_AST_abcd.json \\\n--test_file ./data/processed/test_workflow_AST_abcd.json \\\n--source_prefix 'Predict AST: ' \n--use_ast_metrics\n```\n\n### CDS\n```\n--train_file ./data/processed/train_CDS_abcd.json \\\n--validation_file ./data/processed/dev_CDS_abcd.json \\\n--test_file ./data/processed/test_CDS_abcd.json \\\n--source_prefix 'Predict CDS: ' \n--use_cds_metrics\n```\n\n### Notes: \n- When using BART models, you will need to add `--label_smoothing_factor 0.1`\n- You can use the `--no_metrics` flag to disable metric calculation.\n- You can use the `--use_bert_score` flag to enable bert score during evaluation.\n- To use our conditioning mechanism, use `--text_column input_w_possible_actions` or `--text_column input_w_possible_actions_plus`\n- In the metrics, EM_action_only and CE_action_only refer to EM* and CE* respectively in the paper. \n- We use the huggingface trainer, so this code support any standard command line that you can check with `python train.py -h`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fservicenow%2Fworkflow-discovery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fservicenow%2Fworkflow-discovery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fservicenow%2Fworkflow-discovery/lists"}