diff --git a/convlab2/__init__.py b/convlab2/__init__.py
index 87a7442310d0d5bad9dbeae9b1b29041d4490067..0fe7d5bf01a7ac06fff476149427712f8c7c7ee4 100755
--- a/convlab2/__init__.py
+++ b/convlab2/__init__.py
@@ -6,6 +6,7 @@ from convlab2.policy import Policy
 from convlab2.nlg import NLG
 from convlab2.dialog_agent import Agent, PipelineAgent
 from convlab2.dialog_agent import Session, BiSession, DealornotSession
+from convlab2.util.unified_datasets_util import load_dataset, load_database
 
 from os.path import abspath, dirname
 
diff --git a/convlab2/util/unified_datasets_util.py b/convlab2/util/unified_datasets_util.py
new file mode 100644
index 0000000000000000000000000000000000000000..921c6c451042c754450cf93afd7e2a06055026b2
--- /dev/null
+++ b/convlab2/util/unified_datasets_util.py
@@ -0,0 +1,28 @@
+from zipfile import ZipFile
+import json
+import os
+import importlib
+
+def load_dataset(dataset_name):
+    data_dir = os.path.abspath(os.path.join(os.path.abspath(__file__), f'../../../data/unified_datasets/{dataset_name}'))
+    archive = ZipFile(os.path.join(data_dir, 'data.zip'))
+    with archive.open('data/dialogues.json') as f:
+        dialogues = json.loads(f.read())
+    with archive.open('data/ontology.json') as f:
+        ontology = json.loads(f.read())
+    return dialogues, ontology
+
+def load_database(dataset_name):
+    data_dir = os.path.abspath(os.path.join(os.path.abspath(__file__), f'../../../data/unified_datasets/{dataset_name}'))
+    cwd = os.getcwd()
+    os.chdir(data_dir)
+    Database = importlib.import_module('database').Database
+    os.chdir(cwd)
+    database = Database()
+    return database
+
+if __name__ == "__main__":
+    dialogues, ontology = load_dataset('multiwoz21')
+    database = load_database('multiwoz21')
+    res = database.query("train", [['departure', 'cambridge'], ['destination','peterborough'], ['day', 'tuesday'], ['arrive by', '11:15']], topk=3)
+    print(res[0], len(res))
diff --git a/data/unified_datasets/README.md b/data/unified_datasets/README.md
index a22a057e191e4bc2b75c0290e2d9cc8a09c23ffc..615d1b52f68168351cb7541339ebdf9670cb28fb 100644
--- a/data/unified_datasets/README.md
+++ b/data/unified_datasets/README.md
@@ -1,13 +1,19 @@
-# Unified data format with example
+# Unified data format
 
-Under `data/unified_datasets` directory.
+## Overview
+We transform different datasets into a unified format under `data/unified_datasets` directory. To import a unified datasets:
 
-single turn->dialogue with one turn
+```python
+from convlab2 import load_dataset, load_database
+
+dialogues, ontology = load_dataset('multiwoz21')
+database = load_database('multiwoz21')
+```
 
-Each dataset have at least 4 files:
+Each dataset contains at least these files:
 
-- `README.md`: dataset description and the main changes from original data to processed data.
-- `preprocess.py`: python script that preprocess the data. By running `python preprocess.py` we can get the following two files. The structure `preprocess.py`  should be:
+- `README.md`: dataset description and the **main changes** from original data to processed data. Should include the instruction on how to get the original data and transform them into the unified format.
+- `preprocess.py`: python script that transform the original data into the unified format. By running `python preprocess.py` we can get `data.zip` and `dummy_data.json`. The structure `preprocess.py` should be like:
 
 ```python
 def preprocess():
@@ -16,16 +22,29 @@ if __name__ == '__main__':
     preprocess()
 ```
 
-- `ontology.json`: dataset ontology, contains descriptions, state definition, etc.
-- `data.json.zip`: contains `data.json`.
+- `data.zip`: the zipped directory `data` contains:
+  - `ontology.json`: dataset ontology, contains descriptions, state definition, etc.
+  - `dialogues.json`: a list of all dialogues in the dataset.
+  - other necessary files such as databases.
+- `dummy_data.json`: a list of 10 dialogues from `dialogues.json` for illustration.
+
+Datasets that require database interaction should also include the following file:
+- `database.py`: load the database and define the query function:
+```python
+class Database:
+    def __init__(self):
+        """extract data.zip and load the database."""
 
-### README
+    def query(self, domain:str, state:dict, topk:int, **kwargs)->list:
+        """return a list of topk entities (dict containing slot-value pairs) for a given domain based on the dialogue state."""
+```
 
-- Data source: publication, original data download link, etc.
-- Data description:
-  - Annotations: whether have dialogue act, belief state annotation.
-  - Statistics: \# domains, # dialogues, \# utterances, Avg. turns, Avg. tokens (split by space), etc.
-- Main changes from original data to processed data.
+## Unified format
+We first introduce the unified format of `ontology` and `dialogues`. To transform a new dataset into the unified format:
+1. Create `data/unified_datasets/$dataset` folder, where `$dataset` is the name of the dataset.
+2. Write `preprocess.py` to transform the original dataset into the unified format, producing `data.zip` and `dummy_data.json`.
+3. Run `python check.py $dataset` in the `data/unified_datasets` directory to check the validation of processed dataset and get data statistics.
+4. Write `README.md` to describe the data following [How to create dataset README](#how-to-create-dataset-readme).
 
 ### Ontology
 
@@ -43,519 +62,52 @@ if __name__ == '__main__':
 - `intents`: (*dict*) descriptions for intents.
   - `$intent_name`: (*dict*)
     - `description`: (*str*) description for this intent.
-- `binary_dialogue_act`: (*list* of *dict*) special dialogue acts that the value may not present in the utterance, e.g. request the address of a hotel.
-  - `{"intent": (str), "domain": (str), "slot": (str), "value": (str)}`. domain, slot, value may be empty.
-- `state`: (*dict*) belief state of all domains.
+- `binary_dialogue_acts`: (*list* of *dict*) binary dialogue act is a more detailed intent where the value is not extracted from dialogues, e.g. request the address of a hotel.
+  - `{"intent": (str), "domain": (str), "slot": (str), "value": (str)}`. domain, slot, and value may be empty.
+- `state`: (*dict*) dialogue state of all domains.
   - `$domain_name`: (*dict*)
     - `$slot_name: ""`: slot with empty value. Note that the slot set are the subset of the slot set in Part 1 definition.
 
 ### Dialogues
 
-`data.json`: a *list* of dialogues containing:
+`dialogues.json`: a *list* of dialogues (*dict*) containing:
 
-- `dataset`: (*str*) dataset name, must be one of  ['schema', 'multiwoz', 'camrest', 'woz', ...], and be the same as the current dataset.
-- `data_split`: (*str*) in [train, val, test].
-- `dialogue_id`: (*str*) use dataset name as prefix, add count.
-- `domains`: (*list*) domains in this dialogue.
+- `dataset`: (*str*) dataset name, must be the same as the data directory.
+- `data_split`: (*str*) in `["train", "validation", "test", ...]`.
+- `dialogue_id`: (*str*) `"$dataset-$split-$id"`, `id` increases from 0.
+- `domains`: (*list*) involved domains in this dialogue.
+- `goal`: (*dict*)
+  - `description`: (*str*, could be empty) a string describes the user goal.
+  - `inform`: (*dict*, could be empty) same format as dialogue state of involved domains but with only filled slots as constraints.
+  - `request`: (*dict*, could be empty) same format as dialogue state of involved domains but with only empty requested slots.
 - `turns`: (*list* of *dict*)
-  - `speaker`: (*str*) "user" or "system". **User side first, user side final**, "user" and "system" appear alternately?
-  - `utterance`: (*str*) sentence.
+  - `speaker`: (*str*) "user" or "system".
+  - `utterance`: (*str*)
   - `utt_idx`: (*int*) `turns['utt_idx']` gives current turn.
-  - `dialogue_act`: (*dict*)
-    - `categorical`: (*list* of *dict*) for categorical slots.
+  - `dialogue_acts`: (*dict*)
+    - `categorical`: (*list* of *dict*, could be empty) for categorical slots.
       - `{"intent": (str), "domain": (str), "slot": (str), "value": (str)}`. Value sets are defined in the ontology.
-    - `non-categorical` (*list* of *dict*) for non-categorical slots.
-      - `{"intent": (str), "domain": (str), "slot": (str), "value": (str), "start": (int), "end": (int)}`. `start` and `end` are character indexes for the value span.
-    - `binary` (*list* of *dict*) for binary dialogue acts in ontology.
-      - `{"intent": (str), "domain": (str), "slot": (str), "value": (str)}`. Possible dialogue acts are listed in the `ontology['binary_dialogue_act']`.
-  - `state`: (*dict*, optional, user side) full state are shown in `ontology['state']`.
+    - `non-categorical` (*list* of *dict*, could be empty) for non-categorical slots.
+      - `{"intent": (str), "domain": (str), "slot": (str), "value": (str), "start": (int), "end": (int)}`. `start` and `end` are character indexes for the value span in the utterance and can be absent.
+    - `binary` (*list* of *dict*, could be empty) for binary dialogue acts in ontology.
+      - `{"intent": (str), "domain": (str), "slot": (str), "value": (str)}`. Possible dialogue acts are listed in the `ontology['binary_dialogue_acts']`.
+  - `state`: (*dict*, user side, could be empty) dialogue state of involved domains. full state is shown in `ontology['state']`.
     - `$domain_name`: (*dict*) contains all slots in this domain.
       - `$slot_name`: (*str*) value for this slot.
-  - `state_update`: (*dict*, optional, user side) records the difference of states between the current turn and the last turn.
-    - `categorical`: (*list* of *dict*) for categorical slots.
-      - `{"domain": (str), "slot": (str), "value": (str)}`. Value sets are defined in the ontology (**dontcare** may not be included).
-    - `non-categorical` (*list* of *dict*) for non-categorical slots.
-      - `{"domain": (str), "slot": (str), "value": (str), "utt_idx": (int), "start": (int), "end": (int)}`. `utt_idx` is the utterance index of the value. `start` and `end` are character indexes for the value span in the current turn. `turn[utt_idx]['utterance'][start:end]` gives the value.
-
-Other attributes are optional.
+  - `db_results`: (*dict*, system side, could be empty)
+    - `$domain_name`: (*list* of *dict*) topk entities (each entity contains slot-value pairs)
 
-Run `python evaluate.py $dataset` to check the validation of processed dataset.
+Note that multiple descriptions/values are separated by `"|"`.
 
-## Example of Schema Dataset
+Other attributes are optional.
 
-```json
-	{
-    "dataset": "schema",
-    "data_split": "train",
-    "dialogue_id": "schema_535",
-    "original_id": "5_00022",
-    "domains": [
-      "event_2"
-    ],
-    "turns": [
-      {
-        "speaker": "user",
-        "utterance": "I feel like going out to do something in Oakland. I've heard the Raiders Vs Bengals game should be good.",
-        "utt_idx": 0,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "inform_intent",
-              "domain": "event_2",
-              "slot": "intent",
-              "value": "geteventdates"
-            }
-          ],
-          "categorical": [],
-          "non-categorical": [
-            {
-              "intent": "inform",
-              "domain": "event_2",
-              "slot": "event_name",
-              "value": "raiders vs bengals",
-              "start": 65,
-              "end": 83
-            },
-            {
-              "intent": "inform",
-              "domain": "event_2",
-              "slot": "city",
-              "value": "oakland",
-              "start": 41,
-              "end": 48
-            }
-          ]
-        },
-        "state": {
-          "event_2": {
-            "event_type": "",
-            "category": "",
-            "event_name": "raiders vs bengals",
-            "date": "",
-            "time": "",
-            "number_of_tickets": "",
-            "city": "oakland",
-            "venue": "",
-            "venue_address": ""
-          }
-        },
-        "state_update": {
-          "categorical": [],
-          "non-categorical": [
-            {
-              "domain": "event_2",
-              "slot": "city",
-              "value": "oakland",
-              "utt_idx": 0,
-              "start": 41,
-              "end": 48
-            },
-            {
-              "domain": "event_2",
-              "slot": "event_name",
-              "value": "raiders vs bengals",
-              "utt_idx": 0,
-              "start": 65,
-              "end": 83
-            }
-          ]
-        }
-      },
-      {
-        "speaker": "system",
-        "utterance": "The Raiders Vs Bengals game is at Oakland-Alameda County Coliseum today.",
-        "utt_idx": 1,
-        "dialogue_act": {
-          "binary": [],
-          "categorical": [],
-          "non-categorical": [
-            {
-              "intent": "offer",
-              "domain": "event_2",
-              "slot": "date",
-              "value": "today",
-              "start": 66,
-              "end": 71
-            },
-            {
-              "intent": "offer",
-              "domain": "event_2",
-              "slot": "event_name",
-              "value": "raiders vs bengals",
-              "start": 4,
-              "end": 22
-            },
-            {
-              "intent": "offer",
-              "domain": "event_2",
-              "slot": "venue",
-              "value": "oakland-alameda county coliseum",
-              "start": 34,
-              "end": 65
-            }
-          ]
-        }
-      },
-      {
-        "speaker": "user",
-        "utterance": "What time does it start?",
-        "utt_idx": 2,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "request",
-              "domain": "event_2",
-              "slot": "time",
-              "value": ""
-            }
-          ],
-          "categorical": [],
-          "non-categorical": []
-        },
-        "state": {
-          "event_2": {
-            "event_type": "",
-            "category": "",
-            "event_name": "raiders vs bengals",
-            "date": "",
-            "time": "",
-            "number_of_tickets": "",
-            "city": "oakland",
-            "venue": "",
-            "venue_address": ""
-          }
-        },
-        "state_update": {
-          "categorical": [],
-          "non-categorical": []
-        }
-      },
-      {
-        "speaker": "system",
-        "utterance": "It starts at 7 pm.",
-        "utt_idx": 3,
-        "dialogue_act": {
-          "binary": [],
-          "categorical": [],
-          "non-categorical": [
-            {
-              "intent": "inform",
-              "domain": "event_2",
-              "slot": "time",
-              "value": "7 pm",
-              "start": 13,
-              "end": 17
-            }
-          ]
-        }
-      },
-      {
-        "speaker": "user",
-        "utterance": "That sounds fine.",
-        "utt_idx": 4,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "select",
-              "domain": "event_2",
-              "slot": "",
-              "value": ""
-            }
-          ],
-          "categorical": [],
-          "non-categorical": []
-        },
-        "state": {
-          "event_2": {
-            "event_type": "",
-            "category": "",
-            "event_name": "raiders vs bengals",
-            "date": "today",
-            "time": "",
-            "number_of_tickets": "",
-            "city": "oakland",
-            "venue": "",
-            "venue_address": ""
-          }
-        },
-        "state_update": {
-          "categorical": [],
-          "non-categorical": [
-            {
-              "domain": "event_2",
-              "slot": "date",
-              "value": "today",
-              "utt_idx": 1,
-              "start": 66,
-              "end": 71
-            }
-          ]
-        }
-      },
-      {
-        "speaker": "system",
-        "utterance": "Do you want to get tickets for it?",
-        "utt_idx": 5,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "offer_intent",
-              "domain": "event_2",
-              "slot": "intent",
-              "value": "buyeventtickets"
-            }
-          ],
-          "categorical": [],
-          "non-categorical": []
-        }
-      },
-      {
-        "speaker": "user",
-        "utterance": "Yes, can you buy 3 tickets for me?",
-        "utt_idx": 6,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "affirm_intent",
-              "domain": "event_2",
-              "slot": "",
-              "value": ""
-            }
-          ],
-          "categorical": [
-            {
-              "intent": "inform",
-              "domain": "event_2",
-              "slot": "number_of_tickets",
-              "value": "3"
-            }
-          ],
-          "non-categorical": []
-        },
-        "state": {
-          "event_2": {
-            "event_type": "",
-            "category": "",
-            "event_name": "raiders vs bengals",
-            "date": "today",
-            "time": "",
-            "number_of_tickets": "3",
-            "city": "oakland",
-            "venue": "",
-            "venue_address": ""
-          }
-        },
-        "state_update": {
-          "categorical": [
-            {
-              "domain": "event_2",
-              "slot": "number_of_tickets",
-              "value": "3"
-            }
-          ],
-          "non-categorical": []
-        }
-      },
-      {
-        "speaker": "system",
-        "utterance": "Sure. I will go ahead and buy 3 tickets for the Raiders Vs Bengals game in Oakland today. Is that right?",
-        "utt_idx": 7,
-        "dialogue_act": {
-          "binary": [],
-          "categorical": [
-            {
-              "intent": "confirm",
-              "domain": "event_2",
-              "slot": "number_of_tickets",
-              "value": "3"
-            }
-          ],
-          "non-categorical": [
-            {
-              "intent": "confirm",
-              "domain": "event_2",
-              "slot": "event_name",
-              "value": "raiders vs bengals",
-              "start": 48,
-              "end": 66
-            },
-            {
-              "intent": "confirm",
-              "domain": "event_2",
-              "slot": "date",
-              "value": "today",
-              "start": 83,
-              "end": 88
-            },
-            {
-              "intent": "confirm",
-              "domain": "event_2",
-              "slot": "city",
-              "value": "oakland",
-              "start": 75,
-              "end": 82
-            }
-          ]
-        }
-      },
-      {
-        "speaker": "user",
-        "utterance": "Yes, that's good. What's the address?",
-        "utt_idx": 8,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "request",
-              "domain": "event_2",
-              "slot": "venue_address",
-              "value": ""
-            },
-            {
-              "intent": "affirm",
-              "domain": "",
-              "slot": "",
-              "value": ""
-            }
-          ],
-          "categorical": [],
-          "non-categorical": []
-        },
-        "state": {
-          "event_2": {
-            "event_type": "",
-            "category": "",
-            "event_name": "raiders vs bengals",
-            "date": "today",
-            "time": "",
-            "number_of_tickets": "3",
-            "city": "oakland",
-            "venue": "",
-            "venue_address": ""
-          }
-        },
-        "state_update": {
-          "categorical": [],
-          "non-categorical": []
-        }
-      },
-      {
-        "speaker": "system",
-        "utterance": "The game is at 7000 Coliseum Way. I've bought the tickets.",
-        "utt_idx": 9,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "notify_success",
-              "domain": "event_2",
-              "slot": "",
-              "value": ""
-            }
-          ],
-          "categorical": [],
-          "non-categorical": [
-            {
-              "intent": "inform",
-              "domain": "event_2",
-              "slot": "venue_address",
-              "value": "7000 coliseum way",
-              "start": 15,
-              "end": 32
-            }
-          ]
-        }
-      },
-      {
-        "speaker": "user",
-        "utterance": "Thanks! That's all.",
-        "utt_idx": 10,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "thank_you",
-              "domain": "",
-              "slot": "",
-              "value": ""
-            }
-          ],
-          "categorical": [],
-          "non-categorical": []
-        },
-        "state": {
-          "event_2": {
-            "event_type": "",
-            "category": "",
-            "event_name": "raiders vs bengals",
-            "date": "today",
-            "time": "",
-            "number_of_tickets": "3",
-            "city": "oakland",
-            "venue": "",
-            "venue_address": ""
-          }
-        },
-        "state_update": {
-          "categorical": [],
-          "non-categorical": []
-        }
-      },
-      {
-        "speaker": "system",
-        "utterance": "Need help with anything else?",
-        "utt_idx": 11,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "req_more",
-              "domain": "",
-              "slot": "",
-              "value": ""
-            }
-          ],
-          "categorical": [],
-          "non-categorical": []
-        }
-      },
-      {
-        "speaker": "user",
-        "utterance": "No, thank you.",
-        "utt_idx": 12,
-        "dialogue_act": {
-          "binary": [
-            {
-              "intent": "negate",
-              "domain": "",
-              "slot": "",
-              "value": ""
-            },
-            {
-              "intent": "thank_you",
-              "domain": "",
-              "slot": "",
-              "value": ""
-            }
-          ],
-          "categorical": [],
-          "non-categorical": []
-        },
-        "state": {
-          "event_2": {
-            "event_type": "",
-            "category": "",
-            "event_name": "raiders vs bengals",
-            "date": "today",
-            "time": "",
-            "number_of_tickets": "3",
-            "city": "oakland",
-            "venue": "",
-            "venue_address": ""
-          }
-        },
-        "state_update": {
-          "categorical": [],
-          "non-categorical": []
-        }
-      }
-    ]
-  }
-```
+> **Necessary**: Run `python check.py $dataset` in the `data/unified_datasets` directory to check the validation of processed dataset and get data statistics in `data/unified_datasets/$dataset/stat.txt`.
 
+### How to create dataset README
+Each dataset has a README.md to describe the original and transformed data. Please follow the `README_TEMPLATE.md` and make sure that you:
+- include your name and email in **Who transforms the dataset**.
+- include the following additional information in the **Dataset Summary** section:
+  - How to get the transformed data from original data.
+  - Main changes of the transformation.
+  - Annotations: whether has user goal, dialogue acts, state, db results, etc.
+- include the data statistics given by `check.py` (in `data/unified_datasets/$dataset/stat.txt`) in the **Data Splits** section.
diff --git a/data/unified_datasets/README_TEMPLATE.md b/data/unified_datasets/README_TEMPLATE.md
new file mode 100644
index 0000000000000000000000000000000000000000..5c326a17234f0902ac1b7c784580a95d37b8cf11
--- /dev/null
+++ b/data/unified_datasets/README_TEMPLATE.md
@@ -0,0 +1,39 @@
+# Dataset Card for [dataset name]
+
+- **Repository:** data link
+- **Paper:** paper link
+- **Leaderboard:** leaderboard link if any else None
+- **Who transforms the dataset:** Name(email, e.g. xxx at gmail dot com)
+
+### Dataset Summary
+
+Describe the dataset.
+
+- **How to get the transformed data from original data:** 
+  - TODO
+- **Main changes of the transformation:**
+  - TODO
+- **Annotations:**
+  - TODO
+
+### Supported Tasks and Leaderboards
+
+TODO
+
+### Languages
+
+TODO
+
+### Data Splits
+
+Please copy the statistics in `stat.txt` generated by `check.py` and paste here.
+
+### Citation
+
+```
+BibTex citation of the original dataset
+```
+
+### Licensing Information
+
+TODO
\ No newline at end of file
diff --git a/data/unified_datasets/check.py b/data/unified_datasets/check.py
new file mode 100644
index 0000000000000000000000000000000000000000..47e75e602b5009e0a6b9bbf53b7a1291491522a6
--- /dev/null
+++ b/data/unified_datasets/check.py
@@ -0,0 +1,364 @@
+import json
+import os
+from copy import deepcopy
+from zipfile import ZipFile
+import importlib
+from tabulate import tabulate
+
+special_values = ['', 'dontcare', None, '?']
+
+
+def check_ontology(ontology):
+    """
+    ontology: {
+        "domains": {
+            domain name: {
+                "description": domain description,
+                "slots": {
+                    slot name: {
+                        "description": slot description,
+                        "is_categorical": is_categorical,
+                        "possible_values": [possible_values...], not empty if is_categorical
+                    }
+                }
+            }
+        },
+        "intents": {
+            intent name: {
+                "description": intent description
+            }
+        },
+        "binary_dialogue_acts": {
+            [
+                {
+                    "intent": intent name,
+                    "domain": domain name,
+                    "slot": slot name,
+                    "value": some value
+                }
+            ]
+        }
+        "state": {
+            domain name: {
+                slot name: ""
+            }
+        }
+    }
+    """
+    global special_values
+    
+    # record issues in ontology
+    descriptions = {
+        # if each domain has a description
+        "domains": True,
+        "slots": True,
+        "intents": True,
+    }
+    for domain_name, domain in ontology['domains'].items():
+        if not domain['description']:
+            descriptions["domains"] = False
+        for slot_name, slot in domain["slots"].items():
+            if not slot["description"]:
+                descriptions["slots"] = False
+            if slot["is_categorical"]:
+                assert slot["possible_values"]
+                slot['possible_values'] = list(map(str.lower, slot['possible_values']))
+                for value in special_values:
+                    assert value not in slot['possible_values'], f'ONTOLOGY\tspecial value `{value}` should not present in possible values'
+
+    for intent_name, intent in ontology["intents"].items():
+        if not intent["description"]:
+            descriptions["intents"] = False
+
+    binary_dialogue_acts = set()
+    for bda in ontology['binary_dialogue_acts']:
+        assert bda['intent'] is None or bda["intent"] in ontology['intents'], f'ONTOLOGY\tintent undefined intent in binary dialog act: {bda}'
+        binary_dialogue_acts.add(tuple(bda.values()))
+    ontology['bda_set'] = binary_dialogue_acts
+
+    assert 'state' in ontology, 'ONTOLOGY\tno state'
+    for domain_name, domain in ontology['state'].items():
+        assert domain_name in ontology['domains']
+        for slot_name, value in domain.items():
+            assert slot_name in ontology['domains'][domain_name]['slots']
+            assert value == "", "should set value in state to \"\""
+
+    # print('description existence:', descriptions, '\n')
+    for description, value in descriptions.items():
+        if not value:
+            print(f'description of {description} is incomplete')
+    return ontology
+
+
+def check_dialogues(name, dialogues, ontology):
+    global special_values
+
+    all_id = set()
+    splits = ['train', 'validation', 'test']
+    match_rate = {
+        'categorical': {'dialogue act': [0, 0], 'goal': [0, 0], 'state': [0, 0]},
+        'noncategorical': {'dialogue act': [0, 0]}
+    }
+    stat_keys = ['dialogues', 'utterances', 'tokens', 'domains', 
+                 'cat slot match(state)', 'cat slot match(goal)', 'cat slot match(dialogue act)',
+                 'non-cat slot span(dialogue act)']
+    stat = {
+        split: {
+            key: 0 if 'slot' not in key else [0, 0] for key in stat_keys
+        } for split in splits
+    }
+
+    # present for both non-categorical or categorical
+
+    for dialogue in dialogues:
+        dialogue_id = dialogue['dialogue_id']
+        assert isinstance(dialogue_id, str), f'{dialogue_id}\t`dialogue_id` is expected to be str type'
+
+        assert dialogue['dataset'] == name, f'{dialogue_id}\tinconsistent dataset name: {dialogue["dataset"]}'
+
+        split = dialogue['data_split']
+        assert isinstance(split, str), f'{dialogue_id}\t`split` is expected to be str type but got {type(split)}'
+        if split not in splits:
+            splits.append(split)
+            stat[split] = {key: 0 if 'slot' not in key else [0, 0] for key in stat_keys}
+        
+        cur_stat = stat[split]
+        cur_stat['dialogues'] += 1
+        try:
+            prefix, id_split, num = dialogue_id.split('-')
+            assert prefix == name and id_split == split
+            int(num)    # try converting to int
+        except:
+            raise Exception(f'{dialogue_id}\twrong dialogue id format: {dialogue_id}')
+        assert dialogue_id not in all_id, f'multiple dialogue id: {dialogue_id}'
+        all_id.add(dialogue_id)
+
+        cur_domains = dialogue['domains']
+        assert isinstance(cur_domains, list), f'{dialogue_id}\t`domains` is expected to be list type, '
+        assert len(set(cur_domains)) == len(cur_domains), f'{dialogue_id}\trepeated domains'
+        cur_stat['domains'] += len(cur_domains)
+        cur_domains = set(cur_domains)
+        for domain_name in cur_domains:
+            assert domain_name in ontology['domains'], f'{dialogue_id}\tundefined current domain: {domain_name}'
+
+        # check domain-slot-value
+        # prefix: error prefix
+        def check_dsv(domain_name, slot_name, value, anno_type, categorical=None, prefix=f'{dialogue_id}'):
+            if anno_type != 'state':
+                assert domain_name in cur_domains, f'{prefix}\t{domain_name} not presented in current domains'
+            domain = ontology['domains'][domain_name]
+            assert slot_name in domain['slots'], f'{prefix}\t{slot_name} not presented in domain {domain_name} in ontology'
+            slot = domain['slots'][slot_name]
+            if categorical is None:
+                # for state and goal
+                categorical = slot['is_categorical']
+            else:
+                # for dialog act
+                assert categorical == slot['is_categorical'], \
+                    f'{prefix}\t{domain_name}-{slot_name} is_categorical should be {slot["is_categorical"]} as in ontology'
+            if categorical and len(value) > 0:
+                for v in value.split('|'):
+                    stat[split][f'cat slot match({anno_type})'][1] += 1
+                    if v in special_values or v.lower() in [s.lower() for s in slot['possible_values']]:
+                        stat[split][f'cat slot match({anno_type})'][0] += 1
+                    # else:
+                    #     print(f'{prefix}\t`{v}` not presented in possible values of {domain_name}-{slot_name}: {slot["possible_values"]}')
+
+        def check_da(da, categorical):
+            assert da['intent'] in ontology['intents'], f'{dialogue_id}:{turn_id}:da\tundefined intent {da["intent"]}'
+            check_dsv(da['domain'], da['slot'], da['value'], 'dialogue act', categorical, f'{dialogue_id}:{turn_id}:da')
+        
+        goal = dialogue['goal']
+        assert isinstance(goal['description'], str), f'{dialogue_id}\tgoal description {goal["description"]} should be string'
+        assert isinstance(goal['inform'], dict), f'{dialogue_id}\tgoal inform {goal["inform"]} should be dict'
+        assert isinstance(goal['request'], dict), f'{dialogue_id}\tgoal request {goal["request"]} should be dict'
+        for domain_name, domain in goal['inform'].items():
+            for slot_name, value in domain.items():
+                check_dsv(domain_name, slot_name, value, 'goal', prefix=f'{dialogue_id}:goal:inform')
+                assert value != "", f'{dialogue_id}\tshould set non-empty value in goal inform {goal["inform"]}'
+        for domain_name, domain in goal['request'].items():
+            for slot_name, value in domain.items():
+                check_dsv(domain_name, slot_name, value, 'goal', prefix=f'{dialogue_id}:goal:request')
+                assert value == "", f'{dialogue_id}\tshould set empty value in goal request {goal["request"]}'
+
+        turns = dialogue['turns']
+        cur_stat['utterances'] += len(turns)
+        assert turns, f'{dialogue_id}\tempty turn'
+
+        for turn_id, turn in enumerate(turns):
+            assert turn['speaker'] in ['user', 'system'], f'{dialogue_id}:{turn_id}\tunknown speaker value: {turn["speaker"]}'
+            assert turn_id == turn['utt_idx'], f'{dialogue_id}:{turn_id}\twrong utt_idx'
+            if turn_id > 0:
+                assert turns[turn_id - 1]['speaker'] != turn['speaker'], f'{dialogue_id}:{turn_id}\tuser and system should speak alternatively'
+
+            utterance = turn['utterance']
+            cur_stat['tokens'] += len(utterance.strip().split(' '))
+
+            dialogue_acts = turn['dialogue_acts']
+            assert isinstance(dialogue_acts['categorical'], list), f'{dialogue_id}:{turn_id}\tcategorical dialogue_acts should be a list'
+            assert isinstance(dialogue_acts['non-categorical'], list), f'{dialogue_id}:{turn_id}\tnon-categorical dialogue_acts should be a list'
+            assert isinstance(dialogue_acts['binary'], list), f'{dialogue_id}:{turn_id}\tbinary dialogue_acts should be a list'
+            for da in dialogue_acts['categorical']:
+                check_da(da, True)
+            for da in dialogue_acts['non-categorical']:
+                check_da(da, False)
+                # values only match after .strip() in some case, it's the issue of pre-processing
+                if da['value'] not in special_values:
+                    stat[split][f'non-cat slot span(dialogue act)'][1] += 1
+                    assert ('start' in da) == ('end' in da), \
+                        f'{dialogue_id}:{turn_id}\tstart and end field in da should both present or neither not present'
+                    if 'start' in da:
+                        value = utterance[da['start']:da['end']]
+                        assert da['value'] == value, f'{dialogue_id}:{turn_id}\tspan({value}) and value{da["value"]} not match' 
+                        stat[split][f'non-cat slot span(dialogue act)'][0] += 1
+
+            for da in dialogue_acts['binary']:
+                assert tuple(da.values()) in ontology['bda_set'], f'{dialogue_id}:{turn_id}\tbinary dialog act {da} not present in ontology'
+                # do not check_dsv for binary dialogue acts
+
+            if turn['speaker'] == 'user':
+                assert 'db_results' not in turn
+                assert 'state' in turn, f"{dialogue_id}:{turn_id}\tstate must present in user's role, but could be empty"
+                state = turn['state']
+                assert isinstance(state, dict), f'{dialogue_id}:{turn_id}\tstate should be a dict'
+                for domain_name, domain in state.items():
+                    for slot_name, value in domain.items():
+                        check_dsv(domain_name, slot_name, value, 'state', prefix=f'{dialogue_id}:{turn_id}:state')
+
+            else:
+                assert 'state' not in turn, f"{dialogue_id}:{turn_id}\tstate cannot present in system's role"
+                assert 'db_results' in turn
+                db_results = turn['db_results']
+                assert isinstance(db_results, dict), f'{dialogue_id}:{turn_id}\db_results should be a dict'
+                for domain_name, results in db_results.items():
+                    assert domain_name in cur_domains, f'{dialogue_id}:{turn_id}:db_results\t{domain_name} not presented in current domains'
+                    assert isinstance(results, list)
+
+    for _, value_match in match_rate.items():
+        for anno_type, (match, total) in value_match.items():
+            if total == 0:
+                value_match[anno_type] = '-'
+            else:
+                value_match[anno_type] = '{:.3f}'.format(match*100/total)
+
+    all_stat = {key: 0 if 'slot' not in key else [0, 0] for key in stat_keys}
+    for key in stat_keys:
+        if 'slot' not in key:
+            all_stat[key] = sum(stat[split][key] for split in splits)
+        else:
+            all_stat[key] = []
+            all_stat[key].append(sum(stat[split][key][0] for split in splits))
+            all_stat[key].append(sum(stat[split][key][1] for split in splits))
+    stat['all'] = all_stat
+
+    table = []
+    for split in splits + ['all']:
+        cur_stat = stat[split]
+        if cur_stat['dialogues']:
+            cur_stat['avg_utt'] = round(cur_stat['utterances'] / cur_stat['dialogues'], 2)
+            cur_stat['avg_tokens'] = round(cur_stat['tokens'] / cur_stat['utterances'], 2)
+            cur_stat['avg_domains'] = round(cur_stat.pop('domains') / cur_stat['dialogues'], 2)
+            for key in stat_keys:
+                if 'slot' in key:
+                    if cur_stat[key][1] == 0:
+                        cur_stat[key] = '-'
+                    else:
+                        cur_stat[key] = round(cur_stat[key][0] * 100 / cur_stat[key][1], 2)
+            table.append({
+                'split':split, 
+                'dialogues': cur_stat['dialogues'], 'utterances': cur_stat['utterances'],
+                'avg_utt': cur_stat['avg_utt'], 'avg_tokens': cur_stat['avg_tokens'], 'avg_domains': cur_stat['avg_domains'],
+                'cat slot match(state)': cur_stat['cat slot match(state)'], 
+                'cat slot match(goal)': cur_stat['cat slot match(goal)'],
+                'cat slot match(dialogue act)': cur_stat['cat slot match(dialogue act)'],
+                'non-cat slot span(dialogue act)': cur_stat['non-cat slot span(dialogue act)']
+            })
+        else:
+            del stat[split]
+    
+    return tabulate(table, headers='keys', tablefmt='github')
+
+
+if __name__ == '__main__':
+    from argparse import ArgumentParser
+
+    parser = ArgumentParser(description="test pre-processed datasets")
+    parser.add_argument('datasets', metavar='dataset_name', nargs='*', help='dataset names to be tested')
+    parser.add_argument('--all', action='store_true', help='test all datasets')
+    parser.add_argument('--no-int', action='store_true', help='not interrupted by exception')
+    parser.add_argument('--preprocess', '-p', action='store_true', help='run preprocess automatically')
+    args = parser.parse_args()
+
+    if args.all:
+        datasets = list(filter(os.path.isdir, os.listdir()))
+    else:
+        datasets = args.datasets
+    if not datasets:
+        print('no dataset specified')
+        parser.print_help()
+        exit(1)
+
+    print('datasets to be tested:', datasets)
+
+    fail = []
+
+    for name in datasets:
+        try:
+            if not os.path.isdir(name):
+                raise FileNotFoundError(f'dataset {name} not found')
+
+            print(f'checking {name}')
+            preprocess_file = os.path.join(f'{name}', 'preprocess.py')
+            if not os.path.exists(preprocess_file):
+                raise FileNotFoundError(f'no {preprocess_file}')
+
+            if args.preprocess:
+                print('pre-processing')
+
+                os.chdir(name)
+                preprocess = importlib.import_module(f'{name}.preprocess')
+                preprocess.preprocess()
+                os.chdir('..')
+
+            data_file = f'{name}/data.zip'
+            if not os.path.exists(data_file):
+                raise FileNotFoundError(f'cannot find {data_file}')
+
+            with ZipFile(data_file) as zipfile:
+                print('check ontology...', end='')
+                with zipfile.open('data/ontology.json', 'r') as f:
+                    ontology = json.load(f)
+                    check_ontology(ontology)
+                print('pass')
+
+                print('check dummy data...', end='')
+                dummy_data = json.load(open(f'{name}/dummy_data.json'))
+                check_dialogues(name, dummy_data, ontology)
+                print('pass')
+                
+                print('check dialogues...', end='')
+                with zipfile.open('data/dialogues.json', 'r') as f:
+                    dialogues = json.load(f)
+                    stat = check_dialogues(name, dialogues, ontology)
+                    print('pass')
+                
+                print(f'Please copy and paste the statistics in {name}/stat.txt to dataset README.md->Data Splits section\n')
+                with open(f'{name}/stat.txt', 'w') as f:
+                    print(stat, file=f)
+                    print('', file=f)
+                    all_domains = list(ontology["domains"].keys())
+                    print(f'{len(all_domains)} domains: {all_domains}', file=f)
+                    print('- **cat slot match**: how many values of categorical slots are in the possible values of ontology in percentage.', file=f)
+                    print('- **non-cat slot span**: how many values of non-categorical slots have span annotation in percentage.', file=f)
+
+        except Exception as e:
+            if args.no_int:
+                print(e)
+                fail.append(name)
+            else:
+                raise e
+
+    if not fail:
+        print('all datasets passed test')
+    else:
+        print('failed dataset(s):', fail)
diff --git a/data/unified_datasets/evaluate.py b/data/unified_datasets/evaluate.py
deleted file mode 100644
index 1c68f384db76c34a6e05a4e3993af227e2e3be3c..0000000000000000000000000000000000000000
--- a/data/unified_datasets/evaluate.py
+++ /dev/null
@@ -1,334 +0,0 @@
-import json
-import os
-from copy import deepcopy
-
-special_values = ['dontcare', '']
-
-
-def check_ontology(name):
-    """
-    ontology: {
-        "domains": {
-            domain name: {
-                "description": domain description,
-                "slots": {
-                    slot name: {
-                        "description": slot description
-                        // possible_values is empty iff is_categorical is False
-                        "is_categorical": is_categorical,
-                        "possible_values": [possible_values...]
-                    }
-                }
-            }
-        },
-        "intents": {
-            intent name: {
-                "description": intent description
-            }
-        },
-        "binary_dialogue_act": {
-            [
-                {
-                    "intent": intent name,
-                    "domain": domain name
-                    "slot": slot name,
-                    "value": some value
-                }
-            ]
-        }
-        "state": {
-            domain name: {
-                slot name: ""
-            }
-        }
-    }
-    """
-    global special_values
-
-    ontology_file = os.path.join(f'{name}', 'ontology.json')
-    assert os.path.exists(ontology_file), f'ontology file should named {ontology_file}'
-    ontology = json.load(open(ontology_file))
-    
-    # record issues in ontology
-    descriptions = {
-        # if each domain has a description
-        "domains": True,
-        "slots": True,
-        "intents": True,
-    }
-    for domain_name, domain in ontology['domains'].items():
-        if not domain['description']:
-            descriptions["domains"] = False
-        # if not domain_name in ontology['state']:
-        #     print(f"domain '{domain_name}' not found in state")
-        for slot_name, slot in domain["slots"].items():
-            if not slot["description"]:
-                descriptions["slots"] = False
-            if slot["is_categorical"]:
-                assert slot["possible_values"]
-                slot['possible_values'] = list(map(str.lower, slot['possible_values']))
-                for value in special_values:
-                    assert value not in slot['possible_values'], f'ONTOLOGY\tspecial value `{value}` should not present in possible values'
-
-    for intent_name, intent in ontology["intents"].items():
-        if not intent["description"]:
-            descriptions["intents"] = False
-
-    binary_dialogue_acts = set()
-    for bda in ontology['binary_dialogue_act']:
-        assert bda['intent'] is None or bda["intent"] in ontology['intents'], f'ONTOLOGY\tintent undefined intent in binary dialog act: {bda}'
-        binary_dialogue_acts.add(tuple(bda.values()))
-    ontology['bda_set'] = binary_dialogue_acts
-
-    assert 'state' in ontology, 'ONTOLOGY\tno state'
-    redundant_value = False
-    for domain_name, domain in ontology['state'].items():
-        assert domain_name in ontology['domains']
-        for slot_name, value in domain.items():
-            assert slot_name in ontology['domains'][domain_name]['slots']
-            if value:
-                redundant_value = True
-
-    if redundant_value:
-        print('ONTOLOGY: redundant value description in state')
-
-    # print('description existence:', descriptions, '\n')
-    for description, value in descriptions.items():
-        if not value:
-            print(f'description of {description} is incomplete')
-    return ontology
-
-
-def check_data(name, ontology):
-    global special_values
-
-    from zipfile import ZipFile
-    data_file = os.path.join(f'{name}', 'data.zip')
-    if not os.path.exists(data_file):
-        print('cannot find data.zip')
-        return
-
-    print('loading data')
-    with ZipFile(data_file) as zipfile:
-        with zipfile.open('data.json', 'r') as f:
-            data = json.load(f)
-
-    all_id = set()
-    splits = ['train', 'val', 'test']
-    da_values = 0
-    da_matches = 0
-    state_values = 0
-    state_matches = 0
-    distances = []
-    stat_keys = ['dialogues', 'utterances', 'tokens', 'domains']
-    stat = {
-        split: {
-            key: 0 for key in stat_keys
-        } for split in splits
-    }
-
-    # present for both non-categorical or categorical
-
-    for dialogue in data:
-        dialogue_id = dialogue['dialogue_id']
-        assert isinstance(dialogue_id, str), '`dialogue_id` is expected to be str type'
-        dialogue_id = str(dialogue_id)
-
-        assert dialogue['dataset'] == name, f'{dialogue_id}\tinconsistent dataset name: {dialogue["dataset"]}'
-
-        split = dialogue['data_split']
-        assert split in splits, f'unknown split: `{split}`'
-        cur_stat = stat[split]
-        cur_stat['dialogues'] += 1
-        try:
-            prefix, num = dialogue_id.split('_')
-            assert prefix == name
-            int(num)    # try converting to int
-        except:
-            print(f'{dialogue_id}\twrong dialogue id format: {dialogue_id}')
-            raise Exception
-        assert dialogue_id not in all_id, f'multiple dialogue id: {dialogue_id}'
-        all_id.add(dialogue_id)
-
-        cur_domains = dialogue['domains']
-        assert isinstance(cur_domains, list), f'{dialogue_id}\t`domains` is expected to be list type, '
-        assert len(set(cur_domains)) == len(cur_domains), f'{dialogue_id}\trepeated domains'
-        cur_stat['domains'] += len(cur_domains)
-        cur_domains = set(cur_domains)
-        for domain_name in cur_domains:
-            assert domain_name in ontology['domains'], f'{dialogue_id}\tundefined current domain: {domain_name}'
-
-        turns = dialogue['turns']
-        cur_stat['utterances'] += len(turns)
-        assert turns, f'{dialogue_id}\tempty turn'
-
-        assert turns[0]['speaker'] == 'user', f'{dialogue_id}\tnot start with user role'
-        if ontology['state']:
-            # update cur_state with state_update every turn, and compare it with state annotation
-            cur_state = {
-                domain_name: deepcopy(ontology['state'][domain_name]) for domain_name in cur_domains
-            }
-        # check dialog act
-        for turn_id, turn in enumerate(turns):
-            assert turn['speaker'] in ['user', 'system'], f'{dialogue_id}:{turn_id}\tunknown speaker value: {turn["speaker"]}'
-            assert turn_id == turn['utt_idx'], f'{dialogue_id}:{turn_id}\twrong utt_idx'
-            if turn_id > 0:
-                assert turns[turn_id - 1]['speaker'] != turn['speaker'], f'{dialogue_id}:{turn_id}\tuser and system should speak alternatively'
-
-            utterance = turn['utterance']
-            cur_stat['tokens'] += len(utterance.strip().split(' '))
-            dialogue_acts = turn['dialogue_act']
-
-            # check domain-slot-value
-            # prefix: error prefix
-            def check_dsv(domain_name, slot_name, value, categorical, prefix):
-                assert domain_name in cur_domains or domain_name == 'booking', f'{prefix}\t{domain_name} not presented in current domains'
-                domain = ontology['domains'][domain_name]
-                assert slot_name in domain['slots'], f'{prefix}\t{slot_name} not presented in domain {domain_name}'
-                slot = domain['slots'][slot_name]
-                if categorical:
-                    assert slot['is_categorical'], f'{prefix}\t{domain_name}-{slot_name} is not categorical'
-                    value = value.lower()
-                    assert value in special_values or value in slot['possible_values'], f'{prefix}\t`{value}` not presented in possible values of' \
-                                                             f' {domain_name}-{slot_name}: {slot["possible_values"]}'
-                else:
-                    assert not slot['is_categorical'], f'{prefix}\t{domain_name}-{slot_name} is not non-categorical'
-
-            def check_da(da, categorical):
-                assert da['intent'] in ontology['intents'], f'{dialogue_id}:{turn_id}\tundefined intent {da["intent"]}'
-                check_dsv(da['domain'], da['slot'], da['value'], categorical, f'{dialogue_id}:{turn_id}:da')
-
-            for da in dialogue_acts['categorical']:
-                check_da(da, True)
-            for da in dialogue_acts['non-categorical']:
-                check_da(da, False)
-                # values only match after .strip() in some case, it's the issue of pre-processing
-                if da['value'] not in special_values:
-                    da_values += 1
-                    assert 'start' in da and 'end' in da or 'start' not in da and 'end' not in da, \
-                        f'{dialogue_id}:{turn_id}\tstart and end field in da should both present or neither not present'
-                    if 'start' in da:
-                        value = utterance[da['start']:da['end']]
-                        if da['value'].lower() == value.lower():
-                            da_matches += 1
-
-            for da in dialogue_acts['binary']:
-                assert tuple(da.values()) in ontology['bda_set'], f'{dialogue_id}:{turn_id}\tbinary dialog act {da} not present in ontology'
-                # do not check domain-slot-value in binary dialogue acts
-
-            if turn['speaker'] == 'user':
-                assert 'state' in turn and 'state_update' in turn, f"{dialogue_id}:{turn_id}\tstate and state_update must present in user's role"
-                state_update = turn['state_update']
-
-                def apply_update(update, categorical):
-                    domain_name = update['domain']
-                    slot_name = update['slot']
-                    value = update['value']
-                    check_dsv(domain_name, slot_name, value, categorical, f'{dialogue_id}:{turn_id}:state_update')
-                    cur_state[domain_name][slot_name] = value
-                if ontology['state']:
-                    for update in state_update['categorical']:
-                        apply_update(update, True)
-                    for update in state_update['non-categorical']:
-                        apply_update(update, False)
-                        value = update['value']
-                        if value not in special_values:
-                            state_values += 1
-                            if 'utt_idx' in update:
-                                if turns[update['utt_idx']]['utterance'][update['start']:update['end']].lower() == update['value']:
-                                    state_matches += 1
-                                else:
-                                    print('value in utt:\t', turns[update['utt_idx']]['utterance'][update['start']:update['end']].strip())
-                                    print('value in state:\t', update['value'])
-                                    pass
-
-                    assert cur_state == turn['state'], f'{dialogue_id}:{turn_id}:state_update incorrect state or state update calculation'
-
-            else:
-                assert 'state' not in turn or 'state_update' in turn, f"{dialogue_id}:{turn_id}\tstate or state_update cannot present in system's role"
-
-        assert turns[-1]['speaker'] == 'user', f'{dialogue_id} dialog must end with user role'
-
-    if da_values:
-        print('da values match rate:    {:.3f}'.format(da_matches * 100 / da_values))
-    if state_values:
-        print('state values match rate: {:.3f}'.format(state_matches * 100 / state_values))
-
-    all_stat = {key: 0 for key in stat_keys}
-    for key in stat_keys:
-        all_stat[key] = sum(stat[split][key] for split in splits)
-    stat['all'] = all_stat
-
-    for split in splits + ['all']:
-        cur_stat = stat[split]
-        if cur_stat['dialogues']:
-            cur_stat['avg_utt'] = round(cur_stat['utterances'] / cur_stat['dialogues'], 2)
-            cur_stat['avg_tokens'] = round(cur_stat['tokens'] / cur_stat['utterances'], 2)
-            cur_stat['avg_domains'] = round(cur_stat.pop('domains') / cur_stat['dialogues'], 2)
-        else:
-            del stat[split]
-    print(f'domains: {len(ontology["domains"])}')
-    print(json.dumps(stat, indent=4))
-    if state_matches:
-        for dis, cnt in enumerate(distances):
-            print(cnt)
-
-
-if __name__ == '__main__':
-    from argparse import ArgumentParser
-
-    parser = ArgumentParser(description="evaluate pre-processed datasets")
-    parser.add_argument('datasets', metavar='dataset_name', nargs='*', help='dataset names to be evaluated')
-    parser.add_argument('--all', action='store_true', help='evaluate all datasets')
-    parser.add_argument('--no-int', action='store_true', help='not interrupted by exception')
-    parser.add_argument('--preprocess', '-p', action='store_true', help='run preprocess automatically')
-    args = parser.parse_args()
-
-    if args.all:
-        datasets = list(filter(os.path.isdir, os.listdir()))
-    else:
-        datasets = args.datasets
-    if not datasets:
-        print('no dataset specified')
-        parser.print_help()
-        exit(1)
-
-    print('datasets to be evaluated:', datasets)
-
-    fail = []
-
-    for name in datasets:
-        try:
-            print('')
-            if not os.path.isdir(name):
-                print(f'dataset {name} not found')
-                continue
-
-            print(f'checking {name}')
-            preprocess_file = os.path.join(f'{name}', 'preprocess.py')
-            if not os.path.exists(preprocess_file):
-                print('no preprocess.py')
-                if args.preprocess:
-                    print(f'skip evaluation of {name}')
-                    continue
-            if args.preprocess:
-                print('pre-processing')
-
-                os.chdir(name)
-                import importlib
-                preprocess = importlib.import_module(f'{name}.preprocess')
-                preprocess.preprocess()
-                os.chdir('..')
-
-            ontology = check_ontology(name)
-            check_data(name, ontology)
-        except Exception as e:
-            if args.no_int:
-                fail.append(name)
-            else:
-                raise e
-
-    if not fail:
-        print('all datasets passed test')
-    else:
-        print('failed dataset(s):', fail)
diff --git a/data/unified_datasets/multiwoz21/README.md b/data/unified_datasets/multiwoz21/README.md
index 803ebf3ad3ee6c4b6aaf710a739f9518bf5d5321..7bf47f2c79ba03faa21fe9d03b4bc8a6e0c89ed8 100644
--- a/data/unified_datasets/multiwoz21/README.md
+++ b/data/unified_datasets/multiwoz21/README.md
@@ -1,31 +1,64 @@
-# README
+# Dataset Card for MultiWOZ 2.1
 
-## Features
+- **Repository:** https://github.com/budzianowski/multiwoz
+- **Paper:** https://aclanthology.org/2020.lrec-1.53
+- **Leaderboard:** https://github.com/budzianowski/multiwoz
+- **Who transforms the dataset:** Qi Zhu(zhuq96 at gmail dot com)
 
-- Annotations: dialogue act, character-level span for non-categorical slots. state and state updates.   
+### Dataset Summary
 
-Statistics: 
+MultiWOZ 2.1 fixed the noise in state annotations and dialogue utterances. It also includes user dialogue acts from ConvLab (Lee et al., 2019) as well as multiple slot descriptions per dialogue state slot.
 
-|       | \# dialogues | \# utterances | avg. turns | avg. tokens | \# domains |
-| ----- | ------------ | ------------- | ---------- | ----------- | ---------- |
-| train | 8434         | 105066         | 12.46     | 17.27      | 7          |
-| dev | 999         | 13731         | 13.74      | 17.72       | 7          |
-| train | 1000         | 13744         | 13.74       | 17.67       | 7          |
+- **How to get the transformed data from original data:** 
+  - Download [MultiWOZ_2.1.zip](https://github.com/budzianowski/multiwoz/blob/master/data/MultiWOZ_2.1.zip).
+  - Run `python preprocess.py` in the current directory.
+- **Main changes of the transformation:**
+  - Create a new ontology in the unified format, taking slot descriptions from MultiWOZ 2.2.
+  - Correct some grammar errors in the text, mainly following `tokenization.md` in MultiWOZ_2.1.
+  - Normalize slot name and value. See `normalize_domain_slot_value` function in `preprocess.py`.
+  - Correct some non-categorical slots' values and provide character level span annotation.
+  - Concatenate multiple values in user goal & state using `|`.
+- **Annotations:**
+  - user goal, dialogue acts, state.
 
+### Supported Tasks and Leaderboards
 
-## Main changes
+NLU, DST, Policy, NLG, E2E, User simulator
 
-- only keep 5 domains in state annotations and dialog acts. 
-- `pricerange`, `area`, `day`, `internet`, `parking`, `stars` are considered categorical slots.
-- punctuation marks are split from their previous tokens. e.g `I want to find a hotel. -> 
-  I want to find a hotel .`
+### Languages
 
-Run `evaluate.py`:
+English
 
-da values match rate:    97.944
-state values match rate: 66.017
+### Data Splits
 
-### original data
+| split      |   dialogues |   utterances |   avg_utt |   avg_tokens |   avg_domains |   cat slot match(state) |   cat slot match(goal) |   cat slot match(dialogue act) |   non-cat slot span(dialogue act) |
+|------------|-------------|--------------|-----------|--------------|---------------|-------------------------|------------------------|--------------------------------|-----------------------------------|
+| train      |        8438 |       113556 |     13.46 |        13.23 |          3.39 |                   98.84 |                  99.48 |                          86.39 |                             98.22 |
+| validation |        1000 |        14748 |     14.75 |        13.5  |          3.64 |                   98.84 |                  99.46 |                          86.59 |                             98.17 |
+| test       |        1000 |        14744 |     14.74 |        13.5  |          3.59 |                   99.21 |                  99.32 |                          85.83 |                             98.58 |
+| all        |       10438 |       143048 |     13.7  |        13.28 |          3.44 |                   98.88 |                  99.47 |                          86.36 |                             98.25 |
 
-- from [multiwoz](https://github.com/budzianowski/multiwoz) repo.
+9 domains: ['attraction', 'hotel', 'taxi', 'restaurant', 'train', 'police', 'hospital', 'booking', 'general']
+- **cat slot match**: how many values of categorical slots are in the possible values of ontology.
+- **non-cat slot span**: how many values of non-categorical slots have span annotation.
 
+### Citation
+
+```
+@inproceedings{eric-etal-2020-multiwoz,
+    title = "{M}ulti{WOZ} 2.1: A Consolidated Multi-Domain Dialogue Dataset with State Corrections and State Tracking Baselines",
+    author = "Eric, Mihail and Goel, Rahul and Paul, Shachi and Sethi, Abhishek and Agarwal, Sanchit and Gao, Shuyag and Hakkani-Tur, Dilek",
+    booktitle = "Proceedings of the 12th Language Resources and Evaluation Conference",
+    month = may,
+    year = "2020",
+    address = "Marseille, France",
+    publisher = "European Language Resources Association",
+    url = "https://aclanthology.org/2020.lrec-1.53",
+    pages = "422--428",
+    ISBN = "979-10-95546-34-4",
+}
+```
+
+### Licensing Information
+
+Apache License, Version 2.0
\ No newline at end of file
diff --git a/data/unified_datasets/multiwoz21/data.zip b/data/unified_datasets/multiwoz21/data.zip
index 7f60019dfc4a68728474baf9e8d3d73305b46082..9bb5c40b6c58e821c306f7096a07d594f2e59f47 100644
Binary files a/data/unified_datasets/multiwoz21/data.zip and b/data/unified_datasets/multiwoz21/data.zip differ
diff --git a/data/unified_datasets/multiwoz21/database.py b/data/unified_datasets/multiwoz21/database.py
new file mode 100644
index 0000000000000000000000000000000000000000..0dbf50c85d4808d96503cb1861bd84a8054f0965
--- /dev/null
+++ b/data/unified_datasets/multiwoz21/database.py
@@ -0,0 +1,107 @@
+import json
+import os
+import random
+from fuzzywuzzy import fuzz
+from itertools import chain
+from zipfile import ZipFile
+from copy import deepcopy
+
+
+class Database:
+    def __init__(self):
+        """extract data.zip and load the database."""
+        archive = ZipFile(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data.zip'))
+        domains = ['restaurant', 'hotel', 'attraction', 'train', 'hospital', 'police']
+        self.dbs = {}
+        for domain in domains:
+            with archive.open('data/{}_db.json'.format(domain)) as f:
+                self.dbs[domain] = json.loads(f.read())
+        # add some missing information
+        self.dbs['taxi'] = {
+            "taxi_colors": ["black","white","red","yellow","blue","grey"],
+            "taxi_types":  ["toyota","skoda","bmw","honda","ford","audi","lexus","volvo","volkswagen","tesla"],
+            "taxi_phone": ["^[0-9]{10}$"]
+        }
+        self.dbs['police'][0]['postcode'] = "cb11jg"
+        for entity in self.dbs['hospital']:
+            entity['postcode'] = "cb20qq"
+            entity['address'] = "Hills Rd, Cambridge"
+
+        self.dbattr2slot = {
+            'openhours': 'open hours',
+            'pricerange': 'price range',
+            'arriveBy': 'arrive by',
+            'leaveAt': 'leave at'
+        }
+
+    def query(self, domain, state, topk, ignore_open=False, soft_contraints=(), fuzzy_match_ratio=60):
+        """return a list of topk entities (dict containing slot-value pairs) for a given domain based on the dialogue state."""
+        # query the db
+        if domain == 'taxi':
+            return [{'taxi_colors': random.choice(self.dbs[domain]['taxi_colors']),
+            'taxi_types': random.choice(self.dbs[domain]['taxi_types']),
+            'taxi_phone': ''.join([str(random.randint(1, 9)) for _ in range(11)])}]
+        if domain == 'police':
+            return deepcopy(self.dbs['police'])
+        if domain == 'hospital':
+            department = None
+            for key, val in state:
+                if key == 'department':
+                    department = val
+            if not department:
+                return deepcopy(self.dbs['hospital'])
+            else:
+                return [deepcopy(x) for x in self.dbs['hospital'] if x['department'].lower() == department.strip().lower()]
+        state = list(map(lambda ele: ele if not(ele[0] == 'area' and ele[1] == 'center') else ('area', 'centre'), state))
+
+        found = []
+        for i, record in enumerate(self.dbs[domain]):
+            constraints_iterator = zip(state, [False] * len(state))
+            soft_contraints_iterator = zip(soft_contraints, [True] * len(soft_contraints))
+            for (key, val), fuzzy_match in chain(constraints_iterator, soft_contraints_iterator):
+                if val in ["", "dont care", 'not mentioned', "don't care", "dontcare", "do n't care"]:
+                    pass
+                else:
+                    try:
+                        record_keys = [self.dbattr2slot.get(k, k) for k in record]
+                        if key.lower() not in record_keys:
+                            continue
+                        if key == 'leave at':
+                            val1 = int(val.split(':')[0]) * 100 + int(val.split(':')[1])
+                            val2 = int(record['leaveAt'].split(':')[0]) * 100 + int(record['leaveAt'].split(':')[1])
+                            if val1 > val2:
+                                break
+                        elif key == 'arrive by':
+                            val1 = int(val.split(':')[0]) * 100 + int(val.split(':')[1])
+                            val2 = int(record['arriveBy'].split(':')[0]) * 100 + int(record['arriveBy'].split(':')[1])
+                            if val1 < val2:
+                                break
+                        # elif ignore_open and key in ['destination', 'departure', 'name']:
+                        elif ignore_open and key in ['destination', 'departure']:
+                            continue
+                        elif record[key].strip() == '?':
+                            # '?' matches any constraint
+                            continue
+                        else:
+                            if not fuzzy_match:
+                                if val.strip().lower() != record[key].strip().lower():
+                                    break
+                            else:
+                                if fuzz.partial_ratio(val.strip().lower(), record[key].strip().lower()) < fuzzy_match_ratio:
+                                    break
+                    except:
+                        continue
+            else:
+                res = deepcopy(record)
+                res['Ref'] = '{0:08d}'.format(i)
+                found.append(res)
+                if len(found) == topk:
+                    return found
+        return found
+
+
+if __name__ == '__main__':
+    db = Database()
+    res = db.query("train", [['departure', 'cambridge'], ['destination','peterborough'], ['day', 'tuesday'], ['arrive by', '11:15']], topk=3)
+    print(res, len(res))
+    # print(db.query("hotel", [['price range', 'moderate'], ['stars','4'], ['type', 'guesthouse'], ['internet', 'yes'], ['parking', 'no'], ['area', 'east']]))
diff --git a/data/unified_datasets/multiwoz21/dummy_data.json b/data/unified_datasets/multiwoz21/dummy_data.json
new file mode 100644
index 0000000000000000000000000000000000000000..9945b92915b0f9739d8b31b3fd112f8ab86f2cb3
--- /dev/null
+++ b/data/unified_datasets/multiwoz21/dummy_data.json
@@ -0,0 +1,5896 @@
+[
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-0",
+    "original_id": "SNG01856.json",
+    "domains": [
+      "hotel",
+      "booking",
+      "general"
+    ],
+    "goal": {
+      "description": "You are looking for a <span class='emphasis'>place to stay</span>. The hotel should be in the <span class='emphasis'>cheap</span> price range and should be in the type of <span class='emphasis'>hotel</span>. The hotel should <span class='emphasis'>include free parking</span> and should <span class='emphasis'>include free wifi</span>. Once you find the <span class='emphasis'>hotel</span> you want to book it for <span class='emphasis'>6 people</span> and <span class='emphasis'>3 nights</span> starting from <span class='emphasis'>tuesday</span>. If the booking fails how about <span class='emphasis'>2 nights</span>. Make sure you get the <span class='emphasis'>reference number</span>",
+      "inform": {
+        "hotel": {
+          "type": "hotel",
+          "parking": "yes",
+          "price range": "cheap",
+          "internet": "yes",
+          "book stay": "3|2",
+          "book day": "tuesday",
+          "book people": "6"
+        }
+      },
+      "request": {
+        "hotel": {}
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "am looking for a place to to stay that has cheap price range it should be in a type of hotel",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "price range",
+              "value": "cheap"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "type",
+              "value": "hotel",
+              "start": 87,
+              "end": 92
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "cheap",
+            "stars": "",
+            "internet": "",
+            "type": "hotel",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Okay, do you have a specific area you want to stay in?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "area",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "no, i just need to make sure it's cheap. oh, and i need parking",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "parking",
+              "value": "yes"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "yes",
+            "price range": "cheap",
+            "stars": "",
+            "internet": "",
+            "type": "hotel",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I found 1 cheap hotel for you that includes parking. Do you like me to book it?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "price range",
+              "value": "cheap"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "choice",
+              "value": "1",
+              "start": 8,
+              "end": 9
+            }
+          ],
+          "binary": [
+            {
+              "intent": "inform",
+              "domain": "booking",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "parking",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, please. 6 people 3 nights starting on tuesday.",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book day",
+              "value": "tuesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book stay",
+              "value": "3",
+              "start": 22,
+              "end": 23
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book people",
+              "value": "6",
+              "start": 13,
+              "end": 14
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "yes",
+            "price range": "cheap",
+            "stars": "",
+            "internet": "",
+            "type": "hotel",
+            "book stay": "3",
+            "book day": "tuesday",
+            "book people": "6"
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I am sorry but I wasn't able to book that for you for Tuesday. Is there another day you would like to stay or perhaps a shorter stay?",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "nobook",
+              "domain": "booking",
+              "slot": "day",
+              "value": "Tuesday"
+            }
+          ],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "booking",
+              "slot": "book stay",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "booking",
+              "slot": "day",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "how about only 2 nights.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book stay",
+              "value": "2",
+              "start": 15,
+              "end": 16
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "yes",
+            "price range": "cheap",
+            "stars": "",
+            "internet": "",
+            "type": "hotel",
+            "book stay": "2",
+            "book day": "tuesday",
+            "book people": "6"
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Booking was successful.\nReference number is : 7GAWK763. Anything else I can do for you?",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "book",
+              "domain": "booking",
+              "slot": "ref",
+              "value": "7GAWK763",
+              "start": 46,
+              "end": 54
+            }
+          ],
+          "binary": [
+            {
+              "intent": "reqmore",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, that will be all. Good bye.",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "yes",
+            "price range": "cheap",
+            "stars": "",
+            "internet": "",
+            "type": "hotel",
+            "book stay": "2",
+            "book day": "tuesday",
+            "book people": "6"
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Thank you for using our services.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-1",
+    "original_id": "SNG0129.json",
+    "domains": [
+      "police",
+      "general"
+    ],
+    "goal": {
+      "description": "You were <span class='emphasis'>robbed</span> and are looking for help. Make sure you get <span class='emphasis'>postcode</span>, <span class='emphasis'>address</span>, and <span class='emphasis'>phone number</span>",
+      "inform": {
+        "police": {}
+      },
+      "request": {
+        "police": {
+          "postcode": "",
+          "address": "",
+          "phone": ""
+        }
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "Hello, I have been robbed.  Can you please help me get in touch with the police?",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Parkside Police Station is in Parkside, Cambridge. Their number is 01223358966. Anything else I can do for you?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "name",
+              "value": "Parkside Police Station",
+              "start": 0,
+              "end": 23
+            },
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "phone",
+              "value": "01223358966",
+              "start": 67,
+              "end": 78
+            },
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "address",
+              "value": "Parkside, Cambridge",
+              "start": 30,
+              "end": 49
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can I please have the postcode as well?",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "police",
+              "slot": "postcode",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The postcode for the Parkside Police Station is CB11JG. Can I help you with anything else?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "name",
+              "value": "Parkside Police Station",
+              "start": 21,
+              "end": 44
+            },
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "postcode",
+              "value": "CB11JG",
+              "start": 48,
+              "end": 54
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Was Parkside the address of the police station? If not, can I have the address please?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "police",
+              "slot": "address",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Yes, Parkside is the address.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you that will be all for now.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "thank",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Great. Thank you for contacting Cambridge Towninfo Centre.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "welcome",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "You were great. Goodbye.",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "We are happy to help. Have a good day!",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "welcome",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-2",
+    "original_id": "MUL2168.json",
+    "domains": [
+      "hotel",
+      "train",
+      "booking",
+      "general"
+    ],
+    "goal": {
+      "description": "You are planning your trip in Cambridge. You are looking for a <span class='emphasis'>train</span>. The train should go to <span class='emphasis'>cambridge</span> and should <span class='emphasis'>arrive by 20:45</span>. The train should depart from <span class='emphasis'>birmingham new street</span> and should leave on <span class='emphasis'>wednesday</span>. Once you find the train you want to make a booking for <span class='emphasis'>5 people</span>. Make sure you get the <span class='emphasis'>reference number</span>. You are also looking for a <span class='emphasis'>place to stay</span>. The hotel should have <span class='emphasis'>a star of 4</span> and should <span class='emphasis'>include free wifi</span>. The hotel <span class='emphasis'>doesn't need to have free parking</span> and should be in the <span class='emphasis'>cheap</span> price range. If there is no such hotel, how about one that has <span class='emphasis'>free parking</span>. Once you find the <span class='emphasis'>hotel</span> you want to book it for <span class='emphasis'>the same group of people</span> and <span class='emphasis'>5 nights</span> starting from <span class='emphasis'>the same day</span>. Make sure you get the <span class='emphasis'>reference number</span>",
+      "inform": {
+        "hotel": {
+          "parking": "no|yes",
+          "price range": "cheap|cheap",
+          "stars": "4|4",
+          "internet": "yes|yes",
+          "book stay": "5",
+          "book day": "wednesday",
+          "book people": "5"
+        },
+        "train": {
+          "destination": "cambridge",
+          "day": "wednesday",
+          "arrive by": "20:45",
+          "departure": "birmingham new street",
+          "book people": "5"
+        }
+      },
+      "request": {
+        "hotel": {},
+        "train": {}
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "Hi, I'm looking for a train that is going to cambridge and arriving there by 20:45, is there anything like that?",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "destination",
+              "value": "cambridge",
+              "start": 45,
+              "end": 54
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": "20:45",
+              "start": 77,
+              "end": 82
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "",
+            "arrive by": "20:45",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are over 1,000 trains like that.  Where will you be departing from?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "choice",
+              "value": "over 1",
+              "start": 10,
+              "end": 16
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "choice",
+              "value": "000"
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "departure",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I am departing from birmingham new street.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "birmingham new street",
+              "start": 20,
+              "end": 41
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "",
+            "arrive by": "20:45",
+            "departure": "birmingham new street",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Can you confirm your desired travel day?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "day",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I would like to leave on wednesday",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "day",
+              "value": "wednesday"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "wednesday",
+            "arrive by": "20:45",
+            "departure": "birmingham new street",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I show a train leaving birmingham new street at 17:40 and arriving at 20:23 on Wednesday.  Will this work for you?",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "day",
+              "value": "Wednesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": "20:23",
+              "start": 70,
+              "end": 75
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "17:40",
+              "start": 48,
+              "end": 53
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "birmingham new street",
+              "start": 23,
+              "end": 44
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That will, yes. Please make a booking for 5 people please.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "book people",
+              "value": "5",
+              "start": 42,
+              "end": 43
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "wednesday",
+            "arrive by": "20:45",
+            "departure": "birmingham new street",
+            "book people": "5"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I've booked your train tickets, and your reference number is A9NHSO9Y.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "ref",
+              "value": "A9NHSO9Y",
+              "start": 61,
+              "end": 69
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thanks so much. I would also need a place to say. I am looking for something with 4 stars and has free wifi. ",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "internet",
+              "value": "yes"
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "stars",
+              "value": "4"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "4",
+            "internet": "yes",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "wednesday",
+            "arrive by": "20:45",
+            "departure": "birmingham new street",
+            "book people": "5"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "How about the cambridge belfry?  It has all the attributes you requested and a great name!  Maybe even a real belfry?",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "recommend",
+              "domain": "hotel",
+              "slot": "name",
+              "value": "the cambridge belfry",
+              "start": 10,
+              "end": 30
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That sounds great, could you make a booking for me please?",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "cambridge belfry",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "4",
+            "internet": "yes",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "wednesday",
+            "arrive by": "20:45",
+            "departure": "birmingham new street",
+            "book people": "5"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What day would you like your booking for?",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "booking",
+              "slot": "day",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Please book it for Wednesday for 5 people and 5 nights, please.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book day",
+              "value": "wednesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book stay",
+              "value": "5",
+              "start": 46,
+              "end": 47
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book people",
+              "value": "5",
+              "start": 33,
+              "end": 34
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "cambridge belfry",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "4",
+            "internet": "yes",
+            "type": "",
+            "book stay": "5",
+            "book day": "wednesday",
+            "book people": "5"
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "wednesday",
+            "arrive by": "20:45",
+            "departure": "birmingham new street",
+            "book people": "5"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Booking was successful. Reference number is : 5NAWGJDC.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "book",
+              "domain": "booking",
+              "slot": "ref",
+              "value": "5NAWGJDC",
+              "start": 46,
+              "end": 54
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you, goodbye",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "thank",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "cambridge belfry",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "4",
+            "internet": "yes",
+            "type": "",
+            "book stay": "5",
+            "book day": "wednesday",
+            "book people": "5"
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "cambridge",
+            "day": "wednesday",
+            "arrive by": "20:45",
+            "departure": "birmingham new street",
+            "book people": "5"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Goodbye. If you think of anything else you need don't hesitate to contact us.",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-3",
+    "original_id": "SNG01445.json",
+    "domains": [
+      "police",
+      "general"
+    ],
+    "goal": {
+      "description": "You were <span class='emphasis'>robbed</span> and are looking for help. Make sure you get <span class='emphasis'>address</span>, <span class='emphasis'>phone number</span>, and <span class='emphasis'>postcode</span>",
+      "inform": {
+        "police": {}
+      },
+      "request": {
+        "police": {
+          "address": "",
+          "phone": "",
+          "postcode": ""
+        }
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I was robbed a few minutes ago and need assistance.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please contact the Parkside, Cambridge police station.",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "address",
+              "value": "Parkside, Cambridge",
+              "start": 19,
+              "end": 38
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I need the address including postcode of the police station and also the phone number.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "police",
+              "slot": "address",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "police",
+              "slot": "postcode",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "police",
+              "slot": "phone",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Of course. Their address is Parkside, Cambridge postcode CB11JG and phone number is 01223358966.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "phone",
+              "value": "01223358966",
+              "start": 84,
+              "end": 95
+            },
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "address",
+              "value": "Parkside, Cambridge",
+              "start": 28,
+              "end": 47
+            },
+            {
+              "intent": "inform",
+              "domain": "police",
+              "slot": "postcode",
+              "value": "CB11JG",
+              "start": 57,
+              "end": 63
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you. That's all I needed.",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "thank",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "You are more than welcome!\n",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "greet",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Ok, have a good day. Goodbye.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "You are very welcome. Goodbye.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-4",
+    "original_id": "MUL2105.json",
+    "domains": [
+      "hotel",
+      "train",
+      "general",
+      "booking"
+    ],
+    "goal": {
+      "description": "You are looking for information in Cambridge. You are looking for a <span class='emphasis'>place to stay</span>. The hotel should be in the <span class='emphasis'>east</span> and <span class='emphasis'>doesn't need to include internet</span>. The hotel should <span class='emphasis'>include free parking</span> and should be in the type of <span class='emphasis'>guesthouse</span>. If there is no such hotel, how about one that has <span class='emphasis'>free wifi</span>. Make sure you get <span class='emphasis'>address</span>. You are also looking for a <span class='emphasis'>train</span>. The train should leave on <span class='emphasis'>wednesday</span> and should <span class='emphasis'>arrive by 11:30</span>. The train should go to <span class='emphasis'>cambridge</span> and should depart from <span class='emphasis'>ely</span>. Once you find the train you want to make a booking for <span class='emphasis'>8 people</span>. Make sure you get the <span class='emphasis'>reference number</span>",
+      "inform": {
+        "hotel": {
+          "parking": "yes|yes",
+          "type": "guesthouse|guesthouse",
+          "internet": "no|yes",
+          "area": "east|centre"
+        },
+        "train": {
+          "destination": "cambridge",
+          "day": "wednesday",
+          "arrive by": "11:30",
+          "departure": "ely",
+          "book people": "8"
+        }
+      },
+      "request": {
+        "hotel": {
+          "address": ""
+        },
+        "train": {}
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "Hi. I'm looking for a hotel in the east.  The internet is not needed.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "area",
+              "value": "east"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "no",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are no hotels that do not have internet, but 7 which do have it. Do you have a specific price range you'd prefer?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "choice",
+              "value": "7",
+              "start": 51,
+              "end": 52
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "price range",
+              "value": ""
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "internet",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "no, but it should have free parking, please.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "parking",
+              "value": "yes"
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "price range",
+              "value": "dontcare"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The Express by Holiday Inn Cambridge is in the area and has free parking, would you like more information?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "name",
+              "value": "Express by Holiday Inn Cambridge",
+              "start": 4,
+              "end": 36
+            }
+          ],
+          "binary": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "parking",
+              "value": ""
+            },
+            {
+              "intent": "reqmore",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Is that a guesthouse or a hotel? I'd really prefer a guesthouse.",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "type",
+              "value": "guesthouse",
+              "start": 10,
+              "end": 20
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "express by holiday inn cambridge",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "guesthouse",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "It's a hotel. There are 5 guesthouses in the area. Do you prefer cheap or moderate for the price range?",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "choice",
+              "value": "5",
+              "start": 24,
+              "end": 25
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "type",
+              "value": "hotel",
+              "start": 7,
+              "end": 12
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "type",
+              "value": "guesthouse",
+              "start": 26,
+              "end": 36
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "price range",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "The price doesn't really matter. I just need free parking. It doesn't really need to have internet though. ",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "guesthouse",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are 5 guesthouses that have free parking. Should I book one of them for you?",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "type",
+              "value": "guesthouse",
+              "start": 12,
+              "end": 22
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "choice",
+              "value": "5",
+              "start": 10,
+              "end": 11
+            }
+          ],
+          "binary": [
+            {
+              "intent": "inform",
+              "domain": "booking",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "parking",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Okay, none of them DON'T offer free wifi? If not, I'll need the address for one that does have wifi, please. Tell me about your favorite.",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "internet",
+              "value": "yes"
+            }
+          ],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "address",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "guesthouse",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The allenbell is a guesthouse on the east.  The addres sis 517a coldham lane post code cb13js.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "recommend",
+              "domain": "hotel",
+              "slot": "area",
+              "value": "east"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "recommend",
+              "domain": "hotel",
+              "slot": "address",
+              "value": "517a coldham lane",
+              "start": 59,
+              "end": 76
+            },
+            {
+              "intent": "recommend",
+              "domain": "hotel",
+              "slot": "postcode",
+              "value": "cb13js",
+              "start": 87,
+              "end": 93
+            },
+            {
+              "intent": "recommend",
+              "domain": "hotel",
+              "slot": "name",
+              "value": "allenbell",
+              "start": 4,
+              "end": 13
+            },
+            {
+              "intent": "recommend",
+              "domain": "hotel",
+              "slot": "type",
+              "value": "guesthouse",
+              "start": 19,
+              "end": 29
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Great. Can you help me with a train as well? I'm looking to come in from Ely.",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "Ely",
+              "start": 73,
+              "end": 76
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "guesthouse",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "ely",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What is your destination? And do you have any preference for day, departure or arrival time?",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "day",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "destination",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "leave at",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I want to go from cambridge to ely, no preference for time but I need to book for 8 people.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "destination",
+              "value": "ely",
+              "start": 31,
+              "end": 34
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "cambridge",
+              "start": 18,
+              "end": 27
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "guesthouse",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "dontcare",
+            "destination": "ely",
+            "day": "",
+            "arrive by": "dontcare",
+            "departure": "cambridge",
+            "book people": "8"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are trains that run every two hours every day starting at 5:50. Do you know what day you'd like to travel?",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "starting at 5:50",
+              "start": 52,
+              "end": 68
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "day",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I'm looking for Wednesday , arrive by 11:30 for 8 people Please.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "day",
+              "value": "wednesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": "11:30",
+              "start": 38,
+              "end": 43
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "book people",
+              "value": "8",
+              "start": 48,
+              "end": 49
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "guesthouse",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "dontcare",
+            "destination": "ely",
+            "day": "wednesday",
+            "arrive by": "11:30",
+            "departure": "cambridge",
+            "book people": "8"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Booking was successful, the total fee is 35.2 GBP payable at the station. You reference number is 7ZCVR4Q3. Can I help you with anything else?",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "ref",
+              "value": "7ZCVR4Q3",
+              "start": 98,
+              "end": 106
+            },
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "price",
+              "value": "35.2 GBP",
+              "start": 41,
+              "end": 49
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, I don't need anything else right now.  Thank you for your assistance.  Good Bye.",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "east",
+            "parking": "yes",
+            "price range": "dontcare",
+            "stars": "",
+            "internet": "no",
+            "type": "guesthouse",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "dontcare",
+            "destination": "ely",
+            "day": "wednesday",
+            "arrive by": "11:30",
+            "departure": "cambridge",
+            "book people": "8"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Thank you and enjoy your visit. Have a great day.",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-5",
+    "original_id": "PMUL1690.json",
+    "domains": [
+      "hotel",
+      "train",
+      "booking",
+      "general"
+    ],
+    "goal": {
+      "description": "You are planning your trip in Cambridge. You are looking for a <span class='emphasis'>train</span>. The train should depart from <span class='emphasis'>norwich</span> and should <span class='emphasis'>leave after 21:15</span>. The train should leave on <span class='emphasis'>monday</span> and should go to <span class='emphasis'>cambridge</span>. Make sure you get <span class='emphasis'>arrival time</span>, <span class='emphasis'>travel time</span>, and <span class='emphasis'>price</span>. You are also looking for a <span class='emphasis'>place to stay</span>. The hotel should have <span class='emphasis'>a star of 4</span> and should be in the <span class='emphasis'>north</span>. The hotel should be in the <span class='emphasis'>moderate</span> price range and should be in the type of <span class='emphasis'>hotel</span>. If there is no such hotel, how about one that is in <span class='emphasis'>the type of guesthouse</span>. Once you find the <span class='emphasis'>hotel</span> you want to book it for <span class='emphasis'>4 people</span> and <span class='emphasis'>2 nights</span> starting from <span class='emphasis'>the same day</span>. Make sure you get the <span class='emphasis'>reference number</span>",
+      "inform": {
+        "hotel": {
+          "type": "hotel|guesthouse",
+          "price range": "moderate|moderate",
+          "stars": "4|4",
+          "area": "north|north",
+          "book stay": "2",
+          "book day": "monday",
+          "book people": "4"
+        },
+        "train": {
+          "leave at": "21:15",
+          "destination": "cambridge",
+          "day": "monday",
+          "departure": "norwich"
+        }
+      },
+      "request": {
+        "hotel": {},
+        "train": {
+          "arrive by": "",
+          "duration": "",
+          "price": ""
+        }
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I need to take a train from Norwich, leaving after 21:15.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "Norwich",
+              "start": 28,
+              "end": 35
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "21:15",
+              "start": 51,
+              "end": 56
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Where would you like to go to?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "destination",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I would like to go to Ely please.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "destination",
+              "value": "Ely",
+              "start": 22,
+              "end": 25
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "ely",
+            "day": "",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I don't have any listings for trains leaving Norwich and arriving in Ely. Would you like to try a different departure station?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "nooffer",
+              "domain": "train",
+              "slot": "destination",
+              "value": "Ely",
+              "start": 69,
+              "end": 72
+            },
+            {
+              "intent": "nooffer",
+              "domain": "train",
+              "slot": "departure",
+              "value": "Norwich",
+              "start": 45,
+              "end": 52
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "departure",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I meant Cambridge please. I would like to arrive in Cambridge on Monday after 21:15.",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "day",
+              "value": "monday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "destination",
+              "value": "Cambridge",
+              "start": 8,
+              "end": 17
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "21:15",
+              "start": 78,
+              "end": 83
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "ely",
+            "day": "",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Ok I will book that for you and get you a confirmation number",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "offerbook",
+              "domain": "train",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I don't need anything booked.  I just need to get the arrival time, travel time and price of a train from norwich to cambridge leaving after 21:15.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "destination",
+              "value": "cambridge",
+              "start": 117,
+              "end": 126
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "norwich",
+              "start": 106,
+              "end": 113
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "21:15",
+              "start": 141,
+              "end": 146
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "duration",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "price",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are trains arriving at 22:35, 23:35 and 24:35. They are 17.60 pounds and 79 minutes each.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "price",
+              "value": "17.60 pounds",
+              "start": 62,
+              "end": 74
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "duration",
+              "value": "79 minutes",
+              "start": 79,
+              "end": 89
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": "22:35",
+              "start": 29,
+              "end": 34
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": "23:35",
+              "start": 36,
+              "end": 41
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": "24:35",
+              "start": 46,
+              "end": 51
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Great, thanks! I'm also looking for a 4 star hotel in the north. Can you please help with that? ",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "area",
+              "value": "north"
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "stars",
+              "value": "4"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "north",
+            "parking": "",
+            "price range": "",
+            "stars": "4",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are several that meet your criteria. Is there a price range you are interested in?",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "choice",
+              "value": "several",
+              "start": 10,
+              "end": 17
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "price range",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I would like to keep it in the moderate range, please.",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "price range",
+              "value": "moderate"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "north",
+            "parking": "",
+            "price range": "moderate",
+            "stars": "4",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I see 7 options. They are all guesthouses. Do you have preferences for internet and parking?",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "type",
+              "value": "guesthouses",
+              "start": 30,
+              "end": 41
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "choice",
+              "value": "7",
+              "start": 6,
+              "end": 7
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "choice",
+              "value": "all",
+              "start": 26,
+              "end": 29
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "internet",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "parking",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I do not have a preference on those things.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "north",
+            "parking": "",
+            "price range": "moderate",
+            "stars": "4",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Shall I try to start and book you into one?",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "inform",
+              "domain": "booking",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Please book it and provide the reference number.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hotel",
+              "slot": "ref",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "north",
+            "parking": "",
+            "price range": "moderate",
+            "stars": "4",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "How many nights will you be staying?",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "booking",
+              "slot": "book stay",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Please book the hotel for 4 people and 2 nights.  Thank you.",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book stay",
+              "value": "2",
+              "start": 39,
+              "end": 40
+            },
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book people",
+              "value": "4",
+              "start": 26,
+              "end": 27
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "north",
+            "parking": "",
+            "price range": "moderate",
+            "stars": "4",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What day will you be arriving?",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "booking",
+              "slot": "day",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "the same day... monday please.",
+        "utt_idx": 18,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "hotel",
+              "slot": "book day",
+              "value": "monday"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "north",
+            "parking": "",
+            "price range": "moderate",
+            "stars": "4",
+            "internet": "",
+            "type": "",
+            "book stay": "2",
+            "book day": "monday",
+            "book people": "4"
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I apologize, some of our new workers have phobias of the booking system, I booked you at Acorn guest house, the reference number is 04CSEO7Q any other questions?",
+        "utt_idx": 19,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "book",
+              "domain": "booking",
+              "slot": "ref",
+              "value": "04CSEO7Q",
+              "start": 132,
+              "end": 140
+            },
+            {
+              "intent": "book",
+              "domain": "booking",
+              "slot": "name",
+              "value": "Acorn guest house",
+              "start": 89,
+              "end": 106
+            }
+          ],
+          "binary": [
+            {
+              "intent": "reqmore",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That's all I need for today.  Thanks for your help!",
+        "utt_idx": 20,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "thank",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "north",
+            "parking": "",
+            "price range": "moderate",
+            "stars": "4",
+            "internet": "",
+            "type": "",
+            "book stay": "2",
+            "book day": "monday",
+            "book people": "4"
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "21:15",
+            "destination": "cambridge",
+            "day": "monday",
+            "arrive by": "",
+            "departure": "norwich",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I'm happy to help, and I hope you enjoy your stay!",
+        "utt_idx": 21,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-6",
+    "original_id": "MUL2395.json",
+    "domains": [
+      "attraction",
+      "restaurant",
+      "general"
+    ],
+    "goal": {
+      "description": "You are planning your trip in Cambridge. You are looking for <span class='emphasis'>places to go</span> in town. The attraction should be in the <span class='emphasis'>centre</span>. Make sure you get <span class='emphasis'>entrance fee</span>, <span class='emphasis'>attraction type</span>, and <span class='emphasis'>address</span>. You are also looking for a <span class='emphasis'>place to dine</span>. The restaurant should be in the <span class='emphasis'>expensive</span> price range and should be <span class='emphasis'>in the same area as the attraction</span>. The restaurant should serve <span class='emphasis'>caribbean</span> food. If there is no such restaurant, how about one that serves <span class='emphasis'>turkish</span> food. Make sure you get <span class='emphasis'>phone number</span>, <span class='emphasis'>postcode</span>, and <span class='emphasis'>address</span>",
+      "inform": {
+        "attraction": {
+          "area": "east|centre"
+        },
+        "restaurant": {
+          "food": "caribbean|turkish",
+          "price range": "expensive|expensive",
+          "area": "centre|centre"
+        }
+      },
+      "request": {
+        "attraction": {
+          "entrance fee": "",
+          "type": "",
+          "address": ""
+        },
+        "restaurant": {
+          "phone": "",
+          "postcode": "",
+          "address": ""
+        }
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I am planning a trip to town and want to sight see a bit. Can you let me know some attractions I may be interested in?",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are 79 attractions in the city. Do you have a specific type of attraction or specific area of the attraction that you are interested in?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "choice",
+              "value": "79",
+              "start": 10,
+              "end": 12
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "attraction",
+              "slot": "area",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "attraction",
+              "slot": "type",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I'd like something in the centre.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "area",
+              "value": "centre"
+            }
+          ],
+          "non-categorical": [],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Great! How about All Saints Church? It has fantastic architecture and free entrance. Would you like more information?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "recommend",
+              "domain": "attraction",
+              "slot": "type",
+              "value": "architecture"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "recommend",
+              "domain": "attraction",
+              "slot": "entrance fee",
+              "value": "free",
+              "start": 70,
+              "end": 74
+            },
+            {
+              "intent": "recommend",
+              "domain": "attraction",
+              "slot": "name",
+              "value": "All Saints Church",
+              "start": 17,
+              "end": 34
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Could I get the address for it? I would also like an expensive place to eat around it. ",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "attraction",
+              "slot": "address",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "expensive",
+            "name": "",
+            "area": "centre",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The address is Jesus Lane. What type of food would you like to eat?",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "address",
+              "value": "Jesus Lane",
+              "start": 15,
+              "end": 25
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "restaurant",
+              "slot": "food",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I'm in the mood for Caribbean food.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "food",
+              "value": "Caribbean",
+              "start": 20,
+              "end": 29
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "caribbean",
+            "price range": "expensive",
+            "name": "",
+            "area": "centre",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Unfortunately, there are no expensive caribbean restaurants in that area. Would you like me to check a different type of cuisine, or another area?",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "nooffer",
+              "domain": "restaurant",
+              "slot": "price range",
+              "value": "expensive"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "nooffer",
+              "domain": "restaurant",
+              "slot": "food",
+              "value": "caribbean",
+              "start": 38,
+              "end": 47
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "restaurant",
+              "slot": "food",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "restaurant",
+              "slot": "area",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, I also love turkish food. Is there something in the center that's expensive? Also, what type of attraction is All Saints Church?",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "price range",
+              "value": "expensive"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "name",
+              "value": "All Saints Church",
+              "start": 115,
+              "end": 132
+            },
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "food",
+              "value": "turkish",
+              "start": 17,
+              "end": 24
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "attraction",
+              "slot": "type",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "all saints church",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "turkish",
+            "price range": "expensive",
+            "name": "",
+            "area": "centre",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The Meze Bar Restaurant is an expensive Turkish restaurant in the city centre.  The All Saints Church is an architecture attraction.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "area",
+              "value": "the city centre"
+            },
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "price range",
+              "value": "expensive"
+            },
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "type",
+              "value": "architecture"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "food",
+              "value": "Turkish",
+              "start": 40,
+              "end": 47
+            },
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "name",
+              "value": "The Meze Bar Restaurant",
+              "start": 0,
+              "end": 23
+            },
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "name",
+              "value": "The All Saints Church",
+              "start": 80,
+              "end": 101
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can I have the phone number, address and postcode for the restaurant please?",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "restaurant",
+              "slot": "phone",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "restaurant",
+              "slot": "postcode",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "restaurant",
+              "slot": "address",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "all saints church",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "turkish",
+            "price range": "expensive",
+            "name": "meze bar",
+            "area": "centre",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I don't have a phone number available, but the address is 196 Mill Road City Centre, postal code cb13nf. Anything else I can do for you? ",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "postcode",
+              "value": "cb13nf",
+              "start": 97,
+              "end": 103
+            },
+            {
+              "intent": "inform",
+              "domain": "restaurant",
+              "slot": "address",
+              "value": "196 Mill Road City Centre",
+              "start": 58,
+              "end": 83
+            }
+          ],
+          "binary": [
+            {
+              "intent": "reqmore",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Great that's all that I needed to know, thank you!",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "thank",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "all saints church",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "turkish",
+            "price range": "expensive",
+            "name": "meze bar",
+            "area": "centre",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "You're welcome, feel free to contact us about anything else you need.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "welcome",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-7",
+    "original_id": "SNG0190.json",
+    "domains": [
+      "hospital",
+      "general"
+    ],
+    "goal": {
+      "description": "You got injured and are looking for a <span class='emphasis'>hospital</span> nearby. Make sure you get <span class='emphasis'>address</span> and <span class='emphasis'>phone number</span>",
+      "inform": {
+        "hospital": {}
+      },
+      "request": {
+        "hospital": {
+          "address": "",
+          "phone": ""
+        }
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I've been injured and need to find a hospital nearby.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "inform",
+              "domain": "hospital",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The Addenbrookes Hospital is located at Hills Rd., Cambridge. Are you looking for a specific department?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hospital",
+              "slot": "department",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, I just need the general phone number, please.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hospital",
+              "slot": "phone",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "01223245151, is the number. Do you need anything else?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hospital",
+              "slot": "phone",
+              "value": "01223245151",
+              "start": 0,
+              "end": 11
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you that will do.",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "thank",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Feel better soon! Have a better night! ",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-8",
+    "original_id": "PMUL1170.json",
+    "domains": [
+      "attraction",
+      "train",
+      "general"
+    ],
+    "goal": {
+      "description": "You are planning your trip in Cambridge. You are looking for a <span class='emphasis'>train</span>. The train should depart from <span class='emphasis'>cambridge</span> and should leave on <span class='emphasis'>wednesday</span>. The train should <span class='emphasis'>leave after 12:45</span> and should go to <span class='emphasis'>peterborough</span>. Make sure you get <span class='emphasis'>train ID</span>, <span class='emphasis'>arrival time</span>, and <span class='emphasis'>price</span>. You are also looking for <span class='emphasis'>places to go</span> in town. The attraction should be in the <span class='emphasis'>centre</span> and should be in the type of <span class='emphasis'>museum</span>. Make sure you get <span class='emphasis'>address</span>, <span class='emphasis'>postcode</span>, and <span class='emphasis'>phone number</span>",
+      "inform": {
+        "attraction": {
+          "type": "museum",
+          "area": "centre"
+        },
+        "train": {
+          "leave at": "12:45",
+          "destination": "peterborough",
+          "day": "wednesday",
+          "departure": "cambridge"
+        }
+      },
+      "request": {
+        "attraction": {
+          "address": "",
+          "postcode": "",
+          "phone": ""
+        },
+        "train": {
+          "train id": "",
+          "arrive by": "",
+          "price": ""
+        }
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I need to take a train out of Cambridge, I will be leaving town on Wednesday.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "day",
+              "value": "wednesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "Cambridge",
+              "start": 30,
+              "end": 39
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "wednesday",
+            "arrive by": "",
+            "departure": "cambridge",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There are 5 trains out of Cambridge on Wednesday. Do you have a departure time in mind? ",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "day",
+              "value": "Wednesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "choice",
+              "value": "5",
+              "start": 10,
+              "end": 11
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "departure",
+              "value": "Cambridge",
+              "start": 26,
+              "end": 35
+            }
+          ],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "leave at",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I'd like to go to peterborough and leave after 12:45, I have to attend a meeting beforehand.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "destination",
+              "value": "peterborough",
+              "start": 18,
+              "end": 30
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "12:45",
+              "start": 47,
+              "end": 52
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "12:45",
+            "destination": "peterborough",
+            "day": "wednesday",
+            "arrive by": "",
+            "departure": "cambridge",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "TR1879 leaves at 13:06 on Wednesday.  Will that work for you?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "day",
+              "value": "Wednesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "13:06",
+              "start": 17,
+              "end": 22
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "train id",
+              "value": "TR1879",
+              "start": 0,
+              "end": 6
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "What is the price of the fair and could you tell me what is the arrival time into Peterborough?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "train",
+              "slot": "price",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "12:45",
+            "destination": "peterborough",
+            "day": "wednesday",
+            "arrive by": "",
+            "departure": "cambridge",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The price is 16.50 pounds and the train will arrive in Peterborough by 13:56 Wednesday.  Would you like me to book a ticket for you?",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "price",
+              "value": "16.50 pounds",
+              "start": 13,
+              "end": 25
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "destination",
+              "value": "Peterborough",
+              "start": 55,
+              "end": 67
+            },
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "arrive by",
+              "value": "13:56",
+              "start": 71,
+              "end": 76
+            }
+          ],
+          "binary": [
+            {
+              "intent": "offerbook",
+              "domain": "train",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, one ticket please, can I also get the reference number?",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "train",
+              "slot": "book people",
+              "value": "one",
+              "start": 5,
+              "end": 8
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "12:45",
+            "destination": "peterborough",
+            "day": "wednesday",
+            "arrive by": "",
+            "departure": "cambridge",
+            "book people": "1"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I booked you one seat on TR1879 departing Cambridge for Peterborough on Wednesday at 13:06, Reference: xu1qlhvw. Can I help further today?",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "day",
+              "value": "Wednesday"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "ref",
+              "value": "xu1qlhvw",
+              "start": 103,
+              "end": 111
+            },
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "departure",
+              "value": "Cambridge",
+              "start": 42,
+              "end": 51
+            },
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "book people",
+              "value": "one",
+              "start": 13,
+              "end": 16
+            },
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "train id",
+              "value": "TR1879",
+              "start": 25,
+              "end": 31
+            },
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "destination",
+              "value": "Peterborough",
+              "start": 56,
+              "end": 68
+            },
+            {
+              "intent": "offerbooked",
+              "domain": "train",
+              "slot": "leave at",
+              "value": "13:06",
+              "start": 85,
+              "end": 90
+            }
+          ],
+          "binary": [
+            {
+              "intent": "reqmore",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I am also looking for a museum in centre. Could you give me the address, postcode and phone number of one? ",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "area",
+              "value": "centre"
+            },
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "type",
+              "value": "museum"
+            }
+          ],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "attraction",
+              "slot": "address",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "attraction",
+              "slot": "postcode",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "attraction",
+              "slot": "phone",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "museum",
+            "name": "",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "12:45",
+            "destination": "peterborough",
+            "day": "wednesday",
+            "arrive by": "",
+            "departure": "cambridge",
+            "book people": "1"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The Broughton House Gallery is located at 98 King Street, postcode cb11ln. Their phone number is 01223314960. Is there anything else you need?",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "phone",
+              "value": "01223314960",
+              "start": 97,
+              "end": 108
+            },
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "address",
+              "value": "98 King Street",
+              "start": 42,
+              "end": 56
+            },
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "name",
+              "value": "Broughton House Gallery",
+              "start": 4,
+              "end": 27
+            },
+            {
+              "intent": "inform",
+              "domain": "attraction",
+              "slot": "postcode",
+              "value": "cb11ln",
+              "start": 67,
+              "end": 73
+            }
+          ],
+          "binary": [
+            {
+              "intent": "reqmore",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That's all I need right now. Thanks, you have been very helpful!",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "thank",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "museum",
+            "name": "",
+            "area": "centre"
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "12:45",
+            "destination": "peterborough",
+            "day": "wednesday",
+            "arrive by": "",
+            "departure": "cambridge",
+            "book people": "1"
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "You're welcome, I hope you enjoy your time in Cambridge!",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "welcome",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "multiwoz21",
+    "data_split": "train",
+    "dialogue_id": "multiwoz21-train-9",
+    "original_id": "SNG01741.json",
+    "domains": [
+      "hospital",
+      "general"
+    ],
+    "goal": {
+      "description": "You want to find a <span class='emphasis'>hospital</span> in town. The hospital should have the <span class='emphasis'>paediatric clinic</span> department. Make sure you get <span class='emphasis'>address</span>, <span class='emphasis'>postcode</span>, and <span class='emphasis'>phone number</span>",
+      "inform": {
+        "hospital": {
+          "department": "paediatric clinic"
+        }
+      },
+      "request": {
+        "hospital": {
+          "address": "",
+          "postcode": "",
+          "phone": ""
+        }
+      }
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I am looking in town  for a hospital with a paediatric clinic",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hospital",
+              "slot": "department",
+              "value": "paediatric clinic",
+              "start": 44,
+              "end": 61
+            }
+          ],
+          "binary": []
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Addenbrookes Hosptial on Hills Rd. in Cambridge has a paediatric clinic.",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "hospital",
+              "slot": "department",
+              "value": "paediatric clinic",
+              "start": 54,
+              "end": 71
+            }
+          ],
+          "binary": []
+        },
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I need the address and phone number and postal code",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "hospital",
+              "slot": "address",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "hospital",
+              "slot": "postcode",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "hospital",
+              "slot": "phone",
+              "value": ""
+            }
+          ]
+        },
+        "state": {
+          "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+          },
+          "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+          },
+          "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+          },
+          "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+          },
+          "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+          }
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Great. Thank you and goodbye.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "categorical": [],
+          "non-categorical": [],
+          "binary": [
+            {
+              "intent": "bye",
+              "domain": "general",
+              "slot": "",
+              "value": ""
+            }
+          ]
+        },
+        "db_results": {}
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/data/unified_datasets/multiwoz21/ontology.json b/data/unified_datasets/multiwoz21/ontology.json
deleted file mode 100644
index b976054f3b6dc47c327c75f545549dfe3563ad01..0000000000000000000000000000000000000000
--- a/data/unified_datasets/multiwoz21/ontology.json
+++ /dev/null
@@ -1,1895 +0,0 @@
-{
-    "domains": {
-        "taxi": {
-            "description": "taxi information query system",
-            "slots": {
-                "destination": {
-                    "description": "destination of taxi",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "departure": {
-                    "description": "departure location of taxi",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "leaveAt": {
-                    "description": "leaving time of taxi",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "arriveBy": {
-                    "description": "arrival time of taxi",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "taxi_phone": {
-                    "description": "taxi phone number",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "taxi_types": {
-                    "description": "taxi type",
-                    "is_categorical": false,
-                    "possible_values": []
-                }
-            }
-        },
-        "restaurant": {
-            "description": "restaurant information query system",
-            "slots": {
-                "food": {
-                    "description": "food type for the restaurant",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "name": {
-                    "description": "name of the restaurant",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "pricerange": {
-                    "description": "price budget for the restaurant",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "not moderate",
-                        "ch",
-                        "high - end",
-                        "luxury options",
-                        "priced cheaply",
-                        "moderate",
-                        "various",
-                        "all price ranges",
-                        "cheap price range",
-                        "low cost",
-                        "assorted",
-                        "cheap priced",
-                        "moderate or expensive priced",
-                        "expensive price",
-                        "your",
-                        "most expensive",
-                        "moderate and expensive",
-                        "reasonable",
-                        "moderately expensive",
-                        "moderate|cheap",
-                        "fairly expensive",
-                        "upscale",
-                        "quite inexpensive",
-                        "boderate",
-                        "affordable",
-                        "expinsive",
-                        "they vary",
-                        "more moderate",
-                        "expensive / upscale",
-                        "high class",
-                        "moderately price",
-                        "reasonably priced",
-                        "a little expensive but worth it",
-                        "middle",
-                        "any price point",
-                        "priced moderately",
-                        "cherap",
-                        "moderately prices",
-                        "cheap to expensive",
-                        "or otherwise",
-                        "inexpensive",
-                        "cheaply priced",
-                        "adforable",
-                        "that range",
-                        "great prices",
-                        "rather expensive",
-                        "expensive side",
-                        "moderate range",
-                        "cheaply - priced",
-                        "more expensive",
-                        "varying price",
-                        "similar price range",
-                        "this price range",
-                        "expensive",
-                        "expensive or moderate",
-                        "not cheap",
-                        "the least expensive",
-                        "pretty expensive",
-                        "high end",
-                        "not expensive",
-                        "less expensive",
-                        "moderatley priced",
-                        "most affordable price range",
-                        "budget - friendly",
-                        "expensive and moderately priced",
-                        "moderatre",
-                        "cheap range",
-                        "or the moderately priced",
-                        "fairly cheap",
-                        "not too expensive",
-                        "east",
-                        "fairly inexpensive",
-                        "regardless of price",
-                        "north",
-                        "mostly expensive and moderately priced",
-                        "cheap",
-                        "budget conscious",
-                        "same price range",
-                        "very expensive",
-                        "not too pricey",
-                        "any price range",
-                        "quite expensive",
-                        "that price range",
-                        "your price range",
-                        "every price point",
-                        "expensively priced",
-                        "varying price range",
-                        "not - so - expensive",
-                        "all",
-                        "vietnamese",
-                        "any",
-                        "moderately - priced",
-                        "that price",
-                        "moderate pricing",
-                        "do nt care",
-                        "modest",
-                        "pricey",
-                        "expensive but worth every penny",
-                        "cheaper",
-                        "pretty cheap",
-                        "moderate price",
-                        "ranging from cheap to expensive",
-                        "quite low",
-                        "moderate priced",
-                        "centre",
-                        "the same",
-                        "expensive range",
-                        "relatively cheap",
-                        "cheap or expensive",
-                        "epensive",
-                        "moderate and one in the cheap range",
-                        "budget friendly",
-                        "fine",
-                        "on the cheap side",
-                        "expensive price range",
-                        "mostly expensive",
-                        "moderately priced",
-                        "relatively expensive",
-                        "moderately",
-                        "moderatly",
-                        "on the pricey side",
-                        "low priced",
-                        "expensively",
-                        "moderate price range",
-                        "moderatly priced",
-                        "do n't care"
-                    ]
-                },
-                "address": {
-                    "description": "exact location of the restaurant",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "area": {
-                    "description": "area or place of the restaurant",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "near the centre",
-                        "east area",
-                        "northern parts of town",
-                        "any part of town",
-                        "west cambridge",
-                        "town of centre",
-                        "centre of cambridge",
-                        "north or centre",
-                        "westside",
-                        "city centre",
-                        "the west end",
-                        "the south of town",
-                        "the city center",
-                        "elsewhere in the city",
-                        "town center",
-                        "the west side",
-                        "south of cambridge",
-                        "south area of town",
-                        "here",
-                        "north side of town",
-                        "on the east",
-                        "throughout the city",
-                        "south area",
-                        "centre city",
-                        "city",
-                        "in the north",
-                        "not",
-                        "east side",
-                        "not in the west",
-                        "here in the city",
-                        "the south area of town",
-                        "that part of town",
-                        "the east",
-                        "west of town",
-                        "centere",
-                        "in the city .",
-                        "south part of time",
-                        "mexican",
-                        "the east side",
-                        "south part of town",
-                        "west part of town .",
-                        "southern",
-                        "any where in the city",
-                        "west area",
-                        "north cambridge",
-                        "the south area of the city",
-                        "almost every area of town",
-                        "ely",
-                        "the north end",
-                        "south cambridge",
-                        "the are",
-                        "east side of town",
-                        "southside",
-                        "east side of the city",
-                        "by the airport",
-                        "around there",
-                        "all of cambridge",
-                        "the town centre",
-                        "nearby",
-                        "town centre",
-                        "the center part of town",
-                        "other parts of town",
-                        "not in the south of town",
-                        "chesterton",
-                        "the centre of town",
-                        "east area of town",
-                        "the east area",
-                        "southend",
-                        "ctre",
-                        "same area",
-                        "anywhere in cambridge",
-                        "north side of cambridge",
-                        "same area as the park",
-                        "south side of town",
-                        "the centre area",
-                        "the same area as the botanic gardens",
-                        "south part of the city",
-                        "the area you have chosen",
-                        "in the centre",
-                        "northern part of cambridge",
-                        "east section",
-                        "east|south",
-                        "the east part of town",
-                        "this town",
-                        "the same area",
-                        "west area of town",
-                        "town centre area",
-                        "the southern area",
-                        "northern part",
-                        "southern area",
-                        "the east side of town",
-                        "expensive",
-                        "east section of town",
-                        "same",
-                        "in cambridge",
-                        "north side of chersteron",
-                        "towns centre",
-                        "in town",
-                        "west side",
-                        "in the east",
-                        "centrally",
-                        "west side area",
-                        "all over town",
-                        "centre region",
-                        "anywhere in town",
-                        "closely located",
-                        "west part of town",
-                        "cambridge",
-                        "downtown",
-                        "south end",
-                        "close it city centre",
-                        "in the city centre",
-                        "close to the hotel",
-                        "east",
-                        "north and west",
-                        "west end of town",
-                        "the south part of town",
-                        "the north side",
-                        "any area",
-                        "the area of west",
-                        "center of the town",
-                        "the area",
-                        "the centre part of town",
-                        "north",
-                        "wet part of town",
-                        "other part of the town",
-                        "cheap",
-                        "north part of town",
-                        "centre area of the town",
-                        "cetre",
-                        "in town at all",
-                        "central",
-                        "east part of town",
-                        "near the center of town",
-                        "the city centre",
-                        "north end",
-                        "east of town",
-                        "centreof",
-                        "west",
-                        "the north side of town",
-                        "in the west",
-                        "same side of town as your hotel",
-                        "the west of town",
-                        "centre area of town",
-                        "centrem",
-                        "east of cambridge",
-                        "center of town",
-                        "anywhere",
-                        "throughout the area",
-                        "central area",
-                        "south of town",
-                        "the west area",
-                        "the center of town",
-                        "centre part of town",
-                        "the center",
-                        "north side",
-                        "the south",
-                        "the west side of town",
-                        "west part of the city",
-                        "center",
-                        "any",
-                        "the north",
-                        "east end",
-                        "the west part of town",
-                        "west end",
-                        "center cambridge",
-                        "the centre area of town",
-                        "centre area",
-                        "northside",
-                        "centre area of the city",
-                        "center area of town",
-                        "centrally located",
-                        "the south side",
-                        "around the college",
-                        "do nt care",
-                        "thai",
-                        "the west",
-                        "south side",
-                        "cambridge centre",
-                        "town",
-                        "west of cambridge",
-                        "near clare hall",
-                        "south of town .",
-                        "n the centre",
-                        "centre of the city",
-                        "the north area",
-                        "that",
-                        "this area",
-                        "central region of town",
-                        "centre",
-                        "north of town",
-                        "these areas",
-                        "the same",
-                        "south part",
-                        "that area of town",
-                        "in the city",
-                        "that area",
-                        "city center",
-                        "south",
-                        "close to your location",
-                        "north area of town",
-                        "all over cambridge",
-                        "the south side of town",
-                        "within this area",
-                        "near centre",
-                        "the centre",
-                        "centre of town .",
-                        "the north part of town",
-                        "the north side .",
-                        "same area as the hotel",
-                        "and centre",
-                        "west side of town",
-                        "westies",
-                        "around town",
-                        "east part of tow",
-                        "eastside",
-                        "close to that area",
-                        "all over the city",
-                        "south side of the town",
-                        "centre cambridge",
-                        "do n't care",
-                        "north area",
-                        "centre of town"
-                    ]
-                },
-                "postcode": {
-                    "description": "postcode of the restaurant",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "phone": {
-                    "description": "restaurant phone number",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "people": {
-                    "description": "number of people booking the restaurant",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "time": {
-                    "description": "time of the restaurant booking",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "day": {
-                    "description": "day of the restaurant booking",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "saturday",
-                        "wednesday",
-                        "tuesday",
-                        "w",
-                        "saturday|thursday",
-                        "monday",
-                        "friday",
-                        "thursday",
-                        "sunday",
-                        "sunday|thursday"
-                    ]
-                },
-                "choice": {
-                    "description": "number of restaurants meeting requests of user",
-                    "is_categorical": false,
-                    "possible_values": []
-                }
-            }
-        },
-        "attraction": {
-            "description": "an entertainment that is offered to the public",
-            "slots": {
-                "address": {
-                    "description": "details of where the attraction is",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "postcode": {
-                    "description": "postcode of the attraction",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "phone": {
-                    "description": "phone number of the attraction",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "entrance fee": {
-                    "description": "the fee charged for admission to the attraction",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "type": {
-                    "description": "type of the attraction",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "area": {
-                    "description": "area or place of the attraction",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "east area",
-                        "near the centre",
-                        "west cambridge",
-                        "centre of cambridge",
-                        "other areas",
-                        "westside",
-                        "the west - side",
-                        "city centre",
-                        "central district",
-                        "near the restaurant",
-                        "whole of cambridge",
-                        "the west end",
-                        "entre",
-                        "various",
-                        "northern area",
-                        "town center",
-                        "west of your city",
-                        "the west side",
-                        "south of cambridge",
-                        "west part of cambridge",
-                        "norwich",
-                        "throughout the city",
-                        "centre city",
-                        "south area",
-                        "city",
-                        "very close in the same area",
-                        "centre by galleria",
-                        "east side",
-                        "northern",
-                        "that part of town",
-                        "the east",
-                        "same general area",
-                        "went side of town",
-                        "southern cambridge",
-                        "the east side",
-                        "south part of town",
-                        "in that area",
-                        "to the south",
-                        "clifton way",
-                        "there",
-                        "west area",
-                        "in the south",
-                        "center are",
-                        "south cambridge",
-                        "ely",
-                        "east side of town",
-                        "central cambridge",
-                        "south park of town",
-                        "the south area",
-                        "centre area of cambridge",
-                        "west area of the city",
-                        "several different parts of town",
-                        "cambridge 's centre",
-                        "nearby",
-                        "town centre",
-                        "the center part of town",
-                        "near the hotel",
-                        "museum",
-                        "the area you 're looking for",
-                        "other parts of town",
-                        "most of them are in the center",
-                        "the centre of town",
-                        "northern area of town",
-                        "east area of town",
-                        "north of the city",
-                        "different area",
-                        "same area",
-                        "east section",
-                        "south side of town",
-                        "the centre area",
-                        "in the centre",
-                        "in the center",
-                        "western part of town",
-                        "centre area .",
-                        "south part of cambridge",
-                        "the same road",
-                        "cetnre of town",
-                        "the same area",
-                        "town centre area",
-                        "the east part of town",
-                        "center area",
-                        "west area of town",
-                        "cenre",
-                        "center of town .",
-                        "cambridge leisure park",
-                        "church area",
-                        "that area .",
-                        "near ely",
-                        "in that side",
-                        "east cambridge",
-                        "same",
-                        "in cambridge",
-                        "towns centre",
-                        "that side of town",
-                        "another area",
-                        "in town",
-                        "west side",
-                        "west end of the city",
-                        "the centry area",
-                        "in the east",
-                        "we",
-                        "all over town",
-                        "all around the city",
-                        "city centre .",
-                        "center of cambridge",
-                        "centre region",
-                        "west part of town",
-                        "cambridge",
-                        "cent",
-                        "western part of the town",
-                        "downtown",
-                        "south end",
-                        "east",
-                        "this side of town",
-                        "same area as hotel",
-                        "center of the town",
-                        "west end of town",
-                        "the area",
-                        "eat",
-                        "northern cambridge",
-                        "north",
-                        "same part of town as your restaurant",
-                        "the centre part of town",
-                        "north part of town",
-                        "central",
-                        "close to the center of town",
-                        "east part of town",
-                        "same part",
-                        "western cambridge",
-                        "the city centre",
-                        "east of town",
-                        "west",
-                        "the eastside",
-                        "north in milton",
-                        "the west of town",
-                        "centre area of town",
-                        "ce",
-                        "east of cambridge",
-                        "the east of the town",
-                        "close to the restaurant",
-                        "the west area of town",
-                        "center of town",
-                        "the south near your hotel",
-                        "south of town",
-                        "the west area",
-                        "centre part of town",
-                        "the center",
-                        "north side",
-                        "north section of cambridge",
-                        "the north of the city",
-                        "all of the other areas",
-                        "the south",
-                        "all",
-                        "the west side of town",
-                        "west part of the city",
-                        "center",
-                        "the north",
-                        "your desired location",
-                        "wet end",
-                        "center part of town",
-                        "cb30aq",
-                        "west end",
-                        "in the area",
-                        "centre area",
-                        "centrally located",
-                        "the south side",
-                        "city 's centre",
-                        "do nt care",
-                        "the west",
-                        "east end of town",
-                        "every area except the north",
-                        "south side",
-                        "centre of the city",
-                        "that",
-                        "this area",
-                        "centre",
-                        "north of town",
-                        "right in the center of town",
-                        "city cenre",
-                        "centre of town ?",
-                        "that area",
-                        "city center",
-                        "south",
-                        "same area as tandoori palace",
-                        "centre|west",
-                        "central zone",
-                        "the centre",
-                        "the center area",
-                        "west side of town",
-                        "western area of town",
-                        "the center of the park",
-                        "west side of the city",
-                        "eastside",
-                        "northend",
-                        "the area you are looking for",
-                        "all over the city",
-                        "western",
-                        "on the centre",
-                        "museums",
-                        "north area",
-                        "centre of town",
-                        "center of the city"
-                    ]
-                },
-                "name": {
-                    "description": "name of the attraction",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "pricerange": {
-                    "description": "the price range for the attraction, from cheap to expensive",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "free",
-                        "no entrance fee",
-                        "entrance fee",
-                        "unaware of what their entrance fee is",
-                        "not listed",
-                        "cheap",
-                        "we do n't have any information",
-                        "2 pounds",
-                        "do n't see a price listed",
-                        "from free to 2 pounds 50",
-                        "4 pounds",
-                        "moderately priced",
-                        "neither prices are listed",
-                        "expensive",
-                        "5 pounds",
-                        "they do n't have the entrance fee posted",
-                        "free admission",
-                        "not sure of the fee",
-                        "5 pound entrance fee",
-                        "do n't have information",
-                        "3.50 pounds"
-                    ]
-                },
-                "choice": {
-                    "description": "number of attractions matching requests of user",
-                    "is_categorical": false,
-                    "possible_values": []
-                }
-            }
-        },
-        "booking": {
-            "description": "to arrange with a taxi, restaurant, train, etc.",
-            "slots": {
-                "time": {
-                    "description": "time for an order",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "day": {
-                    "description": "day for an order, from monday to sunday",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "saturday",
-                        "wednesday",
-                        "saturday night thru monday",
-                        "vmhj6y3i",
-                        "6",
-                        "weds",
-                        "tuesday through friday",
-                        "tuesday instead of thursday",
-                        "2",
-                        "that",
-                        "tues",
-                        "sunday 18/06/2017",
-                        "tuesday 's",
-                        "today",
-                        "tonight",
-                        "that time frame",
-                        "tuesday",
-                        "at that time",
-                        "1",
-                        "this evening",
-                        "sunday and monday",
-                        "the same day",
-                        "sundar",
-                        "monday",
-                        "friday",
-                        "thursday",
-                        "sunday",
-                        "we d"
-                    ]
-                },
-                "stay": {
-                    "description": "for how long the user wish to be at a place",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "people": {
-                    "description": "how many person the order is for",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "name": {
-                    "description": "name of the ordered place",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "Ref": {
-                    "description": "reference number of the order",
-                    "is_categorical": false,
-                    "possible_values": []
-                }
-            }
-        },
-        "train": {
-            "description": "query and order a train",
-            "slots": {
-                "destination": {
-                    "description": "destination of the train",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "arriveBy": {
-                    "description": "arrival time of the train",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "departure": {
-                    "description": "departure location of the train",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "duration": {
-                    "description": "the length of time the train trip lasts",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "people": {
-                    "description": "number of people booking for train",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "day": {
-                    "description": "day of the train",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "cambridge",
-                        "fr",
-                        "saturday",
-                        "wednesday",
-                        "13:07",
-                        "everday",
-                        "weds",
-                        "sat",
-                        "sundays",
-                        "train",
-                        "that",
-                        "between friday and wednesday",
-                        "all week",
-                        "this day",
-                        "every day",
-                        "tuesday",
-                        "saturdays",
-                        "tr2519",
-                        "every",
-                        "other days are available",
-                        "mondays",
-                        "we",
-                        "monday",
-                        "friday",
-                        "thursday",
-                        "frday",
-                        "sunday",
-                        "daily",
-                        "that day",
-                        "fiday"
-                    ]
-                },
-                "Ref": {
-                    "description": "reference number of the order",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "leaveAt": {
-                    "description": "leaving time for the train",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "price": {
-                    "description": "price for the train ticket",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "choice": {
-                    "description": "number of trains that meets requests of the user",
-                    "is_categorical": false,
-                    "possible_values": []
-                }
-            }
-        },
-        "hotel": {
-            "description": "to query hotel information and place an order",
-            "slots": {
-                "internet": {
-                    "description": "internet option at the hotel",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "free internet",
-                        "free",
-                        "y",
-                        "do nt care",
-                        "yes",
-                        "none",
-                        "no",
-                        "4"
-                    ]
-                },
-                "area": {
-                    "description": "area or place of the hotel",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "near the centre",
-                        "any part of town",
-                        "east area",
-                        "different parts of the city",
-                        "north end of the city",
-                        "centre of cambridge",
-                        "near the restaurant",
-                        "city centre",
-                        "throughout cambridge",
-                        "different part of town",
-                        "eastern part of the city",
-                        "the west end",
-                        "various",
-                        "northern area",
-                        "the northern part of town",
-                        "northern part of town",
-                        "the west side",
-                        "on the west",
-                        "south area of town",
-                        "centrally - located",
-                        "north side of town",
-                        "central location",
-                        "centra",
-                        "throughout the city",
-                        "not in the south",
-                        "south area",
-                        "centre city",
-                        "in the north",
-                        "east side",
-                        "northern side of town",
-                        "different parts of town",
-                        "you are interested in",
-                        "northern",
-                        "that part of town",
-                        "west of town",
-                        "the east",
-                        "all areas",
-                        "all parts of the city",
-                        "the east side",
-                        "south part of town",
-                        "south end of the city",
-                        "there",
-                        "west area",
-                        "north cambridge",
-                        "the north end",
-                        "south cambridge",
-                        "east side of town",
-                        "southside",
-                        "the south area",
-                        "or west ?",
-                        "another area of town",
-                        "all of cambridge",
-                        "the town centre",
-                        "east near other shops and boutiques",
-                        "town centre",
-                        "on the west side",
-                        "all over",
-                        "the centre of the city",
-                        "other parts of town",
-                        "the centre of town",
-                        "east area of town",
-                        "the east area",
-                        "the westside",
-                        "southend",
-                        "west|centre",
-                        "northe part of town",
-                        "anywhere in cambridge",
-                        "different area",
-                        "same area",
-                        "south side of town",
-                        "the centre area",
-                        "on the south",
-                        "in the centre",
-                        "in the center",
-                        "wast",
-                        "all across town",
-                        "south end of town",
-                        "except in the north",
-                        "and east",
-                        "place to be a guesthouse",
-                        "the same area",
-                        "other parts of the city",
-                        "the east side of town",
-                        "somewhere else",
-                        "and in the centre",
-                        "east section of town",
-                        "east cambridge",
-                        "across cambridge",
-                        "north of cambridge",
-                        "next door",
-                        "except in the east",
-                        "in cambridge",
-                        "north part of the city",
-                        "that side of town",
-                        "south cambridge area",
-                        "in town",
-                        "west side",
-                        "west end of the city",
-                        "we",
-                        "centrally",
-                        "west side near the restaurant",
-                        "all over town",
-                        "southern part of town",
-                        "all around the city",
-                        "west part of town",
-                        "cambridge",
-                        "downtown",
-                        "south end",
-                        "east",
-                        "east and the north .",
-                        "norht",
-                        "the north side",
-                        "any area",
-                        "center of the town",
-                        "the area",
-                        "eat",
-                        "northern cambridge",
-                        "north",
-                        "cheap",
-                        "north part of town",
-                        "centre part",
-                        "east part of town",
-                        "western cambridge",
-                        "north end of town",
-                        "north end",
-                        "east of town",
-                        "several areas of town",
-                        "west",
-                        "eastern",
-                        "in the west",
-                        "everywhere but the city centre",
-                        "centre area of town",
-                        "center of town",
-                        "west part",
-                        "the town center",
-                        "south of town",
-                        "the center of town",
-                        "the west area",
-                        "centre part of town",
-                        "nborth",
-                        "north side",
-                        "the north of the city",
-                        "the south",
-                        "west part of the city",
-                        "center",
-                        "the north",
-                        "west end",
-                        "same side of town",
-                        "in the area",
-                        "any part of the city",
-                        "centre area",
-                        "not to far from the restaurant",
-                        "northside",
-                        "on the eastside",
-                        "close to where you 'll be dining",
-                        "the east end of town",
-                        "various parts of the city",
-                        "west areas of town",
-                        "centrally located",
-                        "the south side",
-                        "north part of town .",
-                        "do nt care",
-                        "the west",
-                        "same area as the restaurant",
-                        "that vicinity",
-                        "nearby the restaurant",
-                        "south side",
-                        "east part of time",
-                        "centre of the city",
-                        "south closer to the museum",
-                        "north park of town",
-                        "centre",
-                        "north of town",
-                        "north and centre",
-                        "the same",
-                        "on the north",
-                        "that area of town",
-                        "that area",
-                        "in the city",
-                        "el shaddai",
-                        "city center",
-                        "south",
-                        "the city 's south side",
-                        "north area of town",
-                        "near the museum",
-                        "eastern cambridge",
-                        "near centre",
-                        "the easy",
-                        "a different area",
-                        "the centre",
-                        "the north part of town",
-                        "west side of town",
-                        "across town",
-                        "eastside",
-                        "northend",
-                        "north par of town",
-                        "the centre of cambridge",
-                        "all over the city",
-                        "north location",
-                        "centre cambridge",
-                        "that region",
-                        "north area",
-                        "centre of town"
-                    ]
-                },
-                "stars": {
-                    "description": "star rating of the hotel",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "4|5",
-                        "several",
-                        "0 to 4",
-                        "no star rating",
-                        "do nt care",
-                        "one",
-                        "does not show",
-                        "foru",
-                        "does not have",
-                        "different star ratings",
-                        "unrated",
-                        "2",
-                        "four starts",
-                        "4-star",
-                        "four - star",
-                        "3|4",
-                        "yes",
-                        "three",
-                        "four",
-                        "lower",
-                        "four stars",
-                        "zero",
-                        "ranging from 2 - 4 stars",
-                        "two",
-                        "1",
-                        "3",
-                        "four star",
-                        "0-star",
-                        "five",
-                        "drop the star rating",
-                        "2-star",
-                        "no",
-                        "3-star",
-                        "5-star",
-                        "0",
-                        "1-star",
-                        "not rated",
-                        "5",
-                        "not as fancy",
-                        "4"
-                    ]
-                },
-                "parking": {
-                    "description": "parking facility at the hotel",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "n",
-                        "free",
-                        "do nt care",
-                        "yes",
-                        "none",
-                        "no",
-                        "free parking"
-                    ]
-                },
-                "phone": {
-                    "description": "hotel phone number",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "name": {
-                    "description": "name of the hotel",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "pricerange": {
-                    "description": "price budget of the hotel",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "cheapest",
-                        "economically priced",
-                        "free",
-                        "all different price ranges",
-                        "more moderately priced",
-                        "expensively - priced",
-                        "ca n't view that information",
-                        "moderate",
-                        "super cheap",
-                        "low cost",
-                        "cheap price range",
-                        "lower",
-                        "affordable pricing",
-                        "moderate to cheap",
-                        "cheap priced",
-                        "inexpensively - priced",
-                        "mostly in the cheap to moderate price range",
-                        "moderately pricing",
-                        "guesthouses",
-                        "moderate|cheap",
-                        "moderately priceed",
-                        "very cheap",
-                        "even cheaper",
-                        "upscale",
-                        "other ranges",
-                        "moderate or cheap",
-                        "cheaply",
-                        "affordable",
-                        "different price range",
-                        "does not say",
-                        "moderately price",
-                        "expensive or cheap",
-                        "priced moderately",
-                        "moderatly price",
-                        "moderate price point",
-                        "moderately prices",
-                        "cheap to expensive",
-                        "on the more expensive side",
-                        "inexpensive",
-                        "the cheapest",
-                        "cheaply priced",
-                        "that range",
-                        "rather expensive",
-                        "your price",
-                        "moderate range",
-                        "cheaply - priced",
-                        "more expensive",
-                        "expensive",
-                        "much cheaper",
-                        "cheap side",
-                        "slightly more expensive",
-                        "$100",
-                        "cheaper than the others",
-                        "pretty expensive",
-                        "not expensive",
-                        "cheaply prices",
-                        "moderatley priced",
-                        "modrate",
-                        "cheap range",
-                        "espensive",
-                        "chear",
-                        "fairly cheap",
-                        "oderately priced",
-                        "moderate in price",
-                        "different",
-                        "very affordable",
-                        "your chosen",
-                        "unfortunately do not have the price",
-                        "north",
-                        "less costly",
-                        "different price ranges",
-                        "cheap",
-                        "very inexpensive",
-                        "2",
-                        "moderately priced .",
-                        "moderately to expensively priced",
-                        "economical",
-                        "same price range",
-                        "moderate to cheap range",
-                        "cheap to moderate",
-                        "quite expensive",
-                        "that price range",
-                        "cheap|moderate",
-                        "your price range",
-                        "varying price ranges",
-                        "expensive to moderate",
-                        "expensively priced",
-                        "epxensive",
-                        "or expensive ?",
-                        "all",
-                        "higher price range",
-                        "any",
-                        "moderately - priced",
-                        "hotel",
-                        "moderate pricing",
-                        "do nt care",
-                        "lower end",
-                        "quite cheap",
-                        "more budget - friendly",
-                        "cheaper",
-                        "fairly cheap compared to other hotels",
-                        "pretty cheap",
-                        "moderate price",
-                        "that",
-                        "moderate priced",
-                        "centre",
-                        "the same",
-                        "expensive range",
-                        "relatively cheap",
-                        "moderate prices",
-                        "hotels",
-                        "cheap>moderate",
-                        "a little pricey",
-                        "on the cheap side",
-                        "moderately - priced or cheap",
-                        "expensive price range",
-                        "moderately priced",
-                        "same price",
-                        "moderately",
-                        "budget - priced",
-                        "moderately pried",
-                        "moderate price range",
-                        "great",
-                        "moderatly priced",
-                        "extremely reasonable",
-                        "cheap or moderate",
-                        "cheaper side"
-                    ]
-                },
-                "people": {
-                    "description": "number of people for the hotel booking",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "postcode": {
-                    "description": "postcode of the hotel",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "address": {
-                    "description": "exact location of the hotel",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "type": {
-                    "description": "what is the type of the hotel",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "stay": {
-                    "description": "length of stay at the hotel",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "day": {
-                    "description": "day of the hotel booking",
-                    "is_categorical": true,
-                    "possible_values": [
-                        "next friday",
-                        "saturday",
-                        "wednesday",
-                        "tuesday",
-                        "saturday|tuesday",
-                        "t",
-                        "sunday>monday",
-                        "friday>tuesday",
-                        "monday",
-                        "friday",
-                        "thursday",
-                        "monday<thursday",
-                        "sunday",
-                        "wednesday|friday",
-                        "monda"
-                    ]
-                },
-                "choice": {
-                    "description": "number of hotels that meets requests of the user",
-                    "is_categorical": false,
-                    "possible_values": []
-                }
-            }
-        },
-        "police": {
-            "description": "find police stations",
-            "slots": {
-                "address": {
-                    "description": "exact location of the police station",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "postcode": {
-                    "description": "postcode of the police station",
-                    "is_categorical": false,
-                    "possible_values": []
-                },
-                "phone": {
-                    "description": "police station phone number",
-                    "is_categorical": false,
-                    "possible_values": []
-                }
-            }
-        }
-    },
-    "intents": {
-        "inform": {
-            "description": "inform user of value for a certain slot"
-        },
-        "request": {
-            "description": "ask for value of a slot"
-        },
-        "nobook": {
-            "description": "inform user of booking failure"
-        },
-        "reqmore": {
-            "description": "ask user for more instructions"
-        },
-        "book": {
-            "description": "place an order for user"
-        },
-        "bye": {
-            "description": "end a conversation and say goodbye to user"
-        },
-        "thank": {
-            "description": "express gratitude"
-        },
-        "welcome": {
-            "description": "welcome"
-        },
-        "recommend": {
-            "description": "recommend a choice for user request"
-        },
-        "offerbook": {
-            "description": "offer to place an order for user"
-        },
-        "offerbooked": {
-            "description": "inform user that an order is succussful"
-        },
-        "greet": {
-            "description": "express greeting"
-        },
-        "nooffer": {
-            "description": "inform user that no options matches user request"
-        },
-        "select": {
-            "description": "provide several choices for user to choose from"
-        }
-    },
-    "binary_dialogue_act": [
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "area",
-            "value": ""
-        },
-        {
-            "intent": "inform",
-            "domain": "booking",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "booking",
-            "slot": "stay",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "booking",
-            "slot": "day",
-            "value": ""
-        },
-        {
-            "intent": "reqmore",
-            "domain": "",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "bye",
-            "domain": "",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "thank",
-            "domain": "",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "welcome",
-            "domain": "",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "pricerange",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "leaveAt",
-            "value": ""
-        },
-        {
-            "intent": "offerbook",
-            "domain": "train",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "duration",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "price",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "departure",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "day",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "taxi",
-            "slot": "leaveAt",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "taxi",
-            "slot": "arriveBy",
-            "value": ""
-        },
-        {
-            "intent": "greet",
-            "domain": "",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "address",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "destination",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "arriveBy",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "internet",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "parking",
-            "value": ""
-        },
-        {
-            "intent": "inform",
-            "domain": "attraction",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "area",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "type",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "address",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "restaurant",
-            "slot": "food",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "restaurant",
-            "slot": "area",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "restaurant",
-            "slot": "phone",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "restaurant",
-            "slot": "postcode",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "restaurant",
-            "slot": "address",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "postcode",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "phone",
-            "value": ""
-        },
-        {
-            "intent": "nobook",
-            "domain": "booking",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "inform",
-            "domain": "train",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "people",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "booking",
-            "slot": "people",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "stars",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "type",
-            "value": ""
-        },
-        {
-            "intent": "select",
-            "domain": "hotel",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "postcode",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "entrance fee",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "restaurant",
-            "slot": "pricerange",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "train",
-            "slot": "Ref",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "booking",
-            "slot": "time",
-            "value": ""
-        },
-        {
-            "intent": "book",
-            "domain": "booking",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "phone",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "pricerange",
-            "value": ""
-        },
-        {
-            "intent": "inform",
-            "domain": "hotel",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "select",
-            "domain": "train",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "select",
-            "domain": "restaurant",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "inform",
-            "domain": "restaurant",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "inform",
-            "domain": "taxi",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "taxi",
-            "slot": "departure",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "restaurant",
-            "slot": "name",
-            "value": ""
-        },
-        {
-            "intent": "nooffer",
-            "domain": "attraction",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "taxi",
-            "slot": "destination",
-            "value": ""
-        },
-        {
-            "intent": "nooffer",
-            "domain": "hotel",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "select",
-            "domain": "attraction",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "taxi",
-            "slot": "taxi_phone",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "taxi",
-            "slot": "taxi_types",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "attraction",
-            "slot": "name",
-            "value": ""
-        },
-        {
-            "intent": "nooffer",
-            "domain": "restaurant",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "nooffer",
-            "domain": "train",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "request",
-            "domain": "hotel",
-            "slot": "name",
-            "value": ""
-        },
-        {
-            "intent": "recommend",
-            "domain": "hotel",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "recommend",
-            "domain": "attraction",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "offerbooked",
-            "domain": "train",
-            "slot": "",
-            "value": ""
-        },
-        {
-            "intent": "recommend",
-            "domain": "restaurant",
-            "slot": "",
-            "value": ""
-        }
-    ],
-    "state": {
-        "hotel": {
-            "name": "",
-            "area": "",
-            "parking": "",
-            "pricerange": "",
-            "stars": "",
-            "internet": "",
-            "type": "",
-            "stay": "",
-            "day": "",
-            "people": ""
-        },
-        "train": {
-            "leaveAt": "",
-            "destination": "",
-            "day": "",
-            "arriveBy": "",
-            "departure": "",
-            "people": ""
-        },
-        "taxi": {
-            "leaveAt": "",
-            "destination": "",
-            "departure": "",
-            "arriveBy": ""
-        },
-        "restaurant": {
-            "food": "",
-            "pricerange": "",
-            "name": "",
-            "area": "",
-            "time": "",
-            "day": "",
-            "people": ""
-        },
-        "attraction": {
-            "type": "",
-            "name": "",
-            "area": ""
-        }
-    }
-}
\ No newline at end of file
diff --git a/data/unified_datasets/multiwoz21/original_data.zip b/data/unified_datasets/multiwoz21/original_data.zip
deleted file mode 100644
index b27361772be980013a94c91898fb61e3e122ba8e..0000000000000000000000000000000000000000
Binary files a/data/unified_datasets/multiwoz21/original_data.zip and /dev/null differ
diff --git a/data/unified_datasets/multiwoz21/preprocess.py b/data/unified_datasets/multiwoz21/preprocess.py
index 5ca81e2e399d8a816e3be6d4ae33babfc2f1597e..19a1634a434bd7118a035d4474114d704ce1acd0 100644
--- a/data/unified_datasets/multiwoz21/preprocess.py
+++ b/data/unified_datasets/multiwoz21/preprocess.py
@@ -1,299 +1,609 @@
 import copy
 import re
-import zipfile
+from zipfile import ZipFile, ZIP_DEFLATED
+from shutil import copy2, rmtree
 import json
 import os
 from tqdm import tqdm
-import sys
-import difflib
-from fuzzywuzzy import fuzz
-sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
-
-from convlab2.util.file_util import read_zipped_json, write_zipped_json
-import logging
-
-
-logging.basicConfig(level=logging.INFO)
-self_dir = (os.path.abspath(os.getcwd()))
-
-REF_SYS_DA = {
-    'Attraction': {
-        'Addr': "address", 'Area': "area", 'Choice': "choice",
-        'Fee': "entrance fee", 'Name': "name", 'Phone': "phone",
-        'Post': "postcode", 'Price': "pricerange", 'Type': "type",
-        'none': None, 'Open': None
-    },
-    'Hospital': {
-        'Department': 'department', 'Addr': 'address', 'Post': 'postcode',
-        'Phone': 'phone', 'none': None
-    },
-    'Booking': {
-        'Day': 'day', 'Name': 'name', 'People': 'people',
-        'Ref': 'Ref', 'Stay': 'stay', 'Time': 'time',
-        'none': None
-    },
-    'Hotel': {
-        'Addr': "address", 'Area': "area", 'Choice': "choice",
-        'Internet': "internet", 'Name': "name", 'Parking': "parking",
-        'Phone': "phone", 'Post': "postcode", 'Price': "pricerange",
-        'Stars': "stars", 'Type': "type", 'Stay': 'stay', 'Day': 'day', 'People': 'people',
-        'none': None
-    },
-    'Restaurant': {
-        'Addr': "address", 'Area': "area", 'Choice': "choice",
-        'Name': "name", 'Food': "food", 'Phone': "phone",
-        'Post': "postcode", 'Price': "pricerange",
-        'Time': 'time', 'Day': 'day', 'People': 'people',
-        'none': None
-    },
-    'Taxi': {
-        'Arrive': "arriveBy", 'Car': "taxi_types", 'Depart': "departure",
-        'Dest': "destination", 'Leave': "leaveAt", 'Phone': "taxi_phone",
-        'none': None
-    },
-    'Train': {
-        'Arrive': "arriveBy", 'Choice': "choice", 'Day': "day",
-        'Depart': "departure", 'Dest': "destination",
-        'Leave': "leaveAt", 'People': "people", 'Ref': "Ref",
-        'Time': "duration", 'none': None, 'Ticket': 'price',
-    },
-    'Police': {
-        'Addr': "address", 'Post': "postcode", 'Phone': "phone", 'none': None
-    },
-}
-
-# taxi restaurant attraction train
-slot_to_type = {
-    'taxi-destination': 'non',
-    'taxi-departure': 'non',
-    'taxi-leaveAt': 'non',
-    'taxi-arriveBy': 'non',
-    'restaurant-food': 'non',
-    'restaurant-name': 'non',
-    'attraction-address': 'non',
-    'attraction-postcode': 'non',
-    'restaurant-pricerange': 'cat',
-    'restaurant-address': 'non',
-    'restaurant-area': 'cat',
-    'restaurant-postcode': 'non',
-    'attraction-phone': 'non',
-    'attraction-entrance fee': 'non',
-    'booking-time': 'non',
-    'booking-day': 'cat',
-    'attraction-type': 'non',
-    'attraction-area': 'cat',
-    'train-destination': 'non',
-    'train-arriveBy': 'non',
-    'train-departure': 'non',
-    'hotel-internet': 'cat',
-    'hotel-area': 'cat',
-    'booking-stay': 'non',
-    'booking-people': 'non',
-    'train-duration': 'non',
-    'train-people': 'non',
-    'train-day': 'cat',
-    'train-Ref': 'non',
-    'hotel-stars': 'cat',
-    'train-leaveAt': 'non',
-    'train-price': 'non',
-    'hotel-parking': 'cat',
-    'hotel-phone': 'non',
-    'hotel-name': 'non',
-    'hotel-pricerange': 'cat',
-    'hotel-people': 'non',
-    'restaurant-phone': 'non',
-    'hotel-postcode': 'non',
-    'hotel-address': 'non',
-    'attraction-name': 'non',
-    'hotel-type': 'non',
-    'restaurant-people': 'non',
-    'train-choice': 'non',
-    'attraction-pricerange': 'cat',
-    'hotel-stay': 'non',
-    'booking-name': 'non',
-    'booking-Ref': 'non',
-    'restaurant-time': 'non',
-    'restaurant-day': 'cat',
-    'hotel-day': 'cat',
-    'hotel-choice': 'non',
-    'restaurant-choice': 'non',
-    'attraction-choice': 'non',
-    'taxi-taxi_phone': 'non',
-    'taxi-taxi_types': 'non',
-    'police-address': 'non',
-    'police-postcode': 'non',
-    'police-phone': 'non'
-}
-
-state_cat_slot_value_dict = {
-    "hotel-pricerange": {
-        "cheap": 735,
-        "moderate": 1063,
-        "expensive": 594,
-    },
-    "hotel-parking": {
-        "yes": 1809,
-        "no": 126,
-        "free": 4,
-    },
-    "hotel-day": {
-        "tuesday": 385,
-        "wednesday": 410,
-        "monday": 365,
-        "saturday": 407,
-        "friday": 393,
-        "thursday": 384,
-        "sunday": 369,
-    },
-    "train-day": {
-        "wednesday": 533,
-        "monday": 533,
-        "saturday": 543,
-        "thursday": 547,
-        "friday": 563,
-        "tuesday": 553,
-        "sunday": 613,
-    },
-    "hotel-stars": {
-        "4": 1263,
-        "2": 193,
-        "0": 201,
-        "3": 401,
-        "5": 45,
-        "1": 45,
-    },
-    "hotel-internet": {
-        "yes": 1841,
-        "no": 79,
-        "free": 2
-    },
-    "hotel-area": {
-        "east": 416,
-        "north": 717,
-        "centre": 538,
-        "south": 289,
-        "west": 316,
-    },
-    "attraction-area": {
-        "centre": 1290,
-        "west": 332,
-        "north": 155,
-        "south": 240,
-        "east": 272,
-    },
-    "restaurant-pricerange": {
-        "expensive": 1477,
-        "cheap": 758,
-        "moderate": 1028,
+from collections import Counter
+from pprint import pprint
+from nltk.tokenize import TreebankWordTokenizer, PunktSentenceTokenizer
+
+init_ontology = {
+    "domains": { # descriptions are adapted from multiwoz22, but is_categorical may be different
+        "attraction": {
+            "description": "find an attraction",
+            "slots": {
+                "area": {
+                    "description": "area to search for attractions",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "centre",
+                        "east",
+                        "north",
+                        "south",
+                        "west"
+                    ]
+                },
+                "name": {
+                    "description": "name of the attraction",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "type": {
+                    "description": "type of the attraction",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "architecture",
+                        "boat",
+                        "cinema",
+                        "college",
+                        "concerthall",
+                        "entertainment",
+                        "museum",
+                        "multiple sports",
+                        "nightclub",
+                        "park",
+                        "swimmingpool",
+                        "theatre"
+                    ]
+                },
+                "entrance fee": {
+                    "description": "how much is the entrance fee",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "open hours": {
+                    "description": "open hours of the attraction",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "address": {
+                    "description": "address of the attraction",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "phone": {
+                    "description": "phone number of the attraction",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "postcode": {
+                    "description": "postcode of the attraction",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "choice": {
+                    "description": "number of attractions that meet the requirement",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "hotel": {
+            "description": "find and book a hotel",
+            "slots": {
+                "internet": {
+                    "description": "whether the hotel has internet",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "free",
+                        "no",
+                        "yes"
+                    ]
+                },
+                "parking": {
+                    "description": "whether the hotel has parking",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "free",
+                        "no",
+                        "yes"
+                    ]
+                },
+                "area": {
+                    "description": "area or place of the hotel",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "centre",
+                        "east",
+                        "north",
+                        "south",
+                        "west"
+                    ]
+                },
+                "stars": {
+                    "description": "star rating of the hotel",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "0",
+                        "1",
+                        "2",
+                        "3",
+                        "4",
+                        "5"
+                    ]
+                },
+                "price range": {
+                    "description": "price budget of the hotel",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "expensive",
+                        "cheap",
+                        "moderate"
+                    ]
+                },
+                "type": {
+                    "description": "what is the type of the hotel",
+                    "is_categorical": False,
+                    "possible_values": [
+                        "guesthouse",
+                        "hotel"
+                    ]
+                },
+                "name": {
+                    "description": "name of the hotel",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book people": {
+                    "description": "number of people for the hotel booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book stay": {
+                    "description": "length of stay at the hotel",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book day": {
+                    "description": "day of the hotel booking",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "monday",
+                        "tuesday",
+                        "wednesday",
+                        "thursday",
+                        "friday",
+                        "saturday",
+                        "sunday"
+                    ]
+                },
+                "phone": {
+                    "description": "phone number of the hotel",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "postcode": {
+                    "description": "postcode of the hotel",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "address": {
+                    "description": "address of the hotel",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "ref": {
+                    "description": "reference number of the hotel booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "choice": {
+                    "description": "number of hotels that meet the requirement",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "taxi": {
+            "description": "rent taxi to travel",
+            "slots": {
+                "destination": {
+                    "description": "destination of taxi",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "departure": {
+                    "description": "departure location of taxi",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "leave at": {
+                    "description": "leaving time of taxi",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "arrive by": {
+                    "description": "arrival time of taxi",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "phone": {
+                    "description": "phone number of the taxi",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "type": {
+                    "description": "car type of the taxi",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "restaurant": {
+            "description": "find and book a restaurant",
+            "slots": {
+                "price range": {
+                    "description": "price budget for the restaurant",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "cheap",
+                        "expensive",
+                        "moderate"
+                    ]
+                },
+                "area": {
+                    "description": "area or place of the restaurant",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "centre",
+                        "east",
+                        "north",
+                        "south",
+                        "west"
+                    ]
+                },
+                "food": {
+                    "description": "the cuisine of the restaurant",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "name": {
+                    "description": "name of the restaurant",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "address": {
+                    "description": "address of the restaurant",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "postcode": {
+                    "description": "postcode of the restaurant",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "phone": {
+                    "description": "phone number of the restaurant",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book people": {
+                    "description": "number of people for the restaurant booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book time": {
+                    "description": "time of the restaurant booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book day": {
+                    "description": "day of the restaurant booking",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "monday",
+                        "tuesday",
+                        "wednesday",
+                        "thursday",
+                        "friday",
+                        "saturday",
+                        "sunday"
+                    ]
+                },
+                "ref": {
+                    "description": "reference number of the restaurant booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "choice": {
+                    "description": "number of restaurants that meet the requirement",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "train": {
+            "description": "find a train to travel",
+            "slots": {
+                "destination": {
+                    "description": "destination of the train",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "arrive by": {
+                    "description": "arrival time of the train",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "departure": {
+                    "description": "departure location of the train",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "leave at": {
+                    "description": "leaving time for the train",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "duration": {
+                    "description": "duration of the travel",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book people": {
+                    "description": "number of people booking for train",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "day": {
+                    "description": "day of the train",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "monday",
+                        "tuesday",
+                        "wednesday",
+                        "thursday",
+                        "friday",
+                        "saturday",
+                        "sunday"
+                    ]
+                },
+                "ref": {
+                    "description": "reference number of the train booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "price": {
+                    "description": "price of the train ticket",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "train id": {
+                    "description": "id of the train",
+                    "is_categorical": False
+                },
+                "choice": {
+                    "description": "number of trains that meet the requirement",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "police": {
+            "description": "find a police station for help",
+            "slots": {
+                "name": {
+                    "description": "name of the police station",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "address": {
+                    "description": "address of the police station",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "postcode": {
+                    "description": "postcode of the police station",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "phone": {
+                    "description": "phone number of the police station",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "hospital": {
+            "description": "find a hospital for help",
+            "slots": {
+                "department": {
+                    "description": "specific department of the hospital",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "address": {
+                    "description": "address of the hospital",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "phone": {
+                    "description": "phone number of the hospital",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "postcode": {
+                    "description": "postcode of the hospital",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "booking": {
+            "description": "booking for taxi, restaurant, hotel, train, etc.",
+            "slots":{
+                "day": {
+                    "description": "day of the booking",
+                    "is_categorical": True,
+                    "possible_values": [
+                        "monday",
+                        "tuesday",
+                        "wednesday",
+                        "thursday",
+                        "friday",
+                        "saturday",
+                        "sunday"
+                    ]
+                },
+                "time": {
+                    "description": "time of the booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book people": {
+                    "description": "number of people for the booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "book stay": {
+                    "description": "length of stay at the hotel",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "name": {
+                    "description": "name of the booked entity",
+                    "is_categorical": False,
+                    "possible_values": []
+                },
+                "ref": {
+                    "description": "reference number of the booking",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+            }
+        },
+        "general":{
+            "description": "general domain without slots",
+            "slots": {}
+        }
     },
-    "restaurant-area": {
-        "centre": 1745,
-        "south": 398,
-        "north": 390,
-        "east": 360,
-        "west": 423,
+    "intents": {
+        "inform": {
+            "description": "inform the value of a slot"
+        },
+        "request": {
+            "description": "ask for the value of a slot"
+        },
+        "nobook": {
+            "description": "inform the user that the booking is failed"
+        },
+        "reqmore": {
+            "description": "ask the user for more instructions"
+        },
+        "book": {
+            "description": "book something for the user"
+        },
+        "bye": {
+            "description": "say goodbye to the user and end the conversation"
+        },
+        "thank": {
+            "description": "thanks for the help"
+        },
+        "welcome": {
+            "description": "you're welcome"
+        },
+        "greet": {
+            "description": "express greeting"
+        },
+        "recommend": {
+            "description": "recommend a choice to the user"
+        },
+        "select": {
+            "description": "provide several choices for the user"
+        },
+        "offerbook": {
+            "description": "ask the user if he or she needs booking"
+        },
+        "offerbooked": {
+            "description": "provide information about the booking"
+        },
+        "nooffer": {
+            "description": "inform the user that there is no result satisfies user requirements"
+        }
     },
-    "restaurant-day": {
-        "thursday": 362,
-        "wednesday": 412,
-        "friday": 395,
-        "monday": 383,
-        "sunday": 399,
-        "saturday": 421,
-        "tuesday": 350,
+    "binary_dialogue_acts": set(), # from data
+    "state": {
+        "attraction": {
+            "type": "",
+            "name": "",
+            "area": ""
+        },
+        "hotel": {
+            "name": "",
+            "area": "",
+            "parking": "",
+            "price range": "",
+            "stars": "",
+            "internet": "",
+            "type": "",
+            "book stay": "",
+            "book day": "",
+            "book people": ""
+        },
+        "restaurant": {
+            "food": "",
+            "price range": "",
+            "name": "",
+            "area": "",
+            "book time": "",
+            "book day": "",
+            "book people": ""
+        },
+        "taxi": {
+            "leave at": "",
+            "destination": "",
+            "departure": "",
+            "arrive by": ""
+        },
+        "train": {
+            "leave at": "",
+            "destination": "",
+            "day": "",
+            "arrive by": "",
+            "departure": "",
+            "book people": ""
+        }
     }
 }
 
-
-synonyms = [
-    ["el shaddia guesthouse", "el shaddai"],
-    [ "peterborough", "peterbourgh"],
-    ["night club", "nightclub", 'nightclubs'],
-    ["boat", "boating"],
-    ["portugese", "portuguese"],
-    ["guesthouse", "guest house"],
-    ["seafood", "sea food"],
-    ["christ 's college", "christ college"],
-    ["huntingdon marriott hotel"]
-]
-
-state_cat_slot_ds = [k for k, v in slot_to_type.items() if v == 'cat']
-
-da_cat_slot_values = {
-    # 'hotel-stay': ['1', '2', '3', '4', '5'],
-    'hotel-internet': ['free', 'no', 'none', 'yes'],
-    'hotel-parking': ['free', 'no', 'none', 'yes']
-}
-
-state_cat_slot_values = {}
-
-multiwoz_desc = {
-    'taxi': {
-        'domain': 'taxi information query system',
-        'taxi_phone': 'taxi phone number',
-        'taxi_types': 'taxi type',
-    },
-    'restaurant': {
-        'domain': 'restaurant information query system',
-        'address': 'exact location of the restaurant',
-        'postcode': 'postcode of the restaurant',
-        'phone': 'restaurant phone number',
-        'choice': 'number of restaurants meeting requests of user',
-    },
+slot_name_map = {
+    'addr': "address", 
+    'post': "postcode",
+    'pricerange': "price range",
+    'arrive': "arrive by",
+    'arriveby': "arrive by",
+    'leave': "leave at",
+    'leaveat': "leave at",
+    'depart': "departure",
+    'dest': "destination",
+    'fee': "entrance fee", 
+    'open': 'open hours',
+    'car': "type",
+    'car type': "type",
+    'ticket': 'price', 
+    'trainid': 'train id',
+    'id': 'train id',
+    'people': 'book people',
+    'stay': 'book stay',
+    'none': '',
     'attraction': {
-        'domain': 'an entertainment that is offered to the public',
-        'address': 'details of where the attraction is',
-        'postcode': 'postcode of the attraction',
-        'phone': 'phone number of the attraction',
-        'entrance fee': 'the fee charged for admission to the attraction',
-        'pricerange': 'the price range for the attraction, from cheap to expensive',
-        'choice': 'number of attractions matching requests of user'
-    },
-    'booking': {
-        'domain': 'to arrange with a taxi, restaurant, train, etc.',
-        'time': 'time for an order',
-        'day': 'day for an order, from monday to sunday',
-        'stay': 'for how long the user wish to be at a place',
-        'people': 'how many person the order is for',
-        'name': 'name of the ordered place',
-        'Ref': 'reference number of the order'
-    },
-    'train': {
-        'domain': 'query and order a train',
-        'duration': 'the length of time the train trip lasts',
-        'Ref': 'reference number of the order',
-        'price': 'price for the train ticket',
-        'choice': 'number of trains that meets requests of the user',
+        'price': 'entrance fee'
     },
+    'hospital': {},
     'hotel': {
-        'domain': 'to query hotel information and place an order',
-        'address': 'exact location of the hotel',
-        'postcode': 'postcode of the hotel',
-        'phone': 'hotel phone number',
-        'choice': 'number of hotels that meets requests of the user',
+        'day': 'book day', 'price': "price range"
     },
-    'police': {
-        'domain': 'find police stations',
-        'address': 'exact location of the police station',
-        'postcode': 'postcode of the police station',
-        'phone': 'police station phone number',
+    'restaurant': {
+        'day': 'book day', 'time': 'book time', 'price': "price range"
     },
-    'intents': {
-        'inform': 'inform user of value for a certain slot',
-        'request': 'ask for value of a slot',
-        'nobook': 'inform user of booking failure',
-        'reqmore': 'ask user for more instructions',
-        'book': 'place an order for user',
-        'bye': 'end a conversation and say goodbye to user',
-        'thank': 'express gratitude',
-        'welcome': 'welcome',
-        'offerbooked': 'inform user that an order is succussful',
-        'recommend': 'recommend a choice for user request',
-        'greet': 'express greeting',
-        'nooffer': 'inform user that no options matches user request',
-        'offerbook': 'offer to place an order for user',
-        'select': 'provide several choices for user to choose from',
-    }
+    'taxi': {},
+    'train': {
+        'day': 'day', 'time': "duration"
+    },
+    'police': {},
+    'booking': {}
 }
 
 digit2word = {
@@ -301,1131 +611,281 @@ digit2word = {
     '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine', '10': 'ten'
 }
 
-
-def pharse_in_sen(phrase, sen):
-    '''
-    match value in the sentence
-    :param phrase: str
-    :param sen: str
-    :return: start, end if matched, else None, None
-    '''
-    assert isinstance(phrase, str)
-    pw = '(^|[\s,\.:\?!-])(?P<v>{})([\s,\.:\?!-]|$)'
-    pn = '(^|[\s\?!-]|\D[,\.:])(?P<v>{})($|[\s\?!-]|[,\.:]\D|[,\.:]$)'
-
-    if phrase.isdigit() and phrase in digit2word:
-        phrase = digit2word[phrase]
-        p = re.compile(pw.format(re.escape(phrase)), re.I)
-        m = re.search(p, sen)
-        if m:
-            num = len(re.findall(p, sen))
-            # if num > 1:
-            #     match['>1'] += 1
-            # else:
-            #     match['1'] += 1
-            return m.span('v'), num
-    # match['0'] += 1
-    if phrase.isdigit():
-        pattern = pn
-    else:
-        pattern = pw
-    p = re.compile(pattern.format(re.escape(phrase)), re.I)
-    m = re.search(p, sen)
-    if m:
-        num = len(re.findall(p, sen))
-        # if num > 1:
-        #     match['>1'] += 1
-        # else:
-        #     match['1'] += 1
-        return m.span('v'), num
-    return (None, None), 0
-
-
-
-
-
-def update_state(state, update):
-    # print('======================')
-    # print(state)
-    # print(update)
-    # print('======================')
-
-    for service, service_update in update.items():
-        if service not in state:
-            state[service] = copy.deepcopy(service_update)
+cnt_domain_slot = Counter()
+
+def normalize_domain_slot_value(domain, slot, value):
+    global init_ontology, slot_name_map
+    domain = domain.lower()
+    slot = slot.lower()
+    value = value.strip()
+    if value in ['do nt care', "do n't care"]:
+        value = 'dontcare'
+    if value in ['?', 'none', 'not mentioned']:
+        value = ""
+    if domain not in init_ontology['domains']:
+        raise Exception(f'{domain} not in ontology')
+    if slot not in init_ontology['domains'][domain]['slots']:
+        if slot in slot_name_map:
+            slot = slot_name_map[slot]
+        elif slot in slot_name_map[domain]:
+            slot = slot_name_map[domain][slot]
         else:
-            state[service].update(update[service])
+            raise Exception(f'{domain}-{slot} not in ontology')
+    assert slot=='' or slot in init_ontology['domains'][domain]['slots'], f'{(domain, slot, value)} not in ontology'
+    return domain, slot, value
 
-
-def convert_da(utt, da_dict, binary_ont, intent_ont, did, tid, da_cat_slot_values):
+def convert_da(da_dict, utt, sent_tokenizer, word_tokenizer):
     '''
-     convert multiwoz dialogue acts to required format
+    convert multiwoz dialogue acts to required format and update ontology
+    :param da_dict: dict[(intent, domain, slot, value)] = [word_start, word_end]
     :param utt: user or system utt
-    :param da_dict: multiwoz da
-    :param binary_ont: binary ontology
-    :param intent_ont: intent ontology
-    :return:
     '''
+    global init_ontology, digit2word, cnt_domain_slot
+
     converted_da = {
         'categorical': [],
         'non-categorical': [],
         'binary': []
     }
-
-    for Domain_Act, S, v in da_dict:
-        Domain, Act = Domain_Act.split('-')
-        if Domain.lower() in ['police', 'hospital', 'bus']:
-            continue
-
-        if Act.lower() not in intent_ont:
-            intent_ont[Act.lower()] = {}
-
-        # general domain is converted to empty domain. e.g. thank, bye
-        if Domain == 'general':
-            assert S == 'none'
-            assert v == 'none'
-            converted_dict = {
-                'intent': Act.lower(),
-                'domain': '',
-                'slot': '',
-                'value': ''
-            }
-            converted_da['binary'].append(converted_dict)
-
-            if converted_dict not in binary_ont:
-                binary_ont.append(converted_dict)
-            continue
-
-
-
-        try:
-            reformated_slot = REF_SYS_DA[Domain][S]
-        except:
-            # print('44444444444444444444444444444444')
-            # print(Domain, S)
-            # logging.info('slot not in REF_SYS_DA, drop')
-            continue
-
-        # if slot is None, da should be converted into binary
-        if reformated_slot is None:
-            if not (S == 'none' and v == 'none'):
-                # mainly for `Open` slot
-                # print('11111111111111111111')
-                # print(Domain_Act, S, v)
-                continue
-            # Booking-Inform none none
-            # Police-Inform none none
-            # Train-OfferBook none none
-            converted_dict = {
-                'intent': Act.lower(),
-                'domain': Domain.lower(),
-                'slot': '',
-                'value': ''
-            }
-            converted_da['binary'].append(converted_dict)
-            if converted_dict not in binary_ont:
-                binary_ont.append(converted_dict)
-            continue
-
-        reformated_domain_slot = Domain.lower() + '-' + reformated_slot
-
-        if Act.lower() == 'request':
-            converted_dict = {
-                'intent': 'request',
-                'domain': Domain.lower(),
-                'slot': reformated_slot,
-                'value': ''
-            }
-            converted_da['binary'].append(converted_dict)
-
-            if converted_dict not in binary_ont:
-                binary_ont.append(converted_dict)
-            continue
-
-        # vs = da_dict[(Domain_Act, S)]['values']
-
-        if reformated_domain_slot in slot_to_type and slot_to_type[reformated_domain_slot] == 'cat':
-            origin_v = v
-            v = v.lower()
-            # if reformated_domain_slot in cat_slot_proj:
-            #     v = cat_slot_proj[reformated_domain_slot][v]
-            if reformated_domain_slot not in da_cat_slot_values:
-                da_cat_slot_values[reformated_domain_slot] = []
-            # if v not in cat_slot_values[reformated_domain_slot]:
-            da_cat_slot_values[reformated_domain_slot].append(v)
+    sentences = sent_tokenizer.tokenize(utt)
+    sent_spans = sent_tokenizer.span_tokenize(utt)
+    tokens = [token for sent in sentences for token in word_tokenizer.tokenize(sent)]
+    token_spans = [(sent_span[0]+token_span[0], sent_span[0]+token_span[1]) for sent, sent_span in zip(sentences, sent_spans) for token_span in word_tokenizer.span_tokenize(sent)]
+    # assert len(tokens) == len(token_spans)
+    # for token, span in zip(tokens, token_spans):
+    #     if utt[span[0]:span[1]] != '"':
+    #         assert utt[span[0]:span[1]] == token
+
+    for (intent, domain, slot, value), span in da_dict.items():
+        if intent == 'request' or slot == '' or value == '':
+            # binary dialog acts
+            init_ontology['binary_dialogue_acts'].add((intent, domain, slot, value,))
+            converted_da['binary'].append({
+                'intent': intent,
+                'domain': domain,
+                'slot': slot,
+                'value': value
+            })
+        elif init_ontology['domains'][domain]['slots'][slot]['is_categorical']:
+            # categorical dialog acts
             converted_da['categorical'].append({
-                'intent': Act.lower(),
-                'domain': Domain.lower(),
-                'slot': reformated_slot,
-                'value': v
+                'intent': intent,
+                'domain': domain,
+                'slot': slot,
+                'value': value
             })
-            if 'start_word' in da_dict[(Domain_Act, S, origin_v)]:
-                start_ws = da_dict[(Domain_Act, S, origin_v)]['start_word']
-                end_ws = da_dict[(Domain_Act, S, origin_v)]['end_word']
-                utt_list = utt.split()
-                for start_w, end_w in zip(start_ws, end_ws):
-                    if start_w > len(utt_list) or end_w > len(utt_list):
-                        continue
-                    start_ch = 0
-                    for i in range(start_w):
-                        start_ch += len(utt_list[i]) + 1
-                    end_ch = start_ch
-                    for i in range(start_w, end_w):
-                        end_ch += len(utt_list[i]) + 1
-                    try:
-                        end_ch += len(utt_list[end_w])
-                    except:
-                        print(utt_list, start_w, end_w)
-                    if not utt[start_ch: end_ch] == origin_v:
-                        # print('2222222222222222222222222')
-                        # print('\n'.join([v, utt[start_ch: end_ch - 1]]))
-                        continue
-
-                    else:
-                        converted_da['categorical'][-1].update({
-                            'start': start_ch,
-                            'end': end_ch
-                        })
-                        break
-
         else:
-            if 'start_word' not in da_dict[(Domain_Act, S, v)]:
-                # todo no span annotation
-                converted_da['non-categorical'].append({
-                    'intent': Act.lower(),
-                    'domain': Domain.lower(),
-                    'slot': reformated_slot,
-                    'value': v
-                })
-                continue
-
-            start_ws = da_dict[(Domain_Act, S, v)]['start_word']
-            end_ws = da_dict[(Domain_Act, S, v)]['end_word']
-            utt_list = utt.split()
-            found = True
-            for start_w, end_w in zip(start_ws, end_ws):
-                if start_w > len(utt_list) or end_w > len(utt_list):
-                    continue
-                start_ch = 0
-                for i in range(start_w):
-                    start_ch += len(utt_list[i]) + 1
-                end_ch = start_ch
-                for i in range(start_w, end_w):
-                    end_ch += len(utt_list[i]) + 1
-                try:
-                    end_ch += len(utt_list[end_w])
-                except:
-                    print(utt_list, start_w, end_w, v)
-                if not utt[start_ch: end_ch] == v:
-                    # print('2222222222222222222222222')
-                    # print('\n'.join([v, utt[start_ch: end_ch - 1]]))
-                    continue
-
+            # non-categorical dialog acts
+            converted_da['non-categorical'].append({
+                'intent': intent,
+                'domain': domain,
+                'slot': slot,
+                'value': value
+            })
+            # correct some value and try to give char level span
+            match = False
+            value = value.lower()
+            if span and span[0] <= span[1]:
+                # use original span annotation, but tokenizations are different
+                start_word, end_word = span
+                if end_word >= len(tokens):
+                    # due to different tokenization, sometimes will out of index
+                    delta = end_word - len(tokens) + 1
+                    start_word -= delta
+                    end_word -= delta
+                start_char, end_char = token_spans[start_word][0], token_spans[end_word][1]
+                value_span = utt[start_char:end_char].lower()
+                match = True
+                if value_span == value:
+                    cnt_domain_slot['span match'] += 1
+                elif value.isdigit() and value in digit2word and digit2word[value] == value_span:
+                    # !!!CHANGE VALUE: value is digit but value span is word
+                    cnt_domain_slot['digit value match'] += 1
+                elif ''.join(value.split()) == ''.join(value_span.split()):
+                    # !!!CHANGE VALUE: equal when remove blank
+                    cnt_domain_slot['remove blank'] += 1
+                elif value in value_span:
+                    # value in value_span
+                    start_char += value_span.index(value)
+                    end_char = start_char + len(value)
+                    assert utt[start_char:end_char].lower() == value, f'{[value, utt[start_char:end_char], utt]}'
+                    cnt_domain_slot['value in span'] += 1
+                elif ':' in value and value == '0'+value_span:
+                    # !!!CHANGE VALUE: time x:xx == 0x:xx
+                    cnt_domain_slot['x:xx == 0x:xx'] += 1
                 else:
-                    found = True
-                    converted_da['non-categorical'].append({
-                        'intent': Act.lower(),
-                        'domain': Domain.lower(),
-                        'slot': reformated_slot,
-                        'value': v,
-                        'start': start_ch,
-                        'end': end_ch
-                    })
-                    break
-
-            if not found:
-                converted_da['non-categorical'].append({
-                    'intent': Act.lower(),
-                    'domain': Domain.lower(),
-                    'slot': reformated_slot,
-                    'value': v
-                })
-    return converted_da
-
-
-def get_state_update(prev_state, cur_state, dialog, did, tid, utt, coref_dict, slot_notfound_dict, da_cat_slot_values):
-    prev_turns = dialog['turns']
-    state_update = {'categorical': [], 'non-categorical': []}
-    notfoundnum = 0
-    total_value = 0
-
-    diff_state = {}
-    if prev_state is None:
-        diff_state = {domain: {slot: value for slot, value in cur_state[domain].items() if value != ''} for domain in
-                      cur_state}
-    else:
-        assert len(prev_state) == len(cur_state), print(prev_state, cur_state)
-        for domain, domain_state in prev_state.items():
-            if domain not in diff_state:
-                diff_state[domain] = {}
-            for slot, value in domain_state.items():
-                if value != cur_state[domain][slot]:
-                    # assert len(cur_state[domain][slot]) > 0, print(did, tid, domain, slot, utt)
-                    diff_state[domain][slot] = cur_state[domain][slot]
-
-    ret_diff_state = copy.deepcopy(diff_state)
-
-
-
-    for domain in diff_state:
-        for slot in diff_state[domain]:
-
-            total_value += 1
-            fix_or = False
-            if '|' in diff_state[domain][slot]:
-                value = diff_state[domain][slot].split('|')[0]
-            else:
-                value = diff_state[domain][slot]
-
-            # if dialog['original_id'] == 'PMUL2512' and tid == 17 and value == '02:45':
-            #     value = '2:45'
-
-            value_list = [value]
-            for _synonyms in synonyms:
-                if value in _synonyms:
-                    value_list = _synonyms
-
-            value_list.extend(get_time_variants(value))
-            value_list.extend(get_genitive_variants(value))
-            value_list.extend(get_bb_variants(value))
-
-            if value.endswith(' restaurant'):
-                value_list.append(value.split(' restaurant')[0])
-            if value.endswith(' hotel'):
-                value_list.append(value.split(' hotel')[0])
-            found = False
-            for value in value_list:
-                # categorical slots
-                if slot in ['internet', 'parking', 'pricerange', 'day', 'area', 'stars']:
-                    reformated_domain_slot = '-'.join([domain, slot])
-                    if reformated_domain_slot in state_cat_slot_value_dict and (value in state_cat_slot_value_dict[reformated_domain_slot] or value in ['dontcare', '', 'none', 'not mentioned']):
-                        state_update['categorical'].append({
-                            'domain': domain,
-                            'slot': slot,
-                            'value': diff_state[domain][slot]
-                        })
-                        if domain + '-' + slot not in da_cat_slot_values:
-                            da_cat_slot_values[domain + '-' + slot] = [diff_state[domain][slot]]
-                        da_cat_slot_values[domain + '-' + slot].append(diff_state[domain][slot])
-                        if value != diff_state[domain][slot]:
-                            state_update['categorical'][-1].update({'fixed_value': value})
-                            ret_diff_state[domain][slot] = value
-                        else :
-                            for _turn in prev_turns[::-1]:
-                                found = False
-                                for da in _turn['dialogue_act']['categorical']:
-                                    if da['value'] == value:
-                                        if 'start' in da:
-                                            state_update['categorical'][-1].update({
-                                                'utt_idx': _turn['utt_idx'],
-                                                'start': da['start'],
-                                                'end': da['end'],
-                                                'from': 'prev_da_span'
-                                            })
-                                            found = True
-                                            break
-                                if found:
-                                    break
-                    else:
-                        state_update['categorical'].append({
-                            'domain': domain,
-                            'slot': slot,
-                            'value': diff_state[domain][slot],
-                            'fixed_value': 'not found'
-                        })
-                        if domain + '-' + slot not in da_cat_slot_values:
-                            da_cat_slot_values[domain + '-' + slot] = [diff_state[domain][slot]]
-                        da_cat_slot_values[domain + '-' + slot].append(diff_state[domain][slot])
-                        ret_diff_state[domain][slot] = 'not found'
-                        notfoundnum += 1
-                    # reformated_domain_slot = '-'.join([domain, slot]
-                    found = True
-                    break
-
-                # process value ---> none
-                assert value not in ['none', 'not mentioned']
-                if value in ['', 'dontcare']:
-                    # if reformated_domain_slot not in state_cat_slot_values:
-                    #     state_cat_slot_values[reformated_domain_slot] = []
-                    # # if v not in cat_slot_values[reformated_domain_slot]:
-                    # state_cat_slot_values[reformated_domain_slot].append(value)
-                    state_update['non-categorical'].append({
-                        'domain': domain,
-                        'slot': slot,
-                        'value': diff_state[domain][slot]
-                    })
-                    found = True
-                    break
-
-                # first look for values in coref_dict
-                for _Domain_Act, _Slot, _value in coref_dict:
-                    _domain, _act = _Domain_Act.lower().split('-')
-                    _slot = _Slot.lower()
-                    _coref_value = coref_dict[(_Domain_Act, _Slot, _value)]['coref_value']
-                    if _coref_value == '':
-                        continue
-                    _coref_turn = coref_dict[(_Domain_Act, _Slot, _value)]['turn']
-                    if _coref_turn == -1:
-                        continue
-                    _coref_pos = coref_dict[(_Domain_Act, _Slot, _value)]['pos']
-                    if _coref_pos == '':
-                        continue
-                    _utt = coref_dict[(_Domain_Act, _Slot, _value)]['utt']
-                    if _domain == domain and _slot == slot and value == _coref_value:
-
-                        start_w, end_w = [int(p) for p in _coref_pos.split('-')]
-                        utt_list = _utt.split()
-                        start_ch = 0
-                        for i in range(start_w):
-                            start_ch += len(utt_list[i]) + 1
-                        end_ch = start_ch
-                        for i in range(start_w, end_w + 1):
-                            end_ch += len(utt_list[i]) + 1
-                        end_ch -= 1
-
-                        if not _utt[start_ch: end_ch] == _coref_value:
-                            # print(111111111111111111111111111111111)
-                            # print(_utt[start_ch: end_ch], _coref_value)
-                            continue
-
-                        state_update['non-categorical'].append({
-                            'domain': domain,
-                            'slot': slot,
-                            'value': diff_state[domain][slot],
-                            'from': 'coref',
-                            'utt_idx': _coref_turn,
-                            'start': start_ch,
-                            'end': end_ch
-                        })
-                        if value != diff_state[domain][slot]:
-                            state_update['categorical'][-1].update({'fixed_value': value})
-                            ret_diff_state[domain][slot] = value
-                        found = True
-
-                if found:
-                    break
-
-                # from da annotation
-                for _turn in prev_turns[::-1]:
-                    for da in _turn['dialogue_act']['non-categorical']:
-                        # if da['domain'] == domain and da['slot'] == slot and fuzz.ratio(da['value'], value) > 85:
-                            # if not da['value'] == value:
-                            #     print(1111111111111111)
-                            #     print(value, da['value'])
-
-                        if fuzz.ratio(da['value'], value) > 85:
-
-                            if 'start' in da:
-                                found = True
-                                state_update['non-categorical'].append({
-                                    'domain': domain,
-                                    'slot': slot,
-                                    # 'value': da['value'],
-                                    'value': diff_state[domain][slot],
-                                    'utt_idx': _turn['utt_idx'],
-                                    'start': da['start'],
-                                    'end': da['end'],
-                                    'from': 'prev_da_span'
-                                })
-                                if value != diff_state[domain][slot]:
-                                    state_update['non-categorical'][-1].update({'fixed_value': value})
-                                    ret_diff_state[domain][slot] = value
-                                if da['value'] != value:
-                                    state_update['non-categorical'][-1].update({'fixed_value':da['value']})
-                                    ret_diff_state[domain][slot] = da['value']
-
-                                break
-                    if found:
-                        break
-
-                if found:
-                    break
-
-                # from utterance
-                for _turn in prev_turns[::-1]:
-                    _utt = _turn['utterance']
-                    (start, end), num = pharse_in_sen(str(value), _utt)
-                    if num:
-                        assert value.lower() == _utt[start:end].lower() \
-                               or digit2word[value].lower() == _utt[start:end].lower()
-                        found = True
-                        state_update['non-categorical'].append({
-                            'domain': domain,
-                            'slot': slot,
-                            'value': diff_state[domain][slot],
-                            # 'value': _utt[start:end].lower(),
-                            # 'fixed_value': _utt[start:end].lower(),
-                            'from': 'prev_utt',
-                            'utt_idx': _turn['utt_idx'],
-                            'start': start,
-                            'end': end
-                        })
-                        if value != diff_state[domain][slot]:
-                            state_update['non-categorical'][-1].update({'fixed_value': value})
-                            ret_diff_state[domain][slot] = value
-                        if value != _utt[start:end].lower():
-                            state_update['non-categorical'][-1].update({'fixed_value': _utt[start:end].lower()})
-                            ret_diff_state[domain][slot] = _utt[start:end].lower()
-                        found = True
-                        break
-                if found:
-                    break
-
-                # from utterance
-                if not value.isdigit():
-                    for _turn in prev_turns[::-1]:
-                        _utt = _turn['utterance']
-
-                        s = difflib.SequenceMatcher(None, _utt, value)
-                        matches = s.get_matching_blocks()
-
-                        for i, j, n in matches:
-                            possible_value = _utt[i: i+len(value)]
-
-                            if i+ len(value) < len(_utt) and _utt[i+len(value)] not in [ ' ', ',', '.', '?', '!', '/'] :
-                                possible_value += _utt[i+len(value):].split()[0]
-
-                                if possible_value.startswith('th '):
-                                    possible_value = possible_value[3:]
-                                    i += 3
-                            if i > 0 and _utt[i-1] not in [ ' ', ',', '.', '?', '!', '/']:
-                                # cut first incomplete word
-                                if len(possible_value.split()) > 1:
-                                    i += len(possible_value.split()[0]) + 1
-                                    possible_value = ' '.join(possible_value.split()[1:])
-
-
-                                # prepend first incomplete word
-                                # possible_value = _utt[:i].split()[-1] + possible_value
-                                # i -= len(_utt[:i].split()[-1])
-
-
-                            if fuzz.token_sort_ratio(value, possible_value) > 92 or possible_value.startswith('ashley hotel and lovell lodge') :
-                                found = True
-
-                                state_update['non-categorical'].append({
-                                            'domain': domain,
-                                            'slot': slot,
-                                            'value': diff_state[domain][slot],
-                                            # 'value': possible_value,
-                                            # 'fixed_value': possible_value,
-                                            'from':'prev_utt',
-                                            'utt_idx': _turn['utt_idx'],
-                                            'start': i,
-                                            'end': i+len(possible_value)
-                                        })
-                                if value != diff_state[domain][slot]:
-                                    state_update['non-categorical'][-1].update({'fixed_value': value})
-                                    ret_diff_state[domain][slot] = value
-                                if possible_value != value:
-                                    state_update['non-categorical'][-1].update({'fixed_value': possible_value})
-                                    ret_diff_state[domain][slot] = possible_value
-                                break
-                    #             assert _utt[i:i+len(possible_value)] == possible_value, print(_utt, _utt[i:i+len(possible_value)], possible_value)
-                    #             break
-                                # if not possible_value == value:
-                                #             print(3333333333333333)
-                                #             print(value)
-                                #             print(possible_value)
-                            if found:
-                                break
-                        if found:
+                    # span mismatch, search near 1-2 words
+                    for window in range(1,3):
+                        start = max(0,start_word-window)
+                        end = min(len(token_spans)-1,end_word+window)
+                        large_span = utt[token_spans[start][0]:token_spans[end][1]].lower()
+                        if value in large_span:
+                            start_char = token_spans[start][0] + large_span.index(value)
+                            end_char = start_char + len(value)
+                            assert utt[start_char:end_char].lower() == value, f'{[value, utt[start_char:end_char], utt]}'
+                            cnt_domain_slot[f'window={window}'] += 1
                             break
-
-                if found:
-                    break
-            if not found:
-                #                 print('3333333333333333333')
-                #                 print(did, tid)
-                #                 print(domain, slot, value)
-                #                 print([_t['utterance'] for _t in prev_turns])
-                # assert slot not in ['internet', 'parking', 'pricerange', 'day', 'area', 'stars']
-
-                if (domain, slot) not in slot_notfound_dict:
-                    slot_notfound_dict[(domain, slot)] = 1
-                else:
-                    slot_notfound_dict[(domain, slot)] += 1
-                state_update['non-categorical'].append({
-                    'domain': domain,
-                    'slot': slot,
-                    'value': diff_state[domain][slot],
-                    'fixed_value': 'not found'
-                })
-                ret_diff_state[domain][slot] = 'not found'
-                notfoundnum += 1
-    return state_update, notfoundnum, total_value, ret_diff_state
-
-
-def merge_data_annotation():
-    extract_dir = os.path.join(self_dir, 'original_data')
-    data21 = json.load(open(os.path.join(self_dir, extract_dir, 'data.json')))
-    # data21_train = json.load(open(os.path.join(self_dir, extract_dir, 'train.json')))
-    # data21_val = json.load(open(os.path.join(self_dir, extract_dir, 'val.json')))
-    # data21_test = json.load(open(os.path.join(self_dir, extract_dir, 'test.json')))
-    # data21 = {}
-    # data21.update(data21_train)
-    # data21.update(data21_val)
-    # data21.update(data21_test)
-
-    # update_from_25_cnt = 0
-    # total_turn = 0
-    # for dial_id, dialog in data21.items():
-    #     dial_id = dial_id + '.json'
-    #     assert dial_id in data25
-    #     for i, _turn in enumerate(dialog['log']):
-    #         total_turn += 1
-    #         if _turn['text'] == data25[dial_id]['log'][i]['text']:
-    #             _turn['span_info'].extend(copy.deepcopy(data25[dial_id]['log'][i]['span_info']))
-    #             # _turn['span_info'] = list(set(_turn['span_info']))
-    #             # _turn['dialog_act'].update(copy.deepcopy(data25[dial_id]['log'][i]['dialog_act']))
-    #             for Domain_Intent in data25[dial_id]['log'][i]['dialog_act']:
-    #                 if Domain_Intent in _turn['dialog_act']:
-    #                     _turn['dialog_act'][Domain_Intent].extend(data25[dial_id]['log'][i]['dialog_act'][Domain_Intent])
-    #                 else:
-    #                     _turn['dialog_act'][Domain_Intent] = copy.deepcopy(data25[dial_id]['log'][i]['dialog_act'][Domain_Intent])
-    #                 # _turn['dialog_act'][Domain_Intent] = list(set(_turn['dialog_act'][Domain_Intent]))
-    #             if 'coreference' in data25[dial_id]['log'][i]:
-    #                 _turn['coreference'] = copy.deepcopy(data25[dial_id]['log'][i]['coreference'])
-    #             update_from_25_cnt += 1
-    #         else:
-    #             # print('==============multiwoz21=================')
-    #             # print(_turn['text'])
-    #             # print('==============multiwoz25=================')
-    #             # print(data25[dial_id]['log'][i]['text'])
-    #             continue
-    #
-    # print('{}/{} turns update from multiwoz25 data'.format(update_from_25_cnt, total_turn))
-    return data21
-
-
-def preprocess(da_cat_slot_values, state_cat_slot_values):
-    all_data = []
-    binary_ont = []
-    intent_ont = {}
-    state_ont = {}
-
-    data_splits = ['train', 'val', 'test']
-    # data_splits = ['test']
-    extract_dir = os.path.join(self_dir, 'original_data')
-    num_train_dialogue = 0
-    num_train_utt = 0
-
-    num_match_error_da_span = 0
-
-    if not os.path.exists('data.zip') or not os.path.exists('ontology.json'):
-        # for data_split in data_splits:
-        # data_zip_file = os.path.join(self_dir, 'original_data.zip')
-        # if not os.path.exists(data_zip_file):
-        #     raise FileNotFoundError(data_zip_file)
-
-        # logging.info('unzip multiwoz data to {}'.format(extract_dir))
-        # archive = zipfile.ZipFile(data_zip_file, 'r')
-        # archive.extractall(extract_dir)
-
-        data = merge_data_annotation()
-        # exit()
-        # data = json.load(open(os.path.join(self_dir, extract_dir, 'data_meta_fixed.json')))
-        train_list = open(os.path.join(self_dir, extract_dir, 'trainListFile')).read().split()
-        val_list = open(os.path.join(self_dir, extract_dir, 'valListFile')).read().split()
-        test_list = open(os.path.join(self_dir, extract_dir, 'testListFile')).read().split()
-
-        total_not_found_slot = 0
-        total_slot = 0
-        total_turn = 0
-        total_not_found_turn = 0
-        total_not_found_state = 0
-
-        slot_notfound_dict = {}
-
-        dialog_idx = 0
-        for dialog_id, dialog in tqdm(data.items()):
-
-            acc_not_found_flag = False
-
-            coref_dict = {}
-
-            data_split = None
-            for _split in data_splits:
-                if dialog_id.strip('.json') in eval(_split + '_list'):
-                    data_split = _split
-                    break
-            # assert data_split is not None
-            # if data_split != 'test':
-            #     continue
-            if data_split is None:
-                continue
-
-            if data_split == 'train':
-                num_train_dialogue += len(data)
-
-            dialog_idx += 1
-            # if dialog_idx > 10:
-            #     break
-            converted_dialogue = {
-                'dataset': 'multiwoz21',
-                'data_split': data_split,
-                'dialogue_id': 'multiwoz21_' + str(dialog_idx),
-                'original_id': dialog_id,
-                'domains': [d for d in dialog['goal'] if
-                            len(dialog['goal'][d]) != 0 and d in multiwoz_desc and d not in ['police', 'hospital', 'bus']],
-                'turns': [],
-            }
-
-            if data_split == 'train':
-                num_train_utt += len(dialog['log'])
-
-            prev_state = None
-            accum_fixed_state = {}
-            for turn_id, turn in enumerate(dialog['log']):
-
-                utt = turn['text'].lower()
-                # for several wrong words
-                utt = utt.replace('seeuni', 'see uni')
-
-                utt = ' '.join(utt.split())
-                utt = utt.replace(' im ', ' i\'m ')
-                utt = utt.replace(' dont ', ' don\'t ')
-                utt = utt.replace(' thats ', ' that\'s ')
-                utt = utt.replace('idon\'t', ' i don\'t ')
-                utt = utt.replace('wedon\'t ', 'we don\'t ')
-                utt = utt.replace('id be ', 'i\'d be ')
-                # utt = utt.replace('cambridgethat\'svery ', 'cambridge that\'s very')
-                utt = re.sub(r'^im ', 'i\'m ', utt)
-                utt = re.sub(r'^whats ', 'what\'s ', utt)
-                utt = re.sub(r'^id ', 'i\'d ', utt)
-                utt = re.sub(r'^thats ', 'that\'s ', utt)
-
-                utt = re.sub( r'([a-zA-Z0-9])([,.!\'-\?"~])', r'\1 \2', utt)
-                utt = re.sub(r'([,.!\'-\?"~])([a-zA-Z0-9])', r'\1 \2', utt)
-
-                das = turn.get('dialog_act', [])
-                role = 'user' if turn_id % 2 == 0 else 'system'
-                spans = turn.get('span_info', [])
-
-                da_dict = {}
-                for Domain_Act in das:
-                    Domain = Domain_Act.split('-')[0]
-                    if Domain.lower() not in converted_dialogue['domains'] and Domain.lower() not in ['general', 'booking']:
-                        continue
-
-                    Svs = das[Domain_Act]
-                    for S, v in Svs:
-                        v = v.lower()
-                        if v.startswith('th '):
-                            # print(v)
-                            v = v[3:]
-                        if v.startswith('he '):
-                            # print(v)
-                            v = v[3:]
-
-                        if (Domain_Act, S, v) not in da_dict:
-                            da_dict[(Domain_Act, S, v)] = {}
-
-                for span in spans:
-                    Domain_Act, S, v, start_word, end_word = span
-                    v = v.lower()
-                    if not (Domain_Act, S, v) in da_dict:
-                        # logging.info('span da annotation not found in multiwoz da label')
-                        # logging.info(dialog_id, turn_id)
-                        # logging.info((Domain_Act, S, v))
-                        # logging.info(da_dict)
-                        num_match_error_da_span += 1
                     else:
-                        if v.startswith('th '):
-                            # print(v)
-                            v = v[3:]
-                            start_word += 3
-                        if v.startswith('he '):
-                            # print(v)
-                            v = v[3:]
-                            start_word += 3
-
-                        if 'start_word' not in da_dict[(Domain_Act, S, v)]:
-                            da_dict[(Domain_Act, S, v)]['start_word'] = []
-                            da_dict[(Domain_Act, S, v)]['end_word'] = []
-
-                        da_dict[(Domain_Act, S, v)]['start_word'].append(start_word)
-                        da_dict[(Domain_Act, S, v)]['end_word'].append(end_word)
-
-                converted_turn = {
-                    'utt_idx': turn_id,
-                    'speaker': role,
-                    'utterance': utt,
-                    'dialogue_act': convert_da(utt, da_dict, binary_ont, intent_ont, dialog_id, turn_id, da_cat_slot_values),
-                }
-
-                # for state annotations
-                if role == 'system':
-                    turn_state = turn['metadata']
-                    cur_state = {}
-                    for domain in turn_state:
-                        if domain in ['police', 'hospital', 'bus']:
-                            continue
-                        if domain not in converted_dialogue['domains']:
-                            continue
-                        cur_state[domain] = {}
-                        for subdomain in ['semi', 'book']:
-                            for slot in turn_state[domain][subdomain]:
-                                if slot == 'booked':
-                                    continue
-                                if slot == 'ticket':  # or (domain == 'train' and slot == 'people'):
-                                    # for cases where domain slot exists in REF but not in state
-                                    # because of check in evaluate.py
-                                    continue
-
-                                else:
-                                    fixed_slot = slot
-                                state_ds = domain + '-' + fixed_slot
-                                if state_ds not in slot_to_type:
-                                    logging.info('state slot not defined in da list')
-                                    logging.info(state_ds)
-                                if turn_state[domain][subdomain][slot] in ['', [], 'not mentioned', 'none']:
-                                    cur_state[domain][fixed_slot] = ""
-                                else:
-                                    if turn_state[domain][subdomain][slot].startswith('th '):
-                                        # print('state')
-                                        # print(turn_state[domain][subdomain][slot])
-                                        turn_state[domain][subdomain][slot] = turn_state[domain][subdomain][slot][3:]
-                                    if turn_state[domain][subdomain][slot].startswith('he '):
-                                        # print('state')
-                                        # print(turn_state[domain][subdomain][slot])
-                                        turn_state[domain][subdomain][slot] = turn_state[domain][subdomain][slot][3:]
-
-                                    cur_state[domain][fixed_slot] = turn_state[domain][subdomain][slot]
-
-                                if domain not in state_ont:
-                                    state_ont[domain] = []
-                                if fixed_slot not in state_ont[domain]:
-                                    state_ont[domain].append(fixed_slot)
-
-                        if domain == 'train' and 'people' not in cur_state[domain]:
-                            cur_state[domain]['people'] = ''
-                        # if len(converted_turn['state'][domain]) == 0:
-                        #     converted_turn['state'].pop(domain)
-                        if len(converted_dialogue['turns']) > 0:
-                            # move state from system side to user side
-                            converted_dialogue['turns'][-1]['state'] = copy.deepcopy(cur_state)
-
-                    # for state update annotations
-                    state_update, _notfoundslot, _totalslot, ret_diff_state = get_state_update(prev_state, cur_state, converted_dialogue,
-                                                                               dialog_id, turn_id, turn['text'], coref_dict,
-                                                                               slot_notfound_dict, da_cat_slot_values)
-
-                    update_state(accum_fixed_state, ret_diff_state)
-                    for domain in accum_fixed_state:
-                        for slot in accum_fixed_state[domain]:
-                            assert isinstance(accum_fixed_state[domain][slot], str), print(accum_fixed_state[domain][slot])
-
-                    if _notfoundslot == 0:
-                        # for slot in state_update['categorical']:
-                        #     assert 'fixed_value' not in slot
-                        for slot in state_update['non-categorical']:
-                            if slot['value'] not in ['', 'dontcare']:
-                                assert 'utt_idx' in slot
-
-                    else:
-                        flag = False
-                        for slot in state_update['categorical']:
-                            if 'fixed_value' in slot:
-                                flag = True
-                                break
-                        for slot in state_update['non-categorical']:
-                            if 'utt_idx' not in slot:
-                                flag = True
-                                break
-                        assert flag, print(flag, state_update['non-categorical'])
-
-                    total_turn += 1
-                    total_slot += _totalslot
-                    total_not_found_slot += _notfoundslot
-                    total_not_found_turn += 1 if _notfoundslot > 0 else 0
-                    if _notfoundslot > 0:
-                        acc_not_found_flag = True
-                    if acc_not_found_flag:
-                        total_not_found_state += 1
-
-                    coref_dict = {}
-                    converted_dialogue['turns'][-1]['state_update'] = copy.deepcopy(state_update)
-                    converted_dialogue['turns'][-1]['fixed_state'] = copy.deepcopy(accum_fixed_state)
-                    if 'state' not in converted_dialogue['turns'][-1]:
-                        converted_dialogue['turns'][-1]['state'] = {}
-                    prev_state = copy.deepcopy(cur_state)
-
-                converted_dialogue['turns'].append(converted_turn)
-
-                if 'coreference' in turn:
-                    for Domain_Act in turn['coreference']:
-                        for Slot, value, coref, coref_turn, coref_pos in turn['coreference'][Domain_Act]:
-                            value = value.lower()
-                            coref_dict[(Domain_Act, Slot, value)] = {'turn': coref_turn, 'pos': coref_pos,
-                                                                     'coref_value': coref,
-                                                                     'utt': converted_dialogue['turns'][coref_turn][
-                                                                         'utterance']}
-
-            check_spans(converted_dialogue)
-            # postprocess_update_spans(converted_dialogue)
-            if converted_dialogue['turns'][-1]['speaker'] == 'system':
-                converted_dialogue['turns'].pop(-1)
-            all_data.append(converted_dialogue)
-
-        print('total_turn', total_turn)
-        print('total_not_found_turn', total_not_found_turn)
-        print('total_slot', total_slot)
-        print('total_not_found_slot', total_not_found_slot)
-        print('total_not_found_state', total_not_found_state)
-        print(slot_notfound_dict)
-        from collections import Counter
-        # print({k : dict(Counter(v)) for k, v in cat_slot_values.items()})
-        json.dump({k : dict(Counter(v)) for k, v in state_cat_slot_values.items()}, open(os.path.join(self_dir, 'cat_slot_values.json'), 'w'), indent=4)
-        cat_slot_values = {k: list(set(v)) for k, v in state_cat_slot_values.items()}
-        da_cat_slot_values = {k: list(set(v)) for k, v in da_cat_slot_values.items()}
-
-        json.dump(all_data, open('data.json', 'w'), indent=4)
-        write_zipped_json(os.path.join(self_dir, './data.zip'), 'data.json')
-        os.remove('data.json')
-
-        new_ont = {
-            'domains': {},
-            'intents': {},
-            'binary_dialogue_act': {}
-        }
-
-        for d_s in slot_to_type:
-            d, s = d_s.split('-')
-            if d not in new_ont['domains']:
-                new_ont['domains'][d] = {
-                    'description': multiwoz_desc[d]['domain'],
-                    'slots': {}
-                }
-            domain_ont = new_ont['domains'][d]
-            assert s not in domain_ont
-            domain_ont['slots'][s] = {
-                'description': multiwoz_desc[d][s] if s in multiwoz_desc[d] else '',
-                'is_categorical': d_s in state_cat_slot_ds,
-                'possible_values': da_cat_slot_values[d_s] if d_s in state_cat_slot_ds else []
-            }
-            domain_ont['slots'][s]['possible_values'] = [_ for _ in domain_ont['slots'][s]['possible_values'] if _ not in ['dontcare', '']]
-
-        new_ont['state'] = {}
-        # print(state_cat_slot_value_dict)
-        print(state_ont)
-        for d in state_ont:
-            new_ont['state'][d] = {}
-            for s in state_ont[d]:
-                d_s = '-'.join([d, s])
-                new_ont['state'][d][s] = ''
-
-        new_ont['intents'] = {i: {'description': multiwoz_desc['intents'][i]} for i in intent_ont}
-        new_ont['binary_dialogue_act'] = binary_ont
-
-        slot_desc = json.load(open(os.path.join(self_dir, extract_dir, './slot_descriptions.json')))
-        for domain_slot in slot_desc:
-            _domain, _slot = domain_slot.split('-')
-            _desc = slot_desc[domain_slot][0]
-            if _slot == 'arriveby':
-                _slot = 'arriveBy'
-            elif _slot == 'leaveat':
-                _slot = 'leaveAt'
-            if 'book' in _slot:
-                _slot = _slot.replace('book ', '')
-            if not _domain in new_ont['state']:
-                # logging.info('domain {} not in state domains'.format(_domain))
-                continue
-            if _domain in new_ont['domains'] and _slot in new_ont['domains'][_domain]['slots']:
-                new_ont['domains'][_domain]['slots'][_slot]['description'] = _desc
-            if not _slot in new_ont['state'][_domain]:
-                logging.info('domain {} slot {} not in state'.format(_domain, _slot))
-                continue
-            # new_ont['state'][_domain][_slot] = ""
-            assert _domain in new_ont['domains'], print(_domain)
-            assert _slot in new_ont['domains'][_domain]['slots']
-
-        logging.info('num_match_error_da_span {}'.format(num_match_error_da_span))
-        json.dump(new_ont, open(os.path.join(self_dir, './ontology.json'), 'w'), indent=4)
-
-    else:
-        all_data = read_zipped_json(os.path.join(self_dir, './data.zip'), 'data.json')
-        new_ont = json.load(open(os.path.join(self_dir, './ontology.json'), 'r'))
-    logging.info('# dialogue: {}, # turn: {}'.format(num_train_dialogue, num_train_utt))
-    return all_data, new_ont
-
-
-# def postprocess_update_spans(dialog):
-#     changed_utt_idx_and_position = {}
-#     for turn in dialog['turns']:
-#         if turn['speaker'] != 'user':
-#             continue
-#         changed = False
-#         for _update in turn['state_update']['non-categorical']:
-#             if 'utt_idx' in _update:
-#                 utt_idx = _update['utt_idx']
-#                 start = _update['start']
-#                 end = _update['end']
-#
-#                 # assume at most one word changes for every utterance
-#                 if turn['utt_idx'] not in changed_utt_idx_and_position:
-#                     if utt_idx == turn['utt_idx'] and start-1 > -1 and turn['utterance'][start-1] not in [' ']:
-#                         changed_utt_idx_and_position[turn['utt_idx']] = start
-#                         print('=======================')
-#                         print(dialog['original_id'])
-#                         print(turn['utterance'])
-#                         print(json.dumps(_update, indent=2))
-#                         print(turn['utterance'][start: end])
-#                         turn['utterance'] = turn['utterance'][:start] + ' ' + turn['utterance'][start:]
-#                         print(turn['utterance'])
-#                         _update['start'] += 1
-#                         _update['end'] += 1
-#                         changed = True
-#                 if utt_idx not in changed_utt_idx_and_position:
-#                     continue
-#                 else:
-#                     value = _update['fixed_value'] if 'fixed_value' in _update and _update['fixed_value'] != 'not found' else _update['value']
-#                     if start >= changed_utt_idx_and_position[utt_idx]:
-#                         if dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end']] != value:
-#                             assert dialog['turns'][utt_idx]['utterance'][_update['start']+1: _update['end']+1] == value, print(dialog['turns'][utt_idx]['utterance'], dialog['turns'][utt_idx]['utterance'][_update['start']+1: _update['end']+1])
-#                             _update['start'] += 1
-#                             _update['end'] += 1
-#                     elif start < changed_utt_idx_and_position[utt_idx] < end:
-#                         if dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end']] != value:
-#                             assert (dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end']+1]).replace(' ', '') == value.replace(' ', ''), print(dialog['turns'][utt_idx]['utterance'], dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end']+1], value)
-#                             print('fix')
-#                             print(_update)
-#                             _update['end'] += 1
-#                             _update['fixed_value'] = turn['utterance'][_update['start']: _update['end'] + 1].strip()
-#                             print(_update)
-#         if changed:
-#             for _update in turn['state_update']['non-categorical']:
-#                 if 'utt_idx' in _update:
-#                     utt_idx = _update['utt_idx']
-#                     start = _update['start']
-#                     end = _update['end']
-#
-#                     if utt_idx not in changed_utt_idx_and_position:
-#                         continue
-#                     else:
-#                         value = _update['fixed_value'] if 'fixed_value' in _update and _update[
-#                             'fixed_value'] != 'not found' else _update['value']
-#                         if start >= changed_utt_idx_and_position[utt_idx]:
-#                             if dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end']] != value:
-#                                 assert dialog['turns'][utt_idx]['utterance'][_update['start'] + 1: _update['end'] + 1] == value
-#                                 _update['start'] += 1
-#                                 _update['end'] += 1
-#                         elif start < changed_utt_idx_and_position[utt_idx] < end:
-#                             if dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end']] != value:
-#                                 print('====================fix===================')
-#                                 print(_update)
-#                                 assert (dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end']+1]).replace(' ', '') == value.replace(' ', ''), print(dialog['turns'][utt_idx]['utterance'], dialog['turns'][utt_idx]['utterance'][_update['start']+1: _update['end']+1])
-#                                 _update['end'] += 1
-#                                 _update['fixed_value'] = dialog['turns'][utt_idx]['utterance'][_update['start']: _update['end'] + 1]
-#                                 print(_update)
-#     for turn in dialog['turns']:
-#         if turn['speaker'] != 'user':
-#             continue
-#         for _update in turn['state_update']['non-categorical']:
-#             if 'utt_idx' in _update:
-#                 value = _update['fixed_value'] if 'fixed_value' in _update and _update[
-#                     'fixed_value'] != 'not found' else _update['value']
-#                 utt_idx = _update['utt_idx']
-#                 start = _update['start']
-#                 end = _update['end']
-#                 if dialog['turns'][utt_idx]['utterance'][start] == ' ':
-#                     _update['start'] += 1
-#                     _update['fixed_value'] = value[1:]
-#                     value = value[1:]
-#                     start += 1
-#                 assert dialog['turns'][utt_idx]['utterance'][start: end] == value, print(json.dumps(turn, indent=4), [c for c in dialog['turns'][utt_idx]['utterance'][start: end]], [c for c in value])
-#     return dialog
-
+                        # still not found
+                        match = False
+            
+            if match:
+                converted_da['non-categorical'][-1]['value'] = utt[start_char:end_char]
+                converted_da['non-categorical'][-1]['start'] = start_char
+                converted_da['non-categorical'][-1]['end'] = end_char
+                cnt_domain_slot['have span'] += 1
+            else:
+                cnt_domain_slot['no span'] += 1
+    return converted_da
 
-def get_time_variants(time_text):
-    value_list = [time_text]
-    pattern_time = r'(\d{1,2}:\d{2})(\s)?(am|pm|AM|PM)?'
-    match_times = re.findall(pattern_time, time_text)
-    if len(match_times) < 1:
-        return []
-    match_time = match_times[0]
+def preprocess():
+    original_data_dir = 'MultiWOZ_2.1'
+    new_data_dir = 'data'
 
-    am_flag = match_time[2] in ['am', 'AM']
-    pm_flag = match_time[2] in ['pm', 'PM']
-    no_am_pm_flag = match_time[2] == ''
-    if am_flag:
-        # 4:00am -> 4:00
-        value_list.append(match_time[0])
-        if len(match_time[0]) == 4:
-            # 4:00 -> 04:00
-            value_list.append('0' + match_time[0])
-    if pm_flag:
-        # 4:00pm -> 16:00
-        hour, min = match_time[0].split(':')
-        hour = int(hour)
-        new_hour = 12 + hour
-        value_list.append(str(new_hour)+':'+min)
-    if no_am_pm_flag:
-        hour, min = match_time[0].split(':')
-        hour = int(hour)
-        if hour > 12:
-            new_hour = hour - 12
-            value_list.append(str(new_hour) + ':' + min + 'pm')
-            value_list.append(str(new_hour) + ':' + min + ' pm')
-            value_list.append(str(new_hour) + ':' + min)
-            if min == '00':
-                value_list.append(str(new_hour) + 'pm')
-                value_list.append(str(new_hour) + ' pm')
-                value_list.append(str(new_hour))
+    if not os.path.exists(original_data_dir):
+        original_data_zip = 'MultiWOZ_2.1.zip'
+        if not os.path.exists(original_data_zip):
+            raise FileNotFoundError(f'cannot find original data {original_data_zip} in multiwoz21/, should manually download MultiWOZ_2.1.zip from https://github.com/budzianowski/multiwoz/blob/master/data/MultiWOZ_2.1.zip')
         else:
-            value_list.append(str(hour) + ':' + min + 'am')
-            value_list.append(str(hour) + ':' + min + ' am')
-            value_list.append(str(hour) + ':' + min)
-            if min == '00':
-                value_list.append(str(hour) + 'am')
-                value_list.append(str(hour) + ' am')
-                value_list.append(str(hour))
-        if len(match_time[0]) == 5 and match_time[0][0] == '0':
-            value_list.append(match_time[0][1:])
-        value_list.append(''.join(match_time[0].split(':')))
-
-    return value_list
-
-
-def get_genitive_variants(value):
-    ret_list = []
-    value_genitive_format = r"(?=\w)s(?=\s)"
-    value_pattern = re.compile(value_genitive_format)
-
-    span_genitive_value = re.sub(value_pattern, " 's", value)
-    if span_genitive_value != value:
-        ret_list.append(span_genitive_value)
-    span_genitive_value = re.sub(value_pattern, "'s", value)
-    if span_genitive_value != value:
-        ret_list.append(span_genitive_value)
-    # if len(ret_list) > 0:
-    #     print('=============================')
-    #     print(value)
-    #     print(re.findall(value_pattern, value))
-    #     print(ret_list)
-    return ret_list
-
-
-def check_spans(dialog):
-    for turn in dialog['turns']:
-        if turn['speaker'] != 'user':
-            continue
-        for _update in turn['state_update']['non-categorical']:
-            if 'utt_idx' in _update:
-                value = _update['fixed_value'] if 'fixed_value' in _update and _update[
-                    'fixed_value'] != 'not found' else _update['value']
-                utt_idx = _update['utt_idx']
-                start = _update['start']
-                end = _update['end']
-                assert dialog['turns'][utt_idx]['utterance'][start:end] == value, print(dialog['turns'][utt_idx]['utterance'], dialog['turns'][utt_idx]['utterance'][start:end])
-
+            archive = ZipFile(original_data_zip)
+            archive.extractall()
+    
+    os.makedirs(new_data_dir, exist_ok=True)
+    for filename in os.listdir(original_data_dir):
+        if 'db' in filename:
+            copy2(f'{original_data_dir}/{filename}', new_data_dir)
+    
+    original_data = json.load(open(f'{original_data_dir}/data.json'))
+    global init_ontology, cnt_domain_slot
+
+    val_list = set(open(f'{original_data_dir}/valListFile.txt').read().split())
+    test_list = set(open(f'{original_data_dir}/testListFile.txt').read().split())
+    dataset = 'multiwoz21'
+    splits = ['train', 'validation', 'test']
+    dialogues_by_split = {split:[] for split in splits}
+    sent_tokenizer = PunktSentenceTokenizer()
+    word_tokenizer = TreebankWordTokenizer()
+    for ori_dialog_id, ori_dialog in tqdm(original_data.items()):
+        if ori_dialog_id in val_list:
+            split = 'validation'
+        elif ori_dialog_id in test_list:
+            split = 'test'
+        else:
+            split = 'train'
+        dialogue_id = f'{dataset}-{split}-{len(dialogues_by_split[split])}'
+
+        # get user goal and involved domains
+        cur_domains = []
+        goal = {
+            'description': '. '.join(ori_dialog['goal']['message']),
+            'inform': {},
+            'request': {}
+        }
+        for k, v in ori_dialog['goal'].items():
+            if len(v) != 0 and k in init_ontology['domains']:
+                cur_domains.append(k)
+                goal['inform'][k] = {}
+                goal['request'][k] = {}
+                for attr in ['fail_info', 'info', 'fail_book', 'book']:
+                    if attr in v:
+                        for slot, value in v[attr].items():
+                            if 'invalid' in slot:
+                                continue
+                            domain, slot, value = normalize_domain_slot_value(k, slot, value)
+                            if slot in goal['inform'][domain]:
+                                goal['inform'][domain][slot] += '|'+value
+                            else:
+                                goal['inform'][domain][slot] = value
+                if 'reqt' in v:
+                    for slot in v['reqt']:
+                        domain, slot, _ = normalize_domain_slot_value(k, slot, '')
+                        goal['request'][domain][slot] = ''
+
+        dialogue = {
+            'dataset': dataset,
+            'data_split': split,
+            'dialogue_id': dialogue_id,
+            'original_id': ori_dialog_id,
+            'domains': cur_domains, # will be updated by dialog_acts and state
+            'goal': goal,
+            'turns': []
+        }
 
+        for turn_id, turn in enumerate(ori_dialog['log']):
+            # correct some grammar errors in the text, mainly following `tokenization.md` in MultiWOZ_2.1
+            text = turn['text']
+            text = re.sub(" Im ", " I'm ", text)
+            text = re.sub(" im ", " i'm ", text)
+            text = re.sub(r"^Im ", "I'm ", text)
+            text = re.sub(r"^im ", "i'm ", text)
+            text = re.sub("theres", "there's", text)
+            text = re.sub("dont", "don't", text)
+            text = re.sub("whats", "what's", text)
+            text = re.sub('thats', "that's", text)
+            utt = text
+            speaker = 'user' if turn_id % 2 == 0 else 'system'
+
+            das = turn.get('dialog_act', [])    
+            spans = turn.get('span_info', [])
+            da_dict = {}
+            # transform DA
+            for Domain_Intent in das:
+                domain, intent = Domain_Intent.lower().split('-')
+                assert intent in init_ontology['intents'], f'{ori_dialog_id}:{turn_id}:da\t{intent} not in ontology'
+                for Slot, value in das[Domain_Intent]:
+                    domain, slot, value = normalize_domain_slot_value(domain, Slot, value)
+                    if domain not in cur_domains:
+                        # update original cur_domains
+                        cur_domains.append(domain)
+                    da_dict[(intent, domain, slot, value,)] = []
+
+            for span in spans:
+                Domain_Intent, Slot, value, start_word, end_word = span
+                domain, intent = Domain_Intent.lower().split('-')
+                domain, slot, value = normalize_domain_slot_value(domain, Slot, value)
+                assert (intent, domain, slot, value,) in da_dict
+                da_dict[(intent, domain, slot, value,)] = [start_word, end_word]
+
+            dialogue_acts = convert_da(da_dict, utt, sent_tokenizer, word_tokenizer) # will also update ontology
+
+            dialogue['turns'].append({
+                'speaker': speaker,
+                'utterance': utt,
+                'utt_idx': turn_id,
+                'dialogue_acts': dialogue_acts,
+            })
 
-def get_bb_variants(value):
-    ret_list = []
-    if 'bed and breakfast' in value:
-        ret_list.append(value.replace('bed and breakfast', 'b & b'))
-    return ret_list
+            if speaker == 'system':
+                # add state to last user turn
+                # add empty db_results
+                turn_state = turn['metadata']
+                cur_state = copy.deepcopy(init_ontology['state'])
+                for domain in turn_state:
+                    if domain not in cur_state:
+                        continue
+                    for subdomain in ['semi', 'book']:
+                        for slot, value in turn_state[domain][subdomain].items():
+                            if slot in ['booked', 'ticket']:
+                                continue
+                            _, slot, value = normalize_domain_slot_value(domain, slot, value)
+                            cur_state[domain][slot] = value
+                dialogue['turns'][-2]['state'] = cur_state
+                dialogue['turns'][-1]['db_results'] = {}
+        dialogues_by_split[split].append(dialogue)
+    # pprint(cnt_domain_slot.most_common())
+    dialogues = []
+    for split in splits:
+        dialogues += dialogues_by_split[split]
+    init_ontology['binary_dialogue_acts'] = [{'intent':bda[0],'domain':bda[1],'slot':bda[2],'value':bda[3]} for bda in sorted(init_ontology['binary_dialogue_acts'])]
+    json.dump(dialogues[:10], open(f'dummy_data.json', 'w', encoding='utf-8'), indent=2, ensure_ascii=False)
+    json.dump(dialogues, open(f'{new_data_dir}/dialogues.json', 'w', encoding='utf-8'), indent=2, ensure_ascii=False)
+    json.dump(init_ontology, open(f'{new_data_dir}/ontology.json', 'w', encoding='utf-8'), indent=2, ensure_ascii=False)
+    with ZipFile('data.zip', 'w', ZIP_DEFLATED) as zf:
+        for filename in os.listdir(new_data_dir):
+            zf.write(f'{new_data_dir}/{filename}')
+    rmtree(original_data_dir)
+    rmtree(new_data_dir)
+    return dialogues, init_ontology
 
 if __name__ == '__main__':
-    preprocess(da_cat_slot_values, state_cat_slot_values)
\ No newline at end of file
+    preprocess()
\ No newline at end of file
diff --git a/data/unified_datasets/schema/README.md b/data/unified_datasets/schema/README.md
deleted file mode 100644
index 32483a533a248fda59a92dfeceab436d741659de..0000000000000000000000000000000000000000
--- a/data/unified_datasets/schema/README.md
+++ /dev/null
@@ -1,689 +0,0 @@
-# README
-
-## Features
-
-- Annotations: dialogue act, belief state, character-level span for non-categorical slots.
-- Unseen domains and slots in the test set to quantify the performance in zero-shot or few shot settings.
-
-Statistics: 
-
-|       | \# dialogues | \# utterances | avg. turns | avg. tokens | \# domains |
-| ----- | ------------ | ------------- | ---------- | ----------- | ---------- |
-| train | 16142        | 313822        | 19.44      | 10.02       | 16         |
-| val   | 2482         | 46244         | 18.63      | 9.94        | 16         |
-| test  | 4201         | 80393         | 19.14      | 10.7        | 18         |
-
-## Main changes
-
-1. download the original data as `original_data.zip`
-
-2. run `python preprocess` to unzip `original_data.zip` and get processed `data.zip` & `ontology.json`.
-
-Main changes:
-
-- extract intent from domains.
-- ~~numerical slot => non-categorical, use string match to get the span.~~
-- add binary_dialogue_act for those binary intents such as 'goodbye', 'request'.
-- add **count** non-categorical, numerical slot for each domain, but not appear in belief state.
-- sys state are updated by previous user frame['state']. 
-- calculate the state update according to prev state and slot spans in current turn slot_vals and all previous dialogue acts. 99.6% non-categorical state update have spans while the rest of them are like "Could you help me search for songs from **two years back** too?" 
-- values in possible values, dialogue act, state, and state_update are in **lowercase**. 
-
-Notice:
-
-- for categorical slot, value maybe **dontcare**, which is not presented in **possible_values**.
-
-## Original data
-
-The Schema-Guided Dialogue (SGD) dataset consists of over 20k annotated
-multi-domain, task-oriented conversations between a human and a virtual
-assistant. These conversations involve interactions with services and APIs
-spanning 20 domains, ranging from banks and events to media, calendar, travel,
-and weather. For most of these domains, the dataset contains multiple different
-APIs, many of which have overlapping functionalities but different interfaces,
-which reflects common real-world scenarios. The wide range of available
-annotations can be used for intent prediction, slot filling, dialogue state
-tracking, policy imitation learning, language generation, user simulation
-learning, among other tasks in large-scale virtual assistants. Besides these,
-the dataset has unseen domains and services in the evaluation set to quantify
-the performance in zero-shot or few shot settings.
-
-[[paper]](https://arxiv.org/abs/1909.05855) [[download link]](https://github.com/google-research-datasets/dstc8-schema-guided-dialogue)
-
-### Scheme Representation
-
-A service or API is essentially a set of functions (called intents), each taking
-a set of parameters (called slots). A schema is a normalized representation of
-the interface exposed by a service/API. In addition, the schema also includes
-natural language description of the included functions and their parameters to
-outline the semantics of each element. The schemas have been manually generated
-by the dataset creators. The schema for a service contains the following fields:
-
-*   **service_name** - A unique name for the service.
-*   **description** - A natural language description of the tasks supported by
-    the service.
-*   **slots** - A list of slots/attributes corresponding to the entities present
-    in the service. Each slot contains the following fields:
-    *   **name** - The name of the slot.
-    *   **description** - A natural language description of the slot.
-    *   **is_categorical** - A boolean value. If it is true, the slot has a
-        fixed set of possible values.
-    *   **possible_values** - List of possible values the slot can take. If the
-        slot is a categorical slot, it is a complete list of all the possible
-        values. If the slot is a non categorical slot, it is either an empty
-        list or a small sample of all the values taken by the slot.
-*   **intents** - The list of intents/tasks supported by the service. Each
-    method contains the following fields:
-    *   **name** - The name of the intent.
-    *   **description** - A natural language description of the intent.
-    *   **is_transactional** - A boolean value. If true, indicates that the
-        underlying API call is transactional (e.g, a booking or a purchase), as
-        opposed to a search call.
-    *   **required_slots** - A list of slot names whose values must be provided
-        before making a call to the service.
-    *   **optional_slots** - A dictionary mapping slot names to the default
-        value taken by the slot. These slots may be optionally specified by the
-        user and the user may override the default value. An empty default value
-        allows that slot to take any value by default, but the user may override
-        it.
-    *   **result_slots** - A list of slot names which are present in the results
-        returned by a call to the service or API.
-
-### Dialogue Representation
-
-The dialogue is represented as a list of turns, where each turn contains either
-a user or a system utterance. The annotations for a turn are grouped into
-frames, where each frame corresponds to a single service. Each turn in the
-single domain dataset contains exactly one frame. In multi-domain datasets, some
-turns may have multiple frames.
-
-Each dialogue is represented as a json object with the following fields:
-
-*   **dialogue_id** - A unique identifier for a dialogue.
-*   **services** - A list of services present in the dialogue.
-*   **turns** - A list of annotated system or user utterances.
-
-Each turn consists of the following fields:
-
-*   **speaker** - The speaker for the turn. Possible values are "USER" or
-    "SYSTEM".
-*   **utterance** - A string containing the natural language utterance.
-*   **frames** - A list of frames, each frame containing annotations for a
-    single service.
-
-Each frame consists of the fields listed below. The fields marked with * will
-be excluded from all user turns in the test data released to the participants.
-
-*   **service** - The name of the service corresponding to the frame. The slots
-    and intents used in the following fields are taken from the schema of this
-    service.
-*   **slots** - A list of slot spans in the utterance, only provided for
-    non-categorical slots. Each slot span contains the following fields:
-    *   **slot** - The name of the slot.
-    *   **start** - The index of the starting character in the utterance
-        corresponding to the slot value.
-    *   **exclusive_end** - The index of the character just after the last
-        character corresponding to the slot value in the utterance. In python,
-        `utterance[start:exclusive_end]` gives the slot value.
-*   **actions** - A list of actions corresponding to the system. Each action has
-    the following fields:
-    *   **act** - The type of action. The list of all possible system acts is
-        given below.
-    *   **slot** (optional) - A slot argument for some of the actions.
-    *   **values** (optional) - A list of values assigned to the slot. If the
-        values list is non-empty, then the slot must be present.
-    *   **canonical_values** (optional) - The values in their canonicalized form
-        as used by the service. It is a list of strings of the same length as
-        values.
-*   **service_call** (system turns only, optional) - The request sent to the
-    service. It consists of the following fields:
-    *   **method** - The name of the intent or function of the service or API
-        being executed.
-    *   **parameters** - A dictionary mapping slot name (all required slots and
-        possibly some optional slots) to a value in its canonicalized form.
-*   **service_results** (system turns only, optional) - A list of entities
-    containing the results obtained from the service. It is only available for
-    turns in which a service call is made. Each entity is represented as a
-    dictionary mapping a slot name to a string containing its canonical value.
-*   **state** (user turns only) - The dialogue state corresponding to the
-    service. It consists of the following fields:
-    *   **active_intent** - The intent corresponding to the service of the frame
-        which is currently being fulfilled by the system. It takes the value
-        "NONE" if none of the intents are active.
-    *   **requested_slots** - A list of slots requested by the user in the
-        current turn.
-    *   **slot_values** - A dictionary mapping slot name to a list of strings.
-        For categorical slots, this list contains a single value assigned to the
-        slot. For non-categorical slots, all the values in this list are spoken
-        variations of each other and are equivalent (e.g, "6 pm", "six in the
-        evening", "evening at 6" etc.).
-
-List of possible system acts:
-
-*   **INFORM** - Inform the value for a slot to the user. The slot and values
-    fields in the corresponding action are always non-empty.
-*   **REQUEST** - Request the value of a slot from the user. The corresponding
-    action always contains a slot, but values are optional. When values are
-    present, they are used as examples for the user e.g, "Would you like to eat
-    indian or chinese food or something else?"
-*   **CONFIRM** - Confirm the value of a slot before making a transactional
-    service call.
-*   **OFFER** - Offer a certain value for a slot to the user. The corresponding
-    action always contains a slot and a list of values for that slot offered to
-    the user.
-*   **NOTIFY_SUCCESS** - Inform the user that their request was successful. Slot
-    and values are always empty in the corresponding action.
-*   **NOTIFY_FAILURE** - Inform the user that their request failed. Slot and
-    values are always empty in the corresponding action.
-*   **INFORM_COUNT** - Inform the number of items found that satisfy the user's
-    request. The corresponding action always has "count" as the slot, and a
-    single element in values for the number of results obtained by the system.
-*   **OFFER_INTENT** - Offer a new intent to the user. Eg, "Would you like to
-    reserve a table?". The corresponding action always has "intent" as the slot,
-    and a single value containing the intent being offered. The offered intent
-    belongs to the service corresponding to the frame.
-*   **REQ_MORE** - Asking the user if they need anything else. Slot and values
-    are always empty in the corresponding action.
-*   **GOODBYE** - End the dialogue. Slot and values are always empty in the
-    corresponding action.
-
-List of possible user acts:
-
-*   **INFORM_INTENT** - Express the desire to perform a certain task to the
-    system. The action always has "intent" as the slot and a single value
-    containing the intent being informed.
-*   **NEGATE_INTENT** - Negate the intent which has been offered by the system.
-*   **AFFIRM_INTENT** - Agree to the intent which has been offered by the
-    system.
-*   **INFORM** - Inform the value of a slot to the system. The slot and values
-    fields in the corresponding action are always non-empty.
-*   **REQUEST** - Request the value of a slot from the system. The corresponding
-    action always contains a slot parameter. It may optionally contain a value,
-    in which case, the user asks the system if the slot has the specified value.
-*   **AFFIRM** - Agree to the system's proposition. Slot and values are always
-    empty.
-*   **NEGATE** - Deny the system's proposal. Slot and values are always empty.
-*   **SELECT** - Select a result being offered by the system. The corresponding
-    action may either contain no parameters, in which case all the values
-    proposed by the system are being accepted, or it may contain a slot and
-    value parameters, in which case the specified slot and value are being
-    accepted.
-*   **REQUEST_ALTS** - Ask for more results besides the ones offered by the
-    system. Slot and values are always empty.
-*   **THANK_YOU** - Thank the system. Slot and values are always empty.
-*   **GOODBYE** - End the dialogue. Slot and values are always empty.
-
-### Dataset Statistics
-
-The dataset consists of two kinds of dialogues.
-
-| Type of Dialogue |                 Train files                  |                  Dev files                   |                  Test Files                  |
-| ---------------- | :------------------------------------------: | :------------------------------------------: | :------------------------------------------: |
-| Single Domain    | `dialogues_001.json` to `dialogues_043.json` | `dialogues_001.json` to `dialogues_007.json` | `dialogues_001.json` to `dialogues_011.json` |
-| Multi Domain     | `dialogues_044.json` to `dialogues_127.json` | `dialogues_008.json` to `dialogues_020.json` | `dialogues_012.json` to `dialogues_034.json` |
-
-The single domain dialogues involve interactions with a single service, possibly
-over multiple intents. The multi-domain dialogues have interactions involving
-intents belonging to two or more different services. The multi-domain dialogues
-also involve transfer of dialogue state values from one service to the other
-wherever such a transfer is deemed natural. Eg, if a user finds a restaurant and
-searches for a movie next, the dialogue state for movie service is already
-initialized with the location from the dialogue state for restaurant service.
-
-The overall statistics of the train and dev sets are given below. The term
-*informable slots* refers to the slots over which the user can specify a
-constraint. For example, slots like *phone_number* are not informable.
-
-<table>
-    <tr>
-        <th rowspan="2"></th>
-        <th colspan="3">Train</th><th colspan="3">Dev</th><th colspan="3">Test</th>
-    </tr>
-    <tr>
-        <td>Single-domain</td>
-        <td>Multi-domain</td>
-        <td>Combined</td>
-        <td>Single-domain</td>
-        <td>Multi-domain</td>
-        <td>Combined</td>
-        <td>Single-domain</td>
-        <td>Multi-domain</td>
-        <td>Combined</td>
-    </tr>
-    <tr>
-        <td>No. of dialogues</td>
-        <td align="center">5,403</td>
-        <td align="center">10,739</td>
-        <td align="center">16,142</td>
-        <td align="center">836</td>
-        <td align="center">1,646</td>
-        <td align="center">2,482</td>
-        <td align="center">1,331</td>
-        <td align="center">2,870</td>
-        <td align="center">4,201</td>
-    </tr>
-    <tr>
-        <td>No. of turns</td>
-        <td align="center">82,588</td>
-        <td align="center">247,376</td>
-        <td align="center">329,964</td>
-        <td align="center">11,928</td>
-        <td align="center">36,798</td>
-        <td align="center">48,726</td>
-        <td align="center">16,850</td>
-        <td align="center">67,744</td>
-        <td align="center">84,594</td>
-    </tr>
-    <tr>
-        <td>No. of tokens (lower-cased)</td>
-        <td align="center">807,562</td>
-        <td align="center">2,409,857</td>
-        <td align="center">3,217,419</td>
-        <td align="center">117,492</td>
-        <td align="center">353,381</td>
-        <td align="center">470,873</td>
-        <td align="center">166,329</td>
-        <td align="center">713,731</td>
-        <td align="center">880,060</td>
-    </tr>
-     <tr>
-        <td>Average turns per dialogue</td>
-        <td align="center">15.286</td>
-        <td align="center">23.035</td>
-        <td align="center">20.441</td>
-        <td align="center">14.268</td>
-        <td align="center">22.356</td>
-        <td align="center">19.632</td>
-        <td align="center">12.660</td>
-        <td align="center">23.604</td>
-        <td align="center">20.137</td>
-    </tr>
-    <tr>
-        <td>Average tokens per turn</td>
-        <td align="center">9.778</td>
-        <td align="center">9.742</td>
-        <td align="center">9.751</td>
-        <td align="center">9.850</td>
-        <td align="center">9.603</td>
-        <td align="center">9.664</td>
-        <td align="center">9.871</td>
-        <td align="center">10.536</td>
-        <td align="center">10.403</td>
-    </tr>
-    <tr>
-        <td>Total unique tokens (lower-cased)</td>
-        <td align="center">16,350</td>
-        <td align="center">25,459</td>
-        <td align="center">30,349</td>
-        <td align="center">6,803</td>
-        <td align="center">10,533</td>
-        <td align="center">12,719</td>
-        <td align="center">7,213</td>
-        <td align="center">14,888</td>
-        <td align="center">16,382</td>
-    </tr>
-    <tr>
-        <td>Total no. of slots</td>
-        <td align="center">201</td>
-        <td align="center">214</td>
-        <td align="center">214</td>
-        <td align="center">134</td>
-        <td align="center">132</td>
-        <td align="center">136</td>
-        <td align="center">157</td>
-        <td align="center">158</td>
-        <td align="center">159</td>
-    </tr>
-    <tr>
-        <td>Total no. of informable slots</td>
-        <td align="center">138</td>
-        <td align="center">144</td>
-        <td align="center">144</td>
-        <td align="center">89</td>
-        <td align="center">87</td>
-        <td align="center">89</td>
-        <td align="center">109</td>
-        <td align="center">110</td>
-        <td align="center">111</td>
-    </tr>
-    <tr>
-        <td>Total unique slot values (lower-cased)</td>
-        <td align="center">7,070</td>
-        <td align="center">11,635</td>
-        <td align="center">14,139</td>
-        <td align="center">2,418</td>
-        <td align="center">4,182</td>
-        <td align="center">5,101</td>
-        <td align="center">2,492</td>
-        <td align="center">5,847</td>
-        <td align="center">6,533</td>
-    </tr>
-    <tr>
-        <td>Total unique informable slot values (lower-cased)</td>
-        <td align="center">3,742</td>
-        <td align="center">6,348</td>
-        <td align="center">7,661</td>
-        <td align="center">1,137</td>
-        <td align="center">2,118</td>
-        <td align="center">2,524</td>
-        <td align="center">1,387</td>
-        <td align="center">3,323</td>
-        <td align="center">3,727</td>
-    </tr>
-    <tr>
-        <td>Total domains</td>
-        <td align="center">14</td>
-        <td align="center">16</td>
-        <td align="center">16</td>
-        <td align="center">16</td>
-        <td align="center">15</td>
-        <td align="center">16</td>
-        <td align="center">17</td>
-        <td align="center">18</td>
-        <td align="center">18</td>
-    </tr>
-    <tr>
-        <td>Total services</td>
-        <td align="center">24</td>
-        <td align="center">26</td>
-        <td align="center">26</td>
-        <td align="center">17</td>
-        <td align="center">16</td>
-        <td align="center">17</td>
-        <td align="center">20</td>
-        <td align="center">21</td>
-        <td align="center">21</td>
-    </tr>
-    <tr>
-        <td>Total intents</td>
-        <td align="center">35</td>
-        <td align="center">37</td>
-        <td align="center">37</td>
-        <td align="center">28</td>
-        <td align="center">26</td>
-        <td align="center">28</td>
-        <td align="center">33</td>
-        <td align="center">34</td>
-        <td align="center">35</td>
-    </tr>
-</table>
-
-
-The following table shows how the dialogues and services are distributed among
-different domains for the train and dev sets. In this table, each multi-domain
-dialogue contirbutes to the count of every service present in the dialogue.
-Please note that a few domains like *Travel* and *Weather* are only present in
-the dev set. This is to test the generalization of models on unseen domains. The
-test set will similarly have some unseen domains which are neither present in
-the training nor in the dev set. Also, the number in parenthesis represents the
-number of unique services belonging to the corresponding domain.
-
-* In the first column, it indicates the number of unique services for the
-  domain in Train, Dev and Test datasets combined.
-* In the fourth column, it indicates the number of such unique services in the
-  Train dataset only.
-* In the seventh column, it indicates the number of such unique services in
-  the Dev dataset only.
-* In the last column, it indicates the number of such unique services in the
-  Test dataset only.
-
-<table>
-    <tr>
-        <th rowspan="2"></th>
-        <th colspan="3"># Dialogues <br> Train</th>
-        <th colspan="3"># Dialogues <br> Dev</th>
-        <th colspan="3"># Dialogues <br> Test</th>
-    </tr>
-    <tr>
-        <td>Single-domain</td>
-        <td>Multi-domain</td>
-        <td>Combined</td>
-        <td>Single-domain</td>
-        <td>Multi-domain</td>
-        <td>Combined</td>
-        <td>Single-domain</td>
-        <td>Multi-domain</td>
-        <td>Combined</td>
-    </tr>
-    <tr>
-        <td>Alarm (1)</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">37</td>
-        <td align="center">NA</td>
-        <td align="center">37 (1)</td>
-        <td align="center">47</td>
-        <td align="center">240</td>
-        <td align="center">287 (1)</td>
-    </tr>
-    <tr>
-        <td>Banks (2)</td>
-        <td align="center">207</td>
-        <td align="center">520</td>
-        <td align="center">727 (1)</td>
-        <td align="center">42</td>
-        <td align="center">252</td>
-        <td align="center">294 (1)</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-    </tr>
-    <tr>
-        <td>Buses (3)</td>
-        <td align="center">310</td>
-        <td align="center">1,970</td>
-        <td align="center">2,280 (2)</td>
-        <td align="center">44</td>
-        <td align="center">285</td>
-        <td align="center">329 (1)</td>
-        <td align="center">88</td>
-        <td align="center">438</td>
-        <td align="center">526 (1)</td>
-    </tr>
-    <tr>
-        <td>Calendar (1)</td>
-        <td align="center">169</td>
-        <td align="center">1,433</td>
-        <td align="center">1,602 (1)</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-    </tr>
-    <tr>
-        <td>Events (3)</td>
-        <td align="center">788</td>
-        <td align="center">2,721</td>
-        <td align="center">3,509 (1)</td>
-        <td align="center">73</td>
-        <td align="center">345</td>
-        <td align="center">418 (1)</td>
-        <td align="center">76</td>
-        <td align="center">516</td>
-        <td align="center">592 (1)</td>
-    </tr>
-    <tr>
-        <td>Flights (4)</td>
-        <td align="center">985</td>
-        <td align="center">1,762</td>
-        <td align="center">2,747 (2)</td>
-        <td align="center">94</td>
-        <td align="center">297</td>
-        <td align="center">391 (1)</td>
-        <td align="center">87</td>
-        <td align="center">419</td>
-        <td align="center">506 (1)</td>
-    </tr>
-        <tr>
-        <td>Homes (2)</td>
-        <td align="center">268</td>
-        <td align="center">579</td>
-        <td align="center">847 (1)</td>
-        <td align="center">81</td>
-        <td align="center">99</td>
-        <td align="center">180 (1)</td>
-        <td align="center">89</td>
-        <td align="center">157</td>
-        <td align="center">246 (1)</td>
-    </tr>
-        <tr>
-        <td>Hotels (4)</td>
-        <td align="center">457</td>
-        <td align="center">2,896</td>
-        <td align="center">3,353 (3)</td>
-        <td align="center">56</td>
-        <td align="center">521</td>
-        <td align="center">577 (2)</td>
-        <td align="center">177</td>
-        <td align="center">885</td>
-        <td align="center">1062 (2)</td>
-    </tr>
-        <tr>
-        <td>Media (3)</td>
-        <td align="center">281</td>
-        <td align="center">832</td>
-        <td align="center">1,113 (1)</td>
-        <td align="center">46</td>
-        <td align="center">133</td>
-        <td align="center">179 (1)</td>
-        <td align="center">80</td>
-        <td align="center">284</td>
-        <td align="center">364 (1)</td>
-    </tr>
-        <tr>
-        <td>Messaging (1)</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">298</td>
-        <td align="center">298 (1)</td>
-    </tr>
-        <tr>
-        <td>Movies (2)</td>
-        <td align="center">292</td>
-        <td align="center">1,325</td>
-        <td align="center">1,617 (1)</td>
-        <td align="center">47</td>
-        <td align="center">94</td>
-        <td align="center">141 (1)</td>
-        <td align="center">132</td>
-        <td align="center">449</td>
-        <td align="center">581</td>
-    </tr>
-        <tr>
-        <td>Music (3)</td>
-        <td align="center">394</td>
-        <td align="center">896</td>
-        <td align="center">1,290 (2)</td>
-        <td align="center">35</td>
-        <td align="center">161</td>
-        <td align="center">196 (1)</td>
-        <td align="center">25</td>
-        <td align="center">322</td>
-        <td align="center">347 (2)</td>
-    </tr>
-        <tr>
-        <td>Payment (1)</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">36</td>
-        <td align="center">186</td>
-        <td align="center">222 (1)</td>
-    </tr>
-        <tr>
-        <td>RentalCars (3)</td>
-        <td align="center">215</td>
-        <td align="center">1,370</td>
-        <td align="center">1,585 (2)</td>
-        <td align="center">39</td>
-        <td align="center">342</td>
-        <td align="center">381 (1)</td>
-        <td align="center">64</td>
-        <td align="center">480</td>
-        <td align="center">544 (1)</td>
-    </tr>
-        <tr>
-        <td>Restaurants (2)</td>
-        <td align="center">367</td>
-        <td align="center">2052</td>
-        <td align="center">2,419 (1)</td>
-        <td align="center">73</td>
-        <td align="center">263</td>
-        <td align="center">336 (1)</td>
-        <td align="center">73</td>
-        <td align="center">390</td>
-        <td align="center">463 (1)</td>
-    </tr>
-        <tr>
-        <td>RideSharing (2)</td>
-        <td align="center">119</td>
-        <td align="center">1,584</td>
-        <td align="center">1,703 (2)</td>
-        <td align="center">45</td>
-        <td align="center">225</td>
-        <td align="center">270 (1)</td>
-        <td align="center">34</td>
-        <td align="center">216</td>
-        <td align="center">250 (1)</td>
-    </tr>
-        <tr>
-        <td>Services (4)</td>
-        <td align="center">551</td>
-        <td align="center">1,338</td>
-        <td align="center">1,889 (3)</td>
-        <td align="center">44</td>
-        <td align="center">157</td>
-        <td align="center">201 (1)</td>
-        <td align="center">167</td>
-        <td align="center">489</td>
-        <td align="center">656 (2)</td>
-    </tr>
-        <tr>
-        <td>Trains (1)</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">NA</td>
-        <td align="center">84</td>
-        <td align="center">266</td>
-        <td align="center">350 (1)</td>
-    </tr>
-        <tr>
-        <td>Travel (1)</td>
-        <td align="center">NA</td>
-        <td align="center">1,871</td>
-        <td align="center">1,871 (1)</td>
-        <td align="center">45</td>
-        <td align="center">238</td>
-        <td align="center">283 (1)</td>
-        <td align="center">24</td>
-        <td align="center">630</td>
-        <td align="center">654 (1)</td>
-    </tr>
-        <tr>
-        <td>Weather (1)</td>
-        <td align="center">NA</td>
-        <td align="center">951</td>
-        <td align="center">951 (1)</td>
-        <td align="center">35</td>
-        <td align="center">322</td>
-        <td align="center">357 (1)</td>
-        <td align="center">48</td>
-        <td align="center">427</td>
-        <td align="center">475 (1)</td>
-    </tr>
-</table>
-
diff --git a/data/unified_datasets/schema/data.zip b/data/unified_datasets/schema/data.zip
deleted file mode 100644
index d9cecdf51bc1793bed81920c5953bbb7bc001699..0000000000000000000000000000000000000000
Binary files a/data/unified_datasets/schema/data.zip and /dev/null differ
diff --git a/data/unified_datasets/schema/ontology.json b/data/unified_datasets/schema/ontology.json
deleted file mode 100644
index 56b66390614089b661d772d6fb70f75f9ce10ad1..0000000000000000000000000000000000000000
--- a/data/unified_datasets/schema/ontology.json
+++ /dev/null
@@ -1,7163 +0,0 @@
-{
-  "domains": {
-    "bank_1": {
-      "description": "Manage bank accounts and transfer money",
-      "slots": {
-        "account_type": {
-          "description": "The account type of the user",
-          "is_categorical": true,
-          "possible_values": [
-            "checking",
-            "savings"
-          ]
-        },
-        "recipient_account_type": {
-          "description": "The account type of the recipient whom the user is transfering money to",
-          "is_categorical": true,
-          "possible_values": [
-            "checking",
-            "savings"
-          ]
-        },
-        "balance": {
-          "description": "The amount of money held in a bank account at a given time",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "amount": {
-          "description": "The amount of money to transfer",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "recipient_account_name": {
-          "description": "The account name of the recipient who is to receive the transfered money",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "bus_1": {
-      "description": "Book bus journeys from the biggest bus network in the country",
-      "slots": {
-        "from_location": {
-          "description": "City where bus is leaving from",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "to_location": {
-          "description": "City where bus is going to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "from_station": {
-          "description": "Station where bus is leaving from",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "to_station": {
-          "description": "Station where bus is going to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "leaving_date": {
-          "description": "Date of bus leaving for journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "leaving_time": {
-          "description": "Time of bus leaving for journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "fare": {
-          "description": "Fare per ticket for journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "travelers": {
-          "description": "Number of travelers for journey",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "transfers": {
-          "description": "Number of transfers in journey",
-          "is_categorical": true,
-          "possible_values": [
-            "0",
-            "1"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "bus_2": {
-      "description": "Find a bus to take you to the city you want",
-      "slots": {
-        "origin": {
-          "description": "Origin city for journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination": {
-          "description": "Destination city for journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "origin_station_name": {
-          "description": "Name of the bus terminus at the origin",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination_station_name": {
-          "description": "Name of the bus terminus at the destination",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_date": {
-          "description": "Date of bus departure",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price": {
-          "description": "Price per ticket of the itinerary",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_time": {
-          "description": "Time of bus departure",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "group_size": {
-          "description": "Size of group for the booking",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "fare_type": {
-          "description": "Type of fare for the booking",
-          "is_categorical": true,
-          "possible_values": [
-            "economy",
-            "economy extra",
-            "flexible"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "calendar_1": {
-      "description": "Calendar service to manage personal events and reservations",
-      "slots": {
-        "event_date": {
-          "description": "Date of event or for checking availability",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "event_time": {
-          "description": "Start time of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "event_location": {
-          "description": "Location of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "event_name": {
-          "description": "Title of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "available_start_time": {
-          "description": "Starting time of available time slot",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "available_end_time": {
-          "description": "Ending time of available time slot",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "event_1": {
-      "description": "The comprehensive portal to find and reserve seats at events near you",
-      "slots": {
-        "category": {
-          "description": "Type of event",
-          "is_categorical": true,
-          "possible_values": [
-            "music",
-            "sports"
-          ]
-        },
-        "subcategory": {
-          "description": "Subcategory of event, either a music genre or sport name",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "event_name": {
-          "description": "Name of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "date": {
-          "description": "Date of occurrence of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "time": {
-          "description": "Time when the event is scheduled to start",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_seats": {
-          "description": "Number of seats to find event tickets for",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5",
-            "6",
-            "7",
-            "8",
-            "9"
-          ]
-        },
-        "city_of_event": {
-          "description": "City where event is happening",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "event_location": {
-          "description": "Name of event location",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "address_of_location": {
-          "description": "Street address of event location",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "event_2": {
-      "description": "Get tickets for the coolest concerts and sports in your area",
-      "slots": {
-        "event_type": {
-          "description": "Type of event",
-          "is_categorical": true,
-          "possible_values": [
-            "music",
-            "sports"
-          ]
-        },
-        "category": {
-          "description": "The sport or music subcategory",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "event_name": {
-          "description": "Name of match or artist for event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "date": {
-          "description": "Date of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "time": {
-          "description": "Starting time for event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_tickets": {
-          "description": "Number of tickets to buy for event",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5",
-            "6",
-            "7",
-            "8",
-            "9"
-          ]
-        },
-        "city": {
-          "description": "City where the event is taking place",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "venue": {
-          "description": "Exact venue of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "venue_address": {
-          "description": "Address of event venue",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "flight_1": {
-      "description": "Find your next flight",
-      "slots": {
-        "passengers": {
-          "description": "Number of passengers in the booking",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "seating_class": {
-          "description": "Seating class for the booking",
-          "is_categorical": true,
-          "possible_values": [
-            "economy",
-            "premium economy",
-            "business",
-            "first class"
-          ]
-        },
-        "origin_city": {
-          "description": "Starting city for the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination_city": {
-          "description": "Ending city for the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "origin_airport": {
-          "description": "Airport at the starting city for the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination_airport": {
-          "description": "Airport at the ending city for the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_date": {
-          "description": "Start date for the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "return_date": {
-          "description": "Date of the return flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_stops": {
-          "description": "Number of layovers in the flight",
-          "is_categorical": true,
-          "possible_values": [
-            "0",
-            "1"
-          ]
-        },
-        "outbound_departure_time": {
-          "description": "Departure time for the outbound leg flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "outbound_arrival_time": {
-          "description": "Arrival time for the outbound leg flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_arrival_time": {
-          "description": "Arrival time for the return leg flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_departure_time": {
-          "description": "Departure time for the return leg flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price": {
-          "description": "Price of the booking per passenger",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "refundable": {
-          "description": "Whether the booking is refundable or not",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "airlines": {
-          "description": "Name of airline",
-          "is_categorical": true,
-          "possible_values": [
-            "united airlines",
-            "american airlines",
-            "delta airlines",
-            "southwest airlines",
-            "alaska airlines",
-            "british airways",
-            "air canada",
-            "air france"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "flight_2": {
-      "description": "Search for cheap flights across multiple providers",
-      "slots": {
-        "passengers": {
-          "description": "Number of passengers to book tickets for",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "seating_class": {
-          "description": "Seating class for the flight tickets",
-          "is_categorical": true,
-          "possible_values": [
-            "economy",
-            "premium economy",
-            "business",
-            "first class"
-          ]
-        },
-        "origin": {
-          "description": "City of origin for the flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination": {
-          "description": "City of destination for the flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "origin_airport": {
-          "description": "Airport where the flight is departing from",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination_airport": {
-          "description": "Airport where the flight is arriving to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_date": {
-          "description": "Date of departure flight on the ticket",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "return_date": {
-          "description": "Date of return flight on the ticket",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_stops": {
-          "description": "Number of stopovers made by the flight",
-          "is_categorical": true,
-          "possible_values": [
-            "0",
-            "1"
-          ]
-        },
-        "outbound_departure_time": {
-          "description": "Departure time of the origin-destination flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "outbound_arrival_time": {
-          "description": "Arrival time of the origin-destination flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_arrival_time": {
-          "description": "Arrival time of the destination-origin flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_departure_time": {
-          "description": "Departure time of the destination-origin flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "fare": {
-          "description": "Ticket fare for each passenger",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "is_redeye": {
-          "description": "Boolean flag indicating whether the flight is a red-eye flight",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "airlines": {
-          "description": "Name of the airline to book with",
-          "is_categorical": true,
-          "possible_values": [
-            "united airlines",
-            "american airlines",
-            "delta airlines",
-            "southwest airlines",
-            "alaska airlines",
-            "british airways",
-            "air canada",
-            "air france"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "home_1": {
-      "description": "A widely used service for finding apartments and scheduling visits",
-      "slots": {
-        "area": {
-          "description": "City where the apartment is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "address": {
-          "description": "Address of the apartment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "property_name": {
-          "description": "Name of the apartment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Phone number of the apartment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "furnished": {
-          "description": "Boolean flag indicating if the property is furnished",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "pets_allowed": {
-          "description": "Boolean flag indicating if pets are allowed",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "rent": {
-          "description": "Rent per month of the apartment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "visit_date": {
-          "description": "Date for the visit to the apartment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_beds": {
-          "description": "Number of bed rooms",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "number_of_baths": {
-          "description": "Number of baths in the apartment",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "hotel_1": {
-      "description": "A popular service for searching and reserving rooms in hotels",
-      "slots": {
-        "destination": {
-          "description": "Location of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_rooms": {
-          "description": "Number of rooms in the reservation",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3"
-          ]
-        },
-        "check_in_date": {
-          "description": "Start date for the reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_days": {
-          "description": "Number of days in the reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "star_rating": {
-          "description": "Star rating of the hotel",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "hotel_name": {
-          "description": "Name of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "street_address": {
-          "description": "Address of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Phone number of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price_per_night": {
-          "description": "Price per night for the reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "has_wifi": {
-          "description": "Boolean flag indicating if the hotel has wifi",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "hotel_2": {
-      "description": "A popular service for searching and booking houses for short term stay",
-      "slots": {
-        "where_to": {
-          "description": "Location of the house",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_adults": {
-          "description": "Number of people for the reservation",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "check_in_date": {
-          "description": "Start date for the reservation or to find the house",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "check_out_date": {
-          "description": "End date for the reservation or to find the house",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "rating": {
-          "description": "Review rating of the house",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "address": {
-          "description": "Address of the house",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Phone number of the house",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "total_price": {
-          "description": "Price per night of the house",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "has_laundry_service": {
-          "description": "Boolean flag indicating if the house has laundry service",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "hotel_3": {
-      "description": "A leading provider for searching and booking hotel rooms",
-      "slots": {
-        "location": {
-          "description": "Location of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_rooms": {
-          "description": "Number of rooms to book",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3"
-          ]
-        },
-        "check_in_date": {
-          "description": "Start date for the hotel reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "check_out_date": {
-          "description": "End date for the hotel reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "average_rating": {
-          "description": "Average review rating for the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "hotel_name": {
-          "description": "Name of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "street_address": {
-          "description": "Address of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Phone number of the hotel",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price": {
-          "description": "Total price for the stay",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pets_welcome": {
-          "description": "Boolean flag indicating if pets are allowed in the hotel",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "media_1": {
-      "description": "A leading provider of movies for searching and watching on-demand",
-      "slots": {
-        "title": {
-          "description": "Title of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Genre of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "subtitles": {
-          "description": "Boolean flag indicating if subtitles are desired for this movie",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "directed_by": {
-          "description": "Name of the director of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "movie_1": {
-      "description": "A go-to provider for finding movies, searching for show times and booking tickets",
-      "slots": {
-        "price": {
-          "description": "Price per ticket",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_tickets": {
-          "description": "Number of the movie tickets to be purchased",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5",
-            "6",
-            "7",
-            "8",
-            "9"
-          ]
-        },
-        "show_type": {
-          "description": "Type of show",
-          "is_categorical": true,
-          "possible_values": [
-            "regular",
-            "3d",
-            "imax"
-          ]
-        },
-        "theater_name": {
-          "description": "Name of the theatre",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "show_time": {
-          "description": "Time of the show",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "show_date": {
-          "description": "Date of the show",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Genre of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "street_address": {
-          "description": "Address of the theatre",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "location": {
-          "description": "City where the theatre is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "movie_name": {
-          "description": "Name of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "music_1": {
-      "description": "A popular provider of a wide range of music content for searching and listening",
-      "slots": {
-        "song_name": {
-          "description": "Name of the song",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "artist": {
-          "description": "Artist who performed the song",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "album": {
-          "description": "Album the song belongs to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Genre of the song",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "year": {
-          "description": "Year in which the song was released",
-          "is_categorical": true,
-          "possible_values": [
-            "2010",
-            "2011",
-            "2012",
-            "2013",
-            "2014",
-            "2015",
-            "2016",
-            "2017",
-            "2018",
-            "2019"
-          ]
-        },
-        "playback_device": {
-          "description": "Playback device on which the song is to be played",
-          "is_categorical": true,
-          "possible_values": [
-            "tv",
-            "kitchen speaker",
-            "bedroom speaker"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "music_2": {
-      "description": "A widely used service for finding and playing music from a variety of genres and artists",
-      "slots": {
-        "song_name": {
-          "description": "Name of the song",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "artist": {
-          "description": "Name of the artist the song is performed by",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "album": {
-          "description": "Album the song belongs to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Genre of the song",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "playback_device": {
-          "description": "Playback device on which the song is to be played",
-          "is_categorical": true,
-          "possible_values": [
-            "tv",
-            "kitchen speaker",
-            "bedroom speaker"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "rentalcar_1": {
-      "description": "Car rental service with extensive coverage of locations and cars",
-      "slots": {
-        "type": {
-          "description": "Category to which rental car belongs",
-          "is_categorical": true,
-          "possible_values": [
-            "compact",
-            "standard",
-            "full-size"
-          ]
-        },
-        "car_name": {
-          "description": "Model name of rental car",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_location": {
-          "description": "Location of rental car pickup",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_date": {
-          "description": "Date of rental car pickup",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_time": {
-          "description": "Time of rental car pickup",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_city": {
-          "description": "City to pick up the rental car",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "dropoff_date": {
-          "description": "Date of rental car drop-off",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "total_price": {
-          "description": "Total price of car rental",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "rentalcar_2": {
-      "description": "Car rental service, available worldwide",
-      "slots": {
-        "car_type": {
-          "description": "Type of car for rental",
-          "is_categorical": true,
-          "possible_values": [
-            "compact",
-            "standard",
-            "full-size"
-          ]
-        },
-        "car_name": {
-          "description": "Name of car model",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_location": {
-          "description": "Pickup location for car rental",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_date": {
-          "description": "Date of pickup for car rental",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_time": {
-          "description": "Time of pickup for car rental",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_city": {
-          "description": "City in which to pick up rental car",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "dropoff_date": {
-          "description": "End date of car rental reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "total_price": {
-          "description": "Total price of rental reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "restaurant_1": {
-      "description": "A leading provider for restaurant search and reservations",
-      "slots": {
-        "restaurant_name": {
-          "description": "Name of the restaurant",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "date": {
-          "description": "Date for the reservation or to find availability",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "time": {
-          "description": "Time for the reservation or to find availability",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "serves_alcohol": {
-          "description": "Boolean flag indicating if the restaurant serves alcohol",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "has_live_music": {
-          "description": "Boolean flag indicating if the restaurant has live music",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "phone_number": {
-          "description": "Phone number of the restaurant",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "street_address": {
-          "description": "Address of the restaurant",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "party_size": {
-          "description": "Party size for a reservation",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5",
-            "6"
-          ]
-        },
-        "price_range": {
-          "description": "Price range for the restaurant",
-          "is_categorical": true,
-          "possible_values": [
-            "inexpensive",
-            "moderate",
-            "expensive",
-            "very expensive"
-          ]
-        },
-        "city": {
-          "description": "City in which the restaurant is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "cuisine": {
-          "description": "Cuisine of food served in the restaurant",
-          "is_categorical": false,
-          "possible_values": [
-            "mexican",
-            "chinese",
-            "indian",
-            "american",
-            "italian"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "ridesharing_1": {
-      "description": "On-demand taxi calling service",
-      "slots": {
-        "destination": {
-          "description": "Destination for taxi ride",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "shared_ride": {
-          "description": "Boolean flag whether ride is shared with other passengers",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "ride_fare": {
-          "description": "Total fare for taxi ride",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "approximate_ride_duration": {
-          "description": "Approximate duration of ride to the destination",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_riders": {
-          "description": "Number of riders to call taxi for",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "ridesharing_2": {
-      "description": "App to book a cab to any destination",
-      "slots": {
-        "destination": {
-          "description": "Destination address or location for cab",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "ride_type": {
-          "description": "Type of cab ride",
-          "is_categorical": true,
-          "possible_values": [
-            "pool",
-            "regular",
-            "luxury"
-          ]
-        },
-        "ride_fare": {
-          "description": "Total fare for cab ride",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "wait_time": {
-          "description": "Expected waiting time for pick-up by cab",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_seats": {
-          "description": "Number of seats to reserve in the cab",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "services_1": {
-      "description": "A widely used service for finding and reserving the hair stylist of your choice",
-      "slots": {
-        "stylist_name": {
-          "description": "Name of the hair stylist/salon",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Phone number of the stylist/salon",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "average_rating": {
-          "description": "Average review rating for the stylist/salon",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "is_unisex": {
-          "description": "Boolean flag indicating if the salon is unisex",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "street_address": {
-          "description": "Address of the stylist/salon",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "city": {
-          "description": "City where the salon is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_date": {
-          "description": "Date for the appointment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_time": {
-          "description": "Time of the appointment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "services_2": {
-      "description": "The go-to service for finding and booking appointments with top rated dentists",
-      "slots": {
-        "dentist_name": {
-          "description": "Name of the dentist",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Phone number of the dentist",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "address": {
-          "description": "Address of the dentist",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "city": {
-          "description": "City where the dentist is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_date": {
-          "description": "Date for the appointment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_time": {
-          "description": "Time for the appointment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "offers_cosmetic_services": {
-          "description": "Boolean flag indicating if the dentist offers cosmetic services",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "services_3": {
-      "description": "A popular provider for finding the right doctor for your needs. Also allows you to schedule your visit to the doctor",
-      "slots": {
-        "doctor_name": {
-          "description": "Name of the doctor or the medical practice",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Contact number for the doctor or the medical practice",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "average_rating": {
-          "description": "Average review rating of the doctor",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "street_address": {
-          "description": "Address of the doctor",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "city": {
-          "description": "City where the doctor is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_date": {
-          "description": "Date for scheduling the appointment with the doctor",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_time": {
-          "description": "Time for the appointment with the doctor",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "type": {
-          "description": "Speciality of the doctor",
-          "is_categorical": true,
-          "possible_values": [
-            "gynecologist",
-            "ent specialist",
-            "ophthalmologist",
-            "general practitioner",
-            "dermatologist"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "travel_1": {
-      "description": "The biggest database of tourist attractions and points of interest",
-      "slots": {
-        "location": {
-          "description": "City or town where the attraction is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "attraction_name": {
-          "description": "Common name of the attraction",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "category": {
-          "description": "Category to which the attraction belongs",
-          "is_categorical": true,
-          "possible_values": [
-            "place of worship",
-            "theme park",
-            "museum",
-            "historical landmark",
-            "park",
-            "tourist attraction",
-            "sports venue",
-            "shopping area",
-            "performing arts venue",
-            "nature preserve"
-          ]
-        },
-        "phone_number": {
-          "description": "Phone number to contact the attraction",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "free_entry": {
-          "description": "Boolean flag indicating whether entrance to attraction is free",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "good_for_kids": {
-          "description": "Boolean flag indicating whether attraction is good for to take kids to",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "weather_1": {
-      "description": "Check the weather for any place and any date",
-      "slots": {
-        "precipitation": {
-          "description": "The possibility of rain or snow in percentage",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "humidity": {
-          "description": "Percentage humidity",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "wind": {
-          "description": "Wind speed in miles per hour",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "temperature": {
-          "description": "Temperature in Fahrenheit",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "city": {
-          "description": "Name of the city",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "date": {
-          "description": "Date for the weather",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "alarm_1": {
-      "description": "Manage alarms by getting and setting them easily",
-      "slots": {
-        "alarm_time": {
-          "description": "Time of the alarm",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "alarm_name": {
-          "description": "Name of the alarm",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "new_alarm_time": {
-          "description": "Time to set for the new alarm",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "new_alarm_name": {
-          "description": "Name to use for the new alarm",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "bank_2": {
-      "description": "Service to manage your bank accounts and finances",
-      "slots": {
-        "account_type": {
-          "description": "The user's account type",
-          "is_categorical": true,
-          "possible_values": [
-            "checking",
-            "savings"
-          ]
-        },
-        "recipient_account_type": {
-          "description": "The account type of the recipient to transfer the money to",
-          "is_categorical": true,
-          "possible_values": [
-            "checking",
-            "savings"
-          ]
-        },
-        "account_balance": {
-          "description": "The balance in the specified account",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "transfer_amount": {
-          "description": "The amount of money to transfer",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "recipient_name": {
-          "description": "The name of the recipient to transfer the money to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "transfer_time": {
-          "description": "Number of days for the transfer to go through",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "flight_3": {
-      "description": "Find one way and round trip flights to your favorite city",
-      "slots": {
-        "passengers": {
-          "description": "Number of passengers to find flight seats for",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "flight_class": {
-          "description": "Fare class of flight booking",
-          "is_categorical": true,
-          "possible_values": [
-            "economy",
-            "premium economy",
-            "business",
-            "first class"
-          ]
-        },
-        "origin_city": {
-          "description": "City in which the journey originates",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination_city": {
-          "description": "City in which the journey ends",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "origin_airport_name": {
-          "description": "Number of the airport flying out from",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination_airport_name": {
-          "description": "Number of the airport flying to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_date": {
-          "description": "Date of departure flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "return_date": {
-          "description": "Date of return flight",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_stops": {
-          "description": "Number of stops in the itinerary",
-          "is_categorical": true,
-          "possible_values": [
-            "0",
-            "1"
-          ]
-        },
-        "outbound_departure_time": {
-          "description": "Local time of departure of flight from origin to destination",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "outbound_arrival_time": {
-          "description": "Local time of arrival of flight from origin to destination",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_arrival_time": {
-          "description": "Local time of arrival of flight from destination to origin",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_departure_time": {
-          "description": "Local time of departure of flight from destination to origin",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price": {
-          "description": "Price per passenger of the itinerary",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_checked_bags": {
-          "description": "Number of bags to check in",
-          "is_categorical": true,
-          "possible_values": [
-            "0",
-            "1",
-            "2"
-          ]
-        },
-        "airlines": {
-          "description": "Name of airline operating the flight",
-          "is_categorical": true,
-          "possible_values": [
-            "united airlines",
-            "american airlines",
-            "delta airlines",
-            "southwest airlines",
-            "alaska airlines",
-            "british airways",
-            "air canada",
-            "air france"
-          ]
-        },
-        "arrives_next_day": {
-          "description": "Whether the flight arrives the next day",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "hotel_4": {
-      "description": "Accommodation searching and booking portal",
-      "slots": {
-        "location": {
-          "description": "City or town where the accommodation is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_rooms": {
-          "description": "Number of rooms to reserve",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3"
-          ]
-        },
-        "check_in_date": {
-          "description": "Check in date for reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "stay_length": {
-          "description": "Length of stay in days",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "star_rating": {
-          "description": "Star rating of the accommodation",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "place_name": {
-          "description": "Name of the accommodation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "street_address": {
-          "description": "Street address of the accommodation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Contact phone number of the accommodation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price_per_night": {
-          "description": "Price per night for the stay",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "smoking_allowed": {
-          "description": "Whether or not smoking is allowed inside the place",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "media_2": {
-      "description": "The widest selection and lowest prices for movie rentals",
-      "slots": {
-        "movie_name": {
-          "description": "Name of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Main genre of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "subtitle_language": {
-          "description": "Language to use for subtitles (or None for no subtitles)",
-          "is_categorical": true,
-          "possible_values": [
-            "none",
-            "english",
-            "mandarin",
-            "spanish"
-          ]
-        },
-        "director": {
-          "description": "Name of the director of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "actors": {
-          "description": "Name of an actor starring in the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price": {
-          "description": "Cost of renting movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "movie_2": {
-      "description": "The definitive database to discover new movies to watch",
-      "slots": {
-        "title": {
-          "description": "Title for movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Genre of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "aggregate_rating": {
-          "description": "Aggregate user rating for movie, scale of 10",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "starring": {
-          "description": "Name of actor starring in movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "director": {
-          "description": "Name of director of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "restaurant_2": {
-      "description": "A popular restaurant search and reservation service",
-      "slots": {
-        "restaurant_name": {
-          "description": "Name of the restaurant",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "date": {
-          "description": "Tentative date of restaurant reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "time": {
-          "description": "Tentative time of restaurant reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "has_seating_outdoors": {
-          "description": "Whether the restaurant has outdoor seating available",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "has_vegetarian_options": {
-          "description": "Whether the restaurant has adequate vegetarian options",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "phone_number": {
-          "description": "Phone number to contact restaurant",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "rating": {
-          "description": "Average user rating for restaurant on a scale of 5",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "address": {
-          "description": "Address of restaurant",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_seats": {
-          "description": "Number of seats to reserve at the restaurant",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5",
-            "6"
-          ]
-        },
-        "price_range": {
-          "description": "Price range for the restaurant",
-          "is_categorical": true,
-          "possible_values": [
-            "cheap",
-            "moderate",
-            "pricey",
-            "ultra high-end"
-          ]
-        },
-        "location": {
-          "description": "City where the restaurant is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "category": {
-          "description": "The category of food offered by the restaurant",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "services_4": {
-      "description": "Discover the right therapist for you and make reservations easily",
-      "slots": {
-        "therapist_name": {
-          "description": "Name of the therapist",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Contact number of the therapist",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "address": {
-          "description": "Address of the therapist",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "city": {
-          "description": "Area where user wants to search for a therapist",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_date": {
-          "description": "Date of the appointment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "appointment_time": {
-          "description": "Time of the appointment",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "type": {
-          "description": "Type of the therapist",
-          "is_categorical": true,
-          "possible_values": [
-            "psychologist",
-            "family counselor",
-            "psychiatrist"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "bus_3": {
-      "description": "Affordable and comfortable bus travel across the country",
-      "slots": {
-        "from_city": {
-          "description": "The city to depart from",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "to_city": {
-          "description": "The destination city of the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "from_station": {
-          "description": "Name of station of departure",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "to_station": {
-          "description": "Name of station of arrival",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_date": {
-          "description": "The date of departure",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_time": {
-          "description": "The time of departure",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price": {
-          "description": "Ticket price per passenger",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "additional_luggage": {
-          "description": "Whether to carry excess baggage in the bus",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "num_passengers": {
-          "description": "The number of tickets for the trip",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "category": {
-          "description": "How many stops the route has",
-          "is_categorical": true,
-          "possible_values": [
-            "direct",
-            "one-stop"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "event_3": {
-      "description": "Find and book tickets to any cultural events in your area",
-      "slots": {
-        "event_type": {
-          "description": "Type of cultural event",
-          "is_categorical": true,
-          "possible_values": [
-            "music",
-            "theater"
-          ]
-        },
-        "event_name": {
-          "description": "Name of artist or play",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "date": {
-          "description": "Date of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "time": {
-          "description": "Start time of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_tickets": {
-          "description": "Number of tickets to reserve for the event",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5",
-            "6",
-            "7",
-            "8",
-            "9"
-          ]
-        },
-        "price_per_ticket": {
-          "description": "Price of each ticket",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "city": {
-          "description": "City where the event is taking place",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "venue": {
-          "description": "Exact venue of event",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "venue_address": {
-          "description": "Street address of event venue",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "flight_4": {
-      "description": "Find cheap flights in seconds and book flights",
-      "slots": {
-        "number_of_tickets": {
-          "description": "the number of flight tickets for the trip",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "seating_class": {
-          "description": "The cabin seat option",
-          "is_categorical": true,
-          "possible_values": [
-            "economy",
-            "premium economy",
-            "business"
-          ]
-        },
-        "origin_airport": {
-          "description": "The name of the airport or city to depart from",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "destination_airport": {
-          "description": "The name of the airport or city to arrive at",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "departure_date": {
-          "description": "Start date of the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "return_date": {
-          "description": "End date of the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "is_nonstop": {
-          "description": "Whether the flight is a direct one",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "outbound_departure_time": {
-          "description": "Departure time of the flight flying to the destination",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "outbound_arrival_time": {
-          "description": "Arrival time of the flight flying to the destination",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_arrival_time": {
-          "description": "Arrival time of the flight coming back from the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "inbound_departure_time": {
-          "description": "Departure time of the flight coming back from the trip",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price": {
-          "description": "The total cost of the flight tickets",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "airlines": {
-          "description": "The company that provides air transport services",
-          "is_categorical": true,
-          "possible_values": [
-            "united airlines",
-            "american airlines",
-            "delta airlines",
-            "southwest airlines",
-            "alaska airlines",
-            "british airways",
-            "air canada",
-            "air france",
-            "south african airways",
-            "lot polish airlines",
-            "latam brasil"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "home_2": {
-      "description": "Service for finding properties to buy and rent",
-      "slots": {
-        "intent": {
-          "description": "Whether to buy or rent a property",
-          "is_categorical": true,
-          "possible_values": [
-            "rent",
-            "buy"
-          ]
-        },
-        "area": {
-          "description": "City where the property is located",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "address": {
-          "description": "Street address of property",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "property_name": {
-          "description": "Name of property or apartment complex",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "phone_number": {
-          "description": "Contact number of property or apartment complex",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "has_garage": {
-          "description": "Whether the property has a garage",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "in_unit_laundry": {
-          "description": "Whether the property has in-unit laundry facilities",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "price": {
-          "description": "Sale price or per-month rent of property",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "visit_date": {
-          "description": "Date for visit to the property",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_beds": {
-          "description": "Number of bedrooms in the property",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "number_of_baths": {
-          "description": "Number of bathroom in the property",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "media_3": {
-      "description": "Enjoy instant and unlimited access to best shows, movies, comedy, sports, documentaries and more.",
-      "slots": {
-        "title": {
-          "description": "Title of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Category of the content",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "subtitle_language": {
-          "description": "Language of the subtitles",
-          "is_categorical": true,
-          "possible_values": [
-            "english",
-            "spanish",
-            "hindi",
-            "french"
-          ]
-        },
-        "starring": {
-          "description": "Celebs acting in the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "messaging_1": {
-      "description": "Connect and share locations with your contacts",
-      "slots": {
-        "location": {
-          "description": "Location to share with contact",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "contact_name": {
-          "description": "Name of contact to send to",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "movie_3": {
-      "description": "A review-aggregation website for movies and television",
-      "slots": {
-        "movie_title": {
-          "description": "Name of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Type of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "percent_rating": {
-          "description": "Average critic percentage rating",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "cast": {
-          "description": "Actors in the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "directed_by": {
-          "description": "Director of the movie",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "music_3": {
-      "description": "A free, personalized platform that plays music you'll love. Discover new music and enjoy old favorites.",
-      "slots": {
-        "track": {
-          "description": "Name of the song",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "artist": {
-          "description": "Performer's name",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "album": {
-          "description": "Collection of the song",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "genre": {
-          "description": "Type of the music",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "year": {
-          "description": "Year when the song was first released",
-          "is_categorical": true,
-          "possible_values": [
-            "2010",
-            "2011",
-            "2012",
-            "2013",
-            "2014",
-            "2015",
-            "2016",
-            "2017",
-            "2018",
-            "2019"
-          ]
-        },
-        "device": {
-          "description": "Place or name of the media player to play the song selected",
-          "is_categorical": true,
-          "possible_values": [
-            "living room",
-            "kitchen",
-            "patio"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "payment_1": {
-      "description": "The fast, simple way to pay in apps, on the web, and in millions of stores",
-      "slots": {
-        "payment_method": {
-          "description": "The source of money used for making the payment",
-          "is_categorical": true,
-          "possible_values": [
-            "app balance",
-            "debit card",
-            "credit card"
-          ]
-        },
-        "amount": {
-          "description": "The amount of money to send or request",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "receiver": {
-          "description": "Name of the contact or account to make the transaction with",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "private_visibility": {
-          "description": "Whether the transaction is private or not",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "rentalcar_3": {
-      "description": "A leading global provider of car rental solutions",
-      "slots": {
-        "car_type": {
-          "description": "Type of the car",
-          "is_categorical": true,
-          "possible_values": [
-            "hatchback",
-            "sedan",
-            "suv"
-          ]
-        },
-        "car_name": {
-          "description": "Car model",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_location": {
-          "description": "Place to pick up the car",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "start_date": {
-          "description": "The first date to start using the rental car",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "pickup_time": {
-          "description": "Time for the pick-up",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "city": {
-          "description": "City where you want to rent the car",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "end_date": {
-          "description": "The date to return the car",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "price_per_day": {
-          "description": "The cost for renting the car per day",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "add_insurance": {
-          "description": "Whether to purchase insurance",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    },
-    "train_1": {
-      "description": "Service to find and reserve train journeys between cities",
-      "slots": {
-        "from": {
-          "description": "Starting city for train journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "to": {
-          "description": "Ending city for train journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "from_station": {
-          "description": "Name of station at starting city",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "to_station": {
-          "description": "Name of station at ending city",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "date_of_journey": {
-          "description": "Date of train journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "journey_start_time": {
-          "description": "Time of start of train journey",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "total": {
-          "description": "Total price of train reservation",
-          "is_categorical": false,
-          "possible_values": []
-        },
-        "number_of_adults": {
-          "description": "Number of adults to reserve train tickets for",
-          "is_categorical": true,
-          "possible_values": [
-            "1",
-            "2",
-            "3",
-            "4",
-            "5"
-          ]
-        },
-        "class": {
-          "description": "Fare class for train reservation",
-          "is_categorical": true,
-          "possible_values": [
-            "value",
-            "flexible",
-            "business"
-          ]
-        },
-        "trip_protection": {
-          "description": "Whether to add trip protection to reservation, for a fee",
-          "is_categorical": true,
-          "possible_values": [
-            "true",
-            "false"
-          ]
-        },
-        "count": {
-          "description": "the number of items found that satisfy the user's request.",
-          "is_categorical": false,
-          "possible_values": []
-        }
-      }
-    }
-  },
-  "intents": {
-    "inform": {
-      "description": "Inform the value for a slot."
-    },
-    "request": {
-      "description": "Request the value of a slot."
-    },
-    "confirm": {
-      "description": "Confirm the value of a slot before making a transactional service call."
-    },
-    "offer": {
-      "description": "Offer a certain value for a slot to the user."
-    },
-    "notify_success": {
-      "description": "Inform the user that their request was successful."
-    },
-    "notify_failure": {
-      "description": "Inform the user that their request failed."
-    },
-    "inform_count": {
-      "description": "Inform the number of items found that satisfy the user's request."
-    },
-    "offer_intent": {
-      "description": "Offer a new intent to the user."
-    },
-    "req_more": {
-      "description": "Asking the user if they need anything else."
-    },
-    "goodbye": {
-      "description": "End the dialogue."
-    },
-    "inform_intent": {
-      "description": "Express the desire to perform a certain task to the system."
-    },
-    "negate_intent": {
-      "description": "Negate the intent which has been offered by the system."
-    },
-    "affirm_intent": {
-      "description": "Agree to the intent which has been offered by the system."
-    },
-    "affirm": {
-      "description": "Agree to the system's proposition. "
-    },
-    "negate": {
-      "description": "Deny the system's proposal."
-    },
-    "select": {
-      "description": "Select a result being offered by the system."
-    },
-    "request_alts": {
-      "description": "Ask for more results besides the ones offered by the system."
-    },
-    "thank_you": {
-      "description": "Thank the system."
-    }
-  },
-  "binary_dialogue_act": [
-    {
-      "intent": "affirm",
-      "domain": "",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "restaurant_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "event_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "music_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "music_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "event_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "flight_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "media_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "rentalcar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "rentalcar_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "bus_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "bus_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "services_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "services_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "services_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "home_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "bank_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "hotel_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "calendar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "hotel_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "hotel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "alarm_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "services_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "restaurant_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "bank_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "media_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "hotel_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "music_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "event_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "rentalcar_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "bus_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "home_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "train_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "movie_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "affirm_intent",
-      "domain": "media_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "goodbye",
-      "domain": "",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "restaurant_1",
-      "slot": "intent",
-      "value": "findrestaurants"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "restaurant_1",
-      "slot": "intent",
-      "value": "reserverestaurant"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "media_1",
-      "slot": "intent",
-      "value": "playmovie"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "event_2",
-      "slot": "intent",
-      "value": "geteventdates"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "event_2",
-      "slot": "intent",
-      "value": "buyeventtickets"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "music_2",
-      "slot": "intent",
-      "value": "lookupmusic"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "music_2",
-      "slot": "intent",
-      "value": "playmedia"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "music_1",
-      "slot": "intent",
-      "value": "lookupsong"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "music_1",
-      "slot": "intent",
-      "value": "playsong"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "event_1",
-      "slot": "intent",
-      "value": "findevents"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "event_1",
-      "slot": "intent",
-      "value": "buyeventtickets"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "event_2",
-      "slot": "intent",
-      "value": "findevents"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "movie_1",
-      "slot": "intent",
-      "value": "findmovies"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "movie_1",
-      "slot": "intent",
-      "value": "gettimesformovie"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_1",
-      "slot": "intent",
-      "value": "searchonewayflight"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_2",
-      "slot": "intent",
-      "value": "searchonewayflight"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_1",
-      "slot": "intent",
-      "value": "reserveonewayflight"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_1",
-      "slot": "intent",
-      "value": "searchroundtripflights"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_1",
-      "slot": "intent",
-      "value": "reserveroundtripflights"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_2",
-      "slot": "intent",
-      "value": "searchroundtripflights"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "media_1",
-      "slot": "intent",
-      "value": "findmovies"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "ridesharing_2",
-      "slot": "intent",
-      "value": "getride"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "ridesharing_1",
-      "slot": "intent",
-      "value": "getride"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "rentalcar_1",
-      "slot": "intent",
-      "value": "getcarsavailable"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "rentalcar_1",
-      "slot": "intent",
-      "value": "reservecar"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "rentalcar_2",
-      "slot": "intent",
-      "value": "getcarsavailable"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "rentalcar_2",
-      "slot": "intent",
-      "value": "reservecar"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bus_2",
-      "slot": "intent",
-      "value": "findbus"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bus_1",
-      "slot": "intent",
-      "value": "findbus"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_2",
-      "slot": "intent",
-      "value": "bookhouse"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bus_2",
-      "slot": "intent",
-      "value": "buybusticket"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bus_1",
-      "slot": "intent",
-      "value": "buybusticket"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_2",
-      "slot": "intent",
-      "value": "findprovider"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_2",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_1",
-      "slot": "intent",
-      "value": "findprovider"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_1",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_3",
-      "slot": "intent",
-      "value": "findprovider"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_3",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "home_1",
-      "slot": "intent",
-      "value": "findapartment"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "home_1",
-      "slot": "intent",
-      "value": "schedulevisit"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bank_1",
-      "slot": "intent",
-      "value": "checkbalance"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bank_1",
-      "slot": "intent",
-      "value": "transfermoney"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_2",
-      "slot": "intent",
-      "value": "searchhouse"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "calendar_1",
-      "slot": "intent",
-      "value": "getevents"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "calendar_1",
-      "slot": "intent",
-      "value": "getavailabletime"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "calendar_1",
-      "slot": "intent",
-      "value": "addevent"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_3",
-      "slot": "intent",
-      "value": "reservehotel"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_1",
-      "slot": "intent",
-      "value": "reservehotel"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_3",
-      "slot": "intent",
-      "value": "searchhotel"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_1",
-      "slot": "intent",
-      "value": "searchhotel"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "weather_1",
-      "slot": "intent",
-      "value": "getweather"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "travel_1",
-      "slot": "intent",
-      "value": "findattractions"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "restaurant_2",
-      "slot": "intent",
-      "value": "reserverestaurant"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_3",
-      "slot": "intent",
-      "value": "searchonewayflight"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_3",
-      "slot": "intent",
-      "value": "searchroundtripflights"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "alarm_1",
-      "slot": "intent",
-      "value": "getalarms"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "alarm_1",
-      "slot": "intent",
-      "value": "addalarm"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_4",
-      "slot": "intent",
-      "value": "findprovider"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "services_4",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "restaurant_2",
-      "slot": "intent",
-      "value": "findrestaurants"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bank_2",
-      "slot": "intent",
-      "value": "checkbalance"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bank_2",
-      "slot": "intent",
-      "value": "transfermoney"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "movie_2",
-      "slot": "intent",
-      "value": "findmovies"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "media_2",
-      "slot": "intent",
-      "value": "findmovies"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "media_2",
-      "slot": "intent",
-      "value": "rentmovie"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_4",
-      "slot": "intent",
-      "value": "searchhotel"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "hotel_4",
-      "slot": "intent",
-      "value": "reservehotel"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "music_3",
-      "slot": "intent",
-      "value": "lookupmusic"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "music_3",
-      "slot": "intent",
-      "value": "playmedia"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "event_3",
-      "slot": "intent",
-      "value": "findevents"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "event_3",
-      "slot": "intent",
-      "value": "buyeventtickets"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_4",
-      "slot": "intent",
-      "value": "searchonewayflight"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "flight_4",
-      "slot": "intent",
-      "value": "searchroundtripflights"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "rentalcar_3",
-      "slot": "intent",
-      "value": "getcarsavailable"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "rentalcar_3",
-      "slot": "intent",
-      "value": "reservecar"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bus_3",
-      "slot": "intent",
-      "value": "findbus"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "bus_3",
-      "slot": "intent",
-      "value": "buybusticket"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "home_2",
-      "slot": "intent",
-      "value": "findhomebyarea"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "home_2",
-      "slot": "intent",
-      "value": "schedulevisit"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "movie_1",
-      "slot": "intent",
-      "value": "buymovietickets"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "payment_1",
-      "slot": "intent",
-      "value": "makepayment"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "payment_1",
-      "slot": "intent",
-      "value": "requestpayment"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "train_1",
-      "slot": "intent",
-      "value": "findtrains"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "train_1",
-      "slot": "intent",
-      "value": "gettraintickets"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "movie_3",
-      "slot": "intent",
-      "value": "findmovies"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "media_3",
-      "slot": "intent",
-      "value": "playmovie"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "media_3",
-      "slot": "intent",
-      "value": "findmovies"
-    },
-    {
-      "intent": "inform_intent",
-      "domain": "messaging_1",
-      "slot": "intent",
-      "value": "sharelocation"
-    },
-    {
-      "intent": "negate",
-      "domain": "",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "event_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "event_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "movie_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "flight_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "media_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "rentalcar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "rentalcar_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "bus_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "bus_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "bank_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "services_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "services_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "services_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "home_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "hotel_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "hotel_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "hotel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "restaurant_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "calendar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "hotel_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "bank_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "media_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "services_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "restaurant_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "event_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "rentalcar_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "bus_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "train_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "music_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "media_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "negate_intent",
-      "domain": "alarm_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "restaurant_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "media_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "music_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "event_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "movie_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "event_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "flight_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "flight_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "rentalcar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "services_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "services_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "services_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "home_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "hotel_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "calendar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "hotel_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "hotel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "bus_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "weather_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "music_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "rentalcar_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "travel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "bus_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "bank_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "ridesharing_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "ridesharing_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "restaurant_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "alarm_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "services_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "media_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "hotel_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "movie_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "flight_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "bank_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "event_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "movie_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "media_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "bus_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "music_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "flight_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_failure",
-      "domain": "rentalcar_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "restaurant_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "media_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "event_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "music_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "music_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "event_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "flight_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "ridesharing_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "ridesharing_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "rentalcar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "rentalcar_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "hotel_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "bus_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "bus_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "services_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "services_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "services_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "home_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "bank_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "calendar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "hotel_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "hotel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "restaurant_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "alarm_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "services_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "bank_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "media_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "hotel_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "music_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "event_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "rentalcar_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "bus_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "home_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "movie_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "payment_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "train_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "media_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "notify_success",
-      "domain": "messaging_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "restaurant_1",
-      "slot": "intent",
-      "value": "reserverestaurant"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "event_2",
-      "slot": "intent",
-      "value": "buyeventtickets"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "music_2",
-      "slot": "intent",
-      "value": "playmedia"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "music_1",
-      "slot": "intent",
-      "value": "playsong"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "event_1",
-      "slot": "intent",
-      "value": "buyeventtickets"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "movie_1",
-      "slot": "intent",
-      "value": "buymovietickets"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "flight_1",
-      "slot": "intent",
-      "value": "reserveonewayflight"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "flight_1",
-      "slot": "intent",
-      "value": "reserveroundtripflights"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "media_1",
-      "slot": "intent",
-      "value": "playmovie"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "rentalcar_1",
-      "slot": "intent",
-      "value": "reservecar"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "rentalcar_2",
-      "slot": "intent",
-      "value": "reservecar"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "bus_2",
-      "slot": "intent",
-      "value": "buybusticket"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "bus_1",
-      "slot": "intent",
-      "value": "buybusticket"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "services_2",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "services_1",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "services_3",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "home_1",
-      "slot": "intent",
-      "value": "schedulevisit"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "bank_1",
-      "slot": "intent",
-      "value": "transfermoney"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "hotel_2",
-      "slot": "intent",
-      "value": "bookhouse"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "calendar_1",
-      "slot": "intent",
-      "value": "addevent"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "hotel_3",
-      "slot": "intent",
-      "value": "reservehotel"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "hotel_1",
-      "slot": "intent",
-      "value": "reservehotel"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "alarm_1",
-      "slot": "intent",
-      "value": "addalarm"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "services_4",
-      "slot": "intent",
-      "value": "bookappointment"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "restaurant_2",
-      "slot": "intent",
-      "value": "reserverestaurant"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "bank_2",
-      "slot": "intent",
-      "value": "transfermoney"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "media_2",
-      "slot": "intent",
-      "value": "rentmovie"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "hotel_4",
-      "slot": "intent",
-      "value": "reservehotel"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "music_3",
-      "slot": "intent",
-      "value": "playmedia"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "event_3",
-      "slot": "intent",
-      "value": "buyeventtickets"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "rentalcar_3",
-      "slot": "intent",
-      "value": "reservecar"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "bus_3",
-      "slot": "intent",
-      "value": "buybusticket"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "home_2",
-      "slot": "intent",
-      "value": "schedulevisit"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "train_1",
-      "slot": "intent",
-      "value": "gettraintickets"
-    },
-    {
-      "intent": "offer_intent",
-      "domain": "media_3",
-      "slot": "intent",
-      "value": "playmovie"
-    },
-    {
-      "intent": "req_more",
-      "domain": "",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "street_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "has_live_music",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "serves_alcohol",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "cuisine",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "price_range",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_1",
-      "slot": "title",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_1",
-      "slot": "directed_by",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_1",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_1",
-      "slot": "restaurant_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "venue_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "event_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "number_of_tickets",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_2",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_1",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_1",
-      "slot": "year",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "city_of_event",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "subcategory",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "address_of_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "number_of_seats",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "category",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "event_type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "category",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "show_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "street_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "event_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "event_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_1",
-      "slot": "time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_2",
-      "slot": "venue",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "origin_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "destination_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "departure_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "origin_airport",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "refundable",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "destination_airport",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "outbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "origin",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "destination",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "departure_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "destination_airport",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "outbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "seating_class",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "is_redeye",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "origin_airport",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "passengers",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "airlines",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "outbound_departure_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "number_stops",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "return_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "inbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "return_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "number_stops",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_1",
-      "slot": "inbound_departure_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_2",
-      "slot": "inbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_2",
-      "slot": "number_of_seats",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_2",
-      "slot": "wait_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_2",
-      "slot": "ride_fare",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_2",
-      "slot": "destination",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_2",
-      "slot": "ride_type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_1",
-      "slot": "number_of_riders",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_1",
-      "slot": "destination",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_1",
-      "slot": "ride_fare",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_1",
-      "slot": "approximate_ride_duration",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "ridesharing_1",
-      "slot": "shared_ride",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "pickup_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "dropoff_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "pickup_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "pickup_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "total_price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "dropoff_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "pickup_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "pickup_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "total_price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "pickup_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "origin",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "departure_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "destination",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "origin_station_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "destination_station_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "from_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "leaving_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "to_station",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "from_station",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "to_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "where_to",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "number_of_adults",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "check_in_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "check_out_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "rating",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "has_laundry_service",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_2",
-      "slot": "total_price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "group_size",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "travelers",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_2",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_2",
-      "slot": "address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_2",
-      "slot": "offers_cosmetic_services",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_2",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_2",
-      "slot": "appointment_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_2",
-      "slot": "appointment_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "average_rating",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "street_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "appointment_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "is_unisex",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "appointment_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "street_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "appointment_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "average_rating",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "appointment_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_1",
-      "slot": "number_of_beds",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_1",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_1",
-      "slot": "pets_allowed",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_1",
-      "slot": "area",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_1",
-      "slot": "furnished",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_1",
-      "slot": "visit_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bank_1",
-      "slot": "recipient_account_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bank_1",
-      "slot": "amount",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bank_1",
-      "slot": "account_type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_2",
-      "slot": "dentist_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_1",
-      "slot": "stylist_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_3",
-      "slot": "doctor_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "calendar_1",
-      "slot": "event_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "calendar_1",
-      "slot": "event_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "calendar_1",
-      "slot": "event_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "calendar_1",
-      "slot": "event_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "check_in_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "check_out_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "average_rating",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "hotel_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "pets_welcome",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_3",
-      "slot": "street_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "destination",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "check_in_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "hotel_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "number_of_days",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "has_wifi",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "price_per_night",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "star_rating",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_1",
-      "slot": "street_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "departure_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_2",
-      "slot": "price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "movie_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "weather_1",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "weather_1",
-      "slot": "humidity",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "weather_1",
-      "slot": "wind",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "weather_1",
-      "slot": "date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_2",
-      "slot": "song_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_2",
-      "slot": "artist",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_2",
-      "slot": "album",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_1",
-      "slot": "album",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_1",
-      "slot": "song_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_1",
-      "slot": "artist",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "pickup_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "car_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_1",
-      "slot": "type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "pickup_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "car_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_2",
-      "slot": "car_type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "travel_1",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "travel_1",
-      "slot": "good_for_kids",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "travel_1",
-      "slot": "free_entry",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "travel_1",
-      "slot": "location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "fare",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "leaving_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_1",
-      "slot": "transfers",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "restaurant_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "has_vegetarian_options",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "price_range",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "category",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "has_seating_outdoors",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "restaurant_2",
-      "slot": "rating",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "origin_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "departure_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "destination_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "outbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "arrives_next_day",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "destination_airport_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "origin_airport_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "number_checked_bags",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "passengers",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "return_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "flight_class",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "inbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "alarm_1",
-      "slot": "new_alarm_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_4",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_4",
-      "slot": "address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_4",
-      "slot": "appointment_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_4",
-      "slot": "appointment_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_4",
-      "slot": "type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "services_4",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bank_2",
-      "slot": "recipient_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bank_2",
-      "slot": "transfer_amount",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bank_2",
-      "slot": "transfer_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bank_2",
-      "slot": "account_type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_2",
-      "slot": "director",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_2",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_2",
-      "slot": "starring",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_2",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_2",
-      "slot": "price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_2",
-      "slot": "actors",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_2",
-      "slot": "director",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_4",
-      "slot": "location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_4",
-      "slot": "smoking_allowed",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_4",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_4",
-      "slot": "price_per_night",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_4",
-      "slot": "stay_length",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_4",
-      "slot": "check_in_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "hotel_4",
-      "slot": "street_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_3",
-      "slot": "number_stops",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_3",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "music_3",
-      "slot": "year",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "price_per_ticket",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "venue_address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "event_type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "number_of_tickets",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "origin_airport",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "departure_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "destination_airport",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "outbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "number_of_tickets",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "seating_class",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "return_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "flight_4",
-      "slot": "inbound_arrival_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "pickup_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "end_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "start_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "price_per_day",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "add_insurance",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "to_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "departure_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "from_city",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "category",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "to_station",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "from_station",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "num_passengers",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "number_of_beds",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "area",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "in_unit_laundry",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "visit_date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "intent",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "has_garage",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "phone_number",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "number_of_baths",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "number_of_tickets",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "show_type",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "show_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_1",
-      "slot": "theater_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "property_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "home_2",
-      "slot": "address",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "payment_1",
-      "slot": "amount",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "payment_1",
-      "slot": "receiver",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "payment_1",
-      "slot": "payment_method",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "train_1",
-      "slot": "date_of_journey",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "train_1",
-      "slot": "from",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "train_1",
-      "slot": "to",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "train_1",
-      "slot": "from_station",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "train_1",
-      "slot": "to_station",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "train_1",
-      "slot": "number_of_adults",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "train_1",
-      "slot": "trip_protection",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_3",
-      "slot": "cast",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_3",
-      "slot": "directed_by",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "movie_3",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_3",
-      "slot": "genre",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_3",
-      "slot": "starring",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "media_3",
-      "slot": "title",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "departure_time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "bus_3",
-      "slot": "price",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "messaging_1",
-      "slot": "contact_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "date",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "event_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "venue",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "event_3",
-      "slot": "time",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "car_name",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "pickup_location",
-      "value": ""
-    },
-    {
-      "intent": "request",
-      "domain": "rentalcar_3",
-      "slot": "car_type",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "restaurant_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "event_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "music_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "music_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "event_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "movie_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "flight_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "flight_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "media_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "rentalcar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "rentalcar_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "bus_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "bus_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "services_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "services_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "services_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "home_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "bank_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "hotel_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "calendar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "hotel_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "hotel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "weather_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "travel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "flight_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "alarm_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "services_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "restaurant_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "bank_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "movie_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "media_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "hotel_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "music_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "event_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "flight_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "rentalcar_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "bus_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "home_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "train_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "movie_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "request_alts",
-      "domain": "media_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "restaurant_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "event_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "music_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "music_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "event_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "movie_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "flight_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "flight_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "rentalcar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "rentalcar_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "bus_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "bus_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "services_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "services_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "services_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "home_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "bank_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "hotel_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "calendar_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "hotel_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "hotel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "weather_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "travel_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "flight_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "alarm_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "services_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "restaurant_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "bank_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "movie_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "hotel_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "music_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "event_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "flight_4",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "rentalcar_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "bus_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "home_2",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "train_1",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "select",
-      "domain": "movie_3",
-      "slot": "",
-      "value": ""
-    },
-    {
-      "intent": "thank_you",
-      "domain": "",
-      "slot": "",
-      "value": ""
-    }
-  ],
-  "state": {
-    "bank_1": {
-      "account_type": "",
-      "recipient_account_type": "",
-      "balance": "",
-      "amount": "",
-      "recipient_account_name": ""
-    },
-    "bus_1": {
-      "from_location": "",
-      "to_location": "",
-      "from_station": "",
-      "to_station": "",
-      "leaving_date": "",
-      "leaving_time": "",
-      "fare": "",
-      "travelers": "",
-      "transfers": ""
-    },
-    "bus_2": {
-      "origin": "",
-      "destination": "",
-      "origin_station_name": "",
-      "destination_station_name": "",
-      "departure_date": "",
-      "price": "",
-      "departure_time": "",
-      "group_size": "",
-      "fare_type": ""
-    },
-    "calendar_1": {
-      "event_date": "",
-      "event_time": "",
-      "event_location": "",
-      "event_name": "",
-      "available_start_time": "",
-      "available_end_time": ""
-    },
-    "event_1": {
-      "category": "",
-      "subcategory": "",
-      "event_name": "",
-      "date": "",
-      "time": "",
-      "number_of_seats": "",
-      "city_of_event": "",
-      "event_location": "",
-      "address_of_location": ""
-    },
-    "event_2": {
-      "event_type": "",
-      "category": "",
-      "event_name": "",
-      "date": "",
-      "time": "",
-      "number_of_tickets": "",
-      "city": "",
-      "venue": "",
-      "venue_address": ""
-    },
-    "flight_1": {
-      "passengers": "",
-      "seating_class": "",
-      "origin_city": "",
-      "destination_city": "",
-      "origin_airport": "",
-      "destination_airport": "",
-      "departure_date": "",
-      "return_date": "",
-      "number_stops": "",
-      "outbound_departure_time": "",
-      "outbound_arrival_time": "",
-      "inbound_arrival_time": "",
-      "inbound_departure_time": "",
-      "price": "",
-      "refundable": "",
-      "airlines": ""
-    },
-    "flight_2": {
-      "passengers": "",
-      "seating_class": "",
-      "origin": "",
-      "destination": "",
-      "origin_airport": "",
-      "destination_airport": "",
-      "departure_date": "",
-      "return_date": "",
-      "number_stops": "",
-      "outbound_departure_time": "",
-      "outbound_arrival_time": "",
-      "inbound_arrival_time": "",
-      "inbound_departure_time": "",
-      "fare": "",
-      "is_redeye": "",
-      "airlines": ""
-    },
-    "home_1": {
-      "area": "",
-      "address": "",
-      "property_name": "",
-      "phone_number": "",
-      "furnished": "",
-      "pets_allowed": "",
-      "rent": "",
-      "visit_date": "",
-      "number_of_beds": "",
-      "number_of_baths": ""
-    },
-    "hotel_1": {
-      "destination": "",
-      "number_of_rooms": "",
-      "check_in_date": "",
-      "number_of_days": "",
-      "star_rating": "",
-      "hotel_name": "",
-      "street_address": "",
-      "phone_number": "",
-      "price_per_night": "",
-      "has_wifi": ""
-    },
-    "hotel_2": {
-      "where_to": "",
-      "number_of_adults": "",
-      "check_in_date": "",
-      "check_out_date": "",
-      "rating": "",
-      "address": "",
-      "phone_number": "",
-      "total_price": "",
-      "has_laundry_service": ""
-    },
-    "hotel_3": {
-      "location": "",
-      "number_of_rooms": "",
-      "check_in_date": "",
-      "check_out_date": "",
-      "average_rating": "",
-      "hotel_name": "",
-      "street_address": "",
-      "phone_number": "",
-      "price": "",
-      "pets_welcome": ""
-    },
-    "media_1": {
-      "title": "",
-      "genre": "",
-      "subtitles": "",
-      "directed_by": ""
-    },
-    "movie_1": {
-      "price": "",
-      "number_of_tickets": "",
-      "show_type": "",
-      "theater_name": "",
-      "show_time": "",
-      "show_date": "",
-      "genre": "",
-      "street_address": "",
-      "location": "",
-      "movie_name": ""
-    },
-    "music_1": {
-      "song_name": "",
-      "artist": "",
-      "album": "",
-      "genre": "",
-      "year": "",
-      "playback_device": ""
-    },
-    "music_2": {
-      "song_name": "",
-      "artist": "",
-      "album": "",
-      "genre": "",
-      "playback_device": ""
-    },
-    "rentalcar_1": {
-      "type": "",
-      "car_name": "",
-      "pickup_location": "",
-      "pickup_date": "",
-      "pickup_time": "",
-      "pickup_city": "",
-      "dropoff_date": "",
-      "total_price": ""
-    },
-    "rentalcar_2": {
-      "car_type": "",
-      "car_name": "",
-      "pickup_location": "",
-      "pickup_date": "",
-      "pickup_time": "",
-      "pickup_city": "",
-      "dropoff_date": "",
-      "total_price": ""
-    },
-    "restaurant_1": {
-      "restaurant_name": "",
-      "date": "",
-      "time": "",
-      "serves_alcohol": "",
-      "has_live_music": "",
-      "phone_number": "",
-      "street_address": "",
-      "party_size": "",
-      "price_range": "",
-      "city": "",
-      "cuisine": ""
-    },
-    "ridesharing_1": {
-      "destination": "",
-      "shared_ride": "",
-      "ride_fare": "",
-      "approximate_ride_duration": "",
-      "number_of_riders": ""
-    },
-    "ridesharing_2": {
-      "destination": "",
-      "ride_type": "",
-      "ride_fare": "",
-      "wait_time": "",
-      "number_of_seats": ""
-    },
-    "services_1": {
-      "stylist_name": "",
-      "phone_number": "",
-      "average_rating": "",
-      "is_unisex": "",
-      "street_address": "",
-      "city": "",
-      "appointment_date": "",
-      "appointment_time": ""
-    },
-    "services_2": {
-      "dentist_name": "",
-      "phone_number": "",
-      "address": "",
-      "city": "",
-      "appointment_date": "",
-      "appointment_time": "",
-      "offers_cosmetic_services": ""
-    },
-    "services_3": {
-      "doctor_name": "",
-      "phone_number": "",
-      "average_rating": "",
-      "street_address": "",
-      "city": "",
-      "appointment_date": "",
-      "appointment_time": "",
-      "type": ""
-    },
-    "travel_1": {
-      "location": "",
-      "attraction_name": "",
-      "category": "",
-      "phone_number": "",
-      "free_entry": "",
-      "good_for_kids": ""
-    },
-    "weather_1": {
-      "precipitation": "",
-      "humidity": "",
-      "wind": "",
-      "temperature": "",
-      "city": "",
-      "date": ""
-    },
-    "alarm_1": {
-      "alarm_time": "",
-      "alarm_name": "",
-      "new_alarm_time": "",
-      "new_alarm_name": ""
-    },
-    "bank_2": {
-      "account_type": "",
-      "recipient_account_type": "",
-      "account_balance": "",
-      "transfer_amount": "",
-      "recipient_name": "",
-      "transfer_time": ""
-    },
-    "flight_3": {
-      "passengers": "",
-      "flight_class": "",
-      "origin_city": "",
-      "destination_city": "",
-      "origin_airport_name": "",
-      "destination_airport_name": "",
-      "departure_date": "",
-      "return_date": "",
-      "number_stops": "",
-      "outbound_departure_time": "",
-      "outbound_arrival_time": "",
-      "inbound_arrival_time": "",
-      "inbound_departure_time": "",
-      "price": "",
-      "number_checked_bags": "",
-      "airlines": "",
-      "arrives_next_day": ""
-    },
-    "hotel_4": {
-      "location": "",
-      "number_of_rooms": "",
-      "check_in_date": "",
-      "stay_length": "",
-      "star_rating": "",
-      "place_name": "",
-      "street_address": "",
-      "phone_number": "",
-      "price_per_night": "",
-      "smoking_allowed": ""
-    },
-    "media_2": {
-      "movie_name": "",
-      "genre": "",
-      "subtitle_language": "",
-      "director": "",
-      "actors": "",
-      "price": ""
-    },
-    "movie_2": {
-      "title": "",
-      "genre": "",
-      "aggregate_rating": "",
-      "starring": "",
-      "director": ""
-    },
-    "restaurant_2": {
-      "restaurant_name": "",
-      "date": "",
-      "time": "",
-      "has_seating_outdoors": "",
-      "has_vegetarian_options": "",
-      "phone_number": "",
-      "rating": "",
-      "address": "",
-      "number_of_seats": "",
-      "price_range": "",
-      "location": "",
-      "category": ""
-    },
-    "services_4": {
-      "therapist_name": "",
-      "phone_number": "",
-      "address": "",
-      "city": "",
-      "appointment_date": "",
-      "appointment_time": "",
-      "type": ""
-    },
-    "bus_3": {
-      "from_city": "",
-      "to_city": "",
-      "from_station": "",
-      "to_station": "",
-      "departure_date": "",
-      "departure_time": "",
-      "price": "",
-      "additional_luggage": "",
-      "num_passengers": "",
-      "category": ""
-    },
-    "event_3": {
-      "event_type": "",
-      "event_name": "",
-      "date": "",
-      "time": "",
-      "number_of_tickets": "",
-      "price_per_ticket": "",
-      "city": "",
-      "venue": "",
-      "venue_address": ""
-    },
-    "flight_4": {
-      "number_of_tickets": "",
-      "seating_class": "",
-      "origin_airport": "",
-      "destination_airport": "",
-      "departure_date": "",
-      "return_date": "",
-      "is_nonstop": "",
-      "outbound_departure_time": "",
-      "outbound_arrival_time": "",
-      "inbound_arrival_time": "",
-      "inbound_departure_time": "",
-      "price": "",
-      "airlines": ""
-    },
-    "home_2": {
-      "intent": "",
-      "area": "",
-      "address": "",
-      "property_name": "",
-      "phone_number": "",
-      "has_garage": "",
-      "in_unit_laundry": "",
-      "price": "",
-      "visit_date": "",
-      "number_of_beds": "",
-      "number_of_baths": ""
-    },
-    "media_3": {
-      "title": "",
-      "genre": "",
-      "subtitle_language": "",
-      "starring": ""
-    },
-    "messaging_1": {
-      "location": "",
-      "contact_name": ""
-    },
-    "movie_3": {
-      "movie_title": "",
-      "genre": "",
-      "percent_rating": "",
-      "cast": "",
-      "directed_by": ""
-    },
-    "music_3": {
-      "track": "",
-      "artist": "",
-      "album": "",
-      "genre": "",
-      "year": "",
-      "device": ""
-    },
-    "payment_1": {
-      "payment_method": "",
-      "amount": "",
-      "receiver": "",
-      "private_visibility": ""
-    },
-    "rentalcar_3": {
-      "car_type": "",
-      "car_name": "",
-      "pickup_location": "",
-      "start_date": "",
-      "pickup_time": "",
-      "city": "",
-      "end_date": "",
-      "price_per_day": "",
-      "add_insurance": ""
-    },
-    "train_1": {
-      "from": "",
-      "to": "",
-      "from_station": "",
-      "to_station": "",
-      "date_of_journey": "",
-      "journey_start_time": "",
-      "total": "",
-      "number_of_adults": "",
-      "class": "",
-      "trip_protection": ""
-    }
-  }
-}
\ No newline at end of file
diff --git a/data/unified_datasets/schema/preprocess.py b/data/unified_datasets/schema/preprocess.py
deleted file mode 100644
index 46913390c7c89978965b0c1ae65067b4c14fe9a9..0000000000000000000000000000000000000000
--- a/data/unified_datasets/schema/preprocess.py
+++ /dev/null
@@ -1,549 +0,0 @@
-import zipfile
-import json
-import os
-from pprint import pprint
-from copy import deepcopy
-from collections import Counter
-from tqdm import tqdm
-import numpy as np
-from convlab2.util.file_util import read_zipped_json, write_zipped_json
-import re
-self_dir = os.path.dirname(os.path.abspath(__file__))
-
-
-norm_service2domain = {
-    'alarm': 'alarm',
-    'banks': 'bank',
-    'buses': 'bus',
-    'calendar': 'calendar',
-    'events': 'event',
-    'flights': 'flight',
-    'homes': 'home',
-    'hotels': 'hotel',
-    'media': 'media',
-    'messaging': 'messaging',
-    'movies': 'movie',
-    'music': 'music',
-    'payment': 'payment',
-    'rentalcars': 'rentalcar',
-    'restaurants': 'restaurant',
-    'ridesharing': 'ridesharing',
-    'services': 'services',
-    'trains': 'train',
-    'travel': 'travel',
-    'weather': 'weather'
-}
-
-digit2word = {
-    '0': 'zero', '1': 'one', '2': 'two', '3': 'three', '4': 'four', '5': 'five',
-    '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine', '10': 'ten'
-}
-
-match = {
-    '0': 0,
-    '1': 0,
-    '>1': 0,
-}
-
-
-def service2domain(service):
-    s, i = service.split('_')
-    return norm_service2domain[s.lower()]+'_'+i
-
-
-def slot_normalize(service, slot):
-    pass
-
-
-def pharse_in_sen(phrase, sen):
-    '''
-    match value in the sentence
-    :param phrase: str
-    :param sen: str
-    :return: start, end if matched, else None, None
-    '''
-    assert isinstance(phrase, str)
-    pw = '(^|[\s,\.:\?!-])(?P<v>{})([\s,\.:\?!-]|$)'
-    pn = '(^|[\s\?!-]|\D[,\.:])(?P<v>{})($|[\s\?!-]|[,\.:]\D|[,\.:]$)'
-    if phrase.isdigit():
-        pattern = pn
-    else:
-        pattern = pw
-    p = re.compile(pattern.format(re.escape(phrase)), re.I)
-    m = re.search(p, sen)
-    if m:
-        num = len(re.findall(p, sen))
-        if num > 1:
-            match['>1'] += 1
-        else:
-            match['1'] += 1
-        return m.span('v'), num
-    if phrase.isdigit() and phrase in digit2word:
-        phrase = digit2word[phrase]
-        p = re.compile(pw.format(re.escape(phrase)), re.I)
-        m = re.search(p, sen)
-        if m:
-            num = len(re.findall(p, sen))
-            if num > 1:
-                match['>1'] += 1
-            else:
-                match['1'] += 1
-            return m.span('v'), num
-    match['0'] += 1
-    return (None, None), 0
-
-
-def number_in_sen(word, sen):
-    if ' '+word+' ' in sen:
-        return sen.index(' ' + word + ' ') + 1, sen.index(' ' + word + ' ') + 1 + len(word)
-    elif ' '+word+'.' in sen:
-        return sen.index(' ' + word + '.') + 1, sen.index(' ' + word + '.') + 1 + len(word)
-    elif ' '+word+',' in sen:
-        return sen.index(' ' + word + ',') + 1, sen.index(' ' + word + ',') + 1 + len(word)
-    elif sen.startswith(word+ ' ') or sen.startswith(word+'.') or sen.startswith(word+','):
-        return 0, len(word)
-    elif word.isdigit() and word in digit2word:
-        ori_word = word
-        ori_sen = sen
-        word = digit2word[word]
-        sen = sen.lower()
-        if ' ' + word + ' ' in sen:
-            return sen.index(' ' + word + ' ') + 1, sen.index(' ' + word + ' ') + 1 + len(word)
-        elif ' ' + word + '.' in sen:
-            return sen.index(' ' + word + '.') + 1, sen.index(' ' + word + '.') + 1 + len(word)
-        elif ' ' + word + ',' in sen:
-            return sen.index(' ' + word + ',') + 1, sen.index(' ' + word + ',') + 1 + len(word)
-        elif sen.startswith(word + ' ') or sen.startswith(word + '.') or sen.startswith(word + ','):
-            return 0, len(word)
-        word = ori_word
-        sen = ori_sen
-    return sen.index(word)
-
-
-def sys_intent():
-    return {
-        "inform": {"description": "Inform the value for a slot to the user."},
-        "request": {"description": "Request the value of a slot from the user."},
-        "confirm": {"description": "Confirm the value of a slot before making a transactional service call."},
-        "offer": {"description": "Offer a certain value for a slot to the user."},
-        "notify_success": {"description": "Inform the user that their request was successful."},
-        "notify_failure": {"description": "Inform the user that their request failed."},
-        "inform_count": {"description": "Inform the number of items found that satisfy the user's request."},
-        "offer_intent": {"description": "Offer a new intent to the user."},
-        "req_more": {"description": "Asking the user if they need anything else."},
-        "goodbye": {"description": "End the dialogue."},
-    }
-
-
-def usr_intent():
-    return {
-        "inform_intent": {"description": "Express the desire to perform a certain task to the system."},
-        "negate_intent": {"description": "Negate the intent which has been offered by the system."},
-        "affirm_intent": {"description": "Agree to the intent which has been offered by the system."},
-        "inform": {"description": "Inform the value of a slot to the system."},
-        "request": {"description": "Request the value of a slot from the system."},
-        "affirm": {"description": "Agree to the system's proposition. "},
-        "negate": {"description": "Deny the system's proposal."},
-        "select": {"description": "Select a result being offered by the system."},
-        "request_alts": {"description": "Ask for more results besides the ones offered by the system."},
-        "thank_you": {"description": "Thank the system."},
-        "goodbye": {"description": "End the dialogue."},
-    }
-
-
-def get_intent():
-    """merge sys & usr intent"""
-    return {
-        "inform": {"description": "Inform the value for a slot."},
-        "request": {"description": "Request the value of a slot."},
-        "confirm": {"description": "Confirm the value of a slot before making a transactional service call."},
-        "offer": {"description": "Offer a certain value for a slot to the user."},
-        "notify_success": {"description": "Inform the user that their request was successful."},
-        "notify_failure": {"description": "Inform the user that their request failed."},
-        "inform_count": {"description": "Inform the number of items found that satisfy the user's request."},
-        "offer_intent": {"description": "Offer a new intent to the user."},
-        "req_more": {"description": "Asking the user if they need anything else."},
-        "goodbye": {"description": "End the dialogue."},
-        "inform_intent": {"description": "Express the desire to perform a certain task to the system."},
-        "negate_intent": {"description": "Negate the intent which has been offered by the system."},
-        "affirm_intent": {"description": "Agree to the intent which has been offered by the system."},
-        "affirm": {"description": "Agree to the system's proposition. "},
-        "negate": {"description": "Deny the system's proposal."},
-        "select": {"description": "Select a result being offered by the system."},
-        "request_alts": {"description": "Ask for more results besides the ones offered by the system."},
-        "thank_you": {"description": "Thank the system."},
-    }
-
-
-def preprocess():
-    processed_dialogue = []
-    ontology = {'domains': {},
-                'intents': {},
-                'binary_dialogue_act': [],
-                'state': {}}
-    ontology['intents'].update(get_intent())
-    numerical_slots = {}
-    original_zipped_path = os.path.join(self_dir, 'original_data.zip')
-    new_dir = os.path.join(self_dir, 'original_data')
-    if not os.path.exists(original_zipped_path):
-        raise FileNotFoundError(original_zipped_path)
-    if not os.path.exists(os.path.join(self_dir, 'data.zip')) or not os.path.exists(os.path.join(self_dir, 'ontology.json')):
-        print('unzip to', new_dir)
-        print('This may take several minutes')
-        archive = zipfile.ZipFile(original_zipped_path, 'r')
-        archive.extractall(self_dir)
-        cnt = 1
-        non_cate_slot_update_cnt = 0
-        non_cate_slot_update_fail_cnt = 0
-        state_cnt = {}
-        num_train_dialog = 0
-        num_train_utt = 0
-        for data_split in ['train', 'dev', 'test']:
-            dataset_name = 'schema'
-            data_dir = os.path.join(new_dir, data_split)
-            # schema => ontology
-            f = open(os.path.join(data_dir, 'schema.json'))
-            data = json.load(f)
-            for schema in data:
-                domain = service2domain(schema['service_name'])
-                ontology['domains'].setdefault(domain, {})
-                ontology['domains'][domain]['description'] = schema['description']
-                ontology['domains'][domain].setdefault('slots', {})
-                ontology['state'].setdefault(domain, {})
-                for slot in schema['slots']:
-                    # numerical => non-categorical: not use
-                    # is_numerical = slot['is_categorical']
-                    # for value in slot['possible_values']:
-                    #     if not value.isdigit():
-                    #         is_numerical = False
-                    #         break
-                    # if is_numerical:
-                    #     numerical_slots.setdefault(slot['name'].lower(), 1)
-                    lower_values = [x.lower() for x in slot['possible_values']]
-                    ontology['domains'][domain]['slots'][slot['name'].lower()] = {
-                        "description": slot['description'],
-                        "is_categorical": slot['is_categorical'],
-                        "possible_values": lower_values
-                    }
-                    ontology['state'][domain][slot['name'].lower()] = ''
-                # add 'count' slot
-                ontology['domains'][domain]['slots']['count'] = {
-                    "description": "the number of items found that satisfy the user's request.",
-                    "is_categorical": False,
-                    "possible_values": []
-                }
-                # ontology['state'][domain]['count'] = ''
-            # pprint(numerical_slots)
-            # dialog
-            for root, dirs, files in os.walk(data_dir):
-                fs = sorted([x for x in files if 'dialogues' in x])
-                for f in tqdm(fs, desc='processing schema-guided-{}'.format(data_split)):
-                    data = json.load(open(os.path.join(data_dir, f)))
-                    if data_split == 'train':
-                        num_train_dialog += len(data)
-                    for d in data:
-                        dialogue = {
-                            "dataset": dataset_name,
-                            "data_split": data_split if data_split!='dev' else 'val',
-                            "dialogue_id": dataset_name+'_'+str(cnt),
-                            "original_id": d['dialogue_id'],
-                            "domains": [service2domain(s) for s in d['services']],
-                            "turns": []
-                        }
-                        # if d['dialogue_id'] != '84_00008':
-                        #     continue
-                        cnt += 1
-                        prev_sys_frames = []
-                        prev_user_frames = []
-                        all_slot_spans_from_da = []
-                        state = {}
-                        for domain in dialogue['domains']:
-                            state.setdefault(domain, deepcopy(ontology['state'][domain]))
-                        if data_split == 'train':
-                            num_train_utt += len(d['turns'])
-                        for utt_idx, t in enumerate(d['turns']):
-                            speaker = t['speaker'].lower()
-                            turn = {
-                                'speaker': speaker,
-                                'utterance': t['utterance'],
-                                'utt_idx': utt_idx,
-                                'dialogue_act': {
-                                    'binary': [],
-                                    'categorical': [],
-                                    'non-categorical': [],
-                                },
-                            }
-                            for i, frame in enumerate(t['frames']):
-                                domain = service2domain(frame['service'])
-                                for action in frame['actions']:
-                                    intent = action['act'].lower()
-                                    assert intent in ontology['intents'], [intent]
-                                    slot = action['slot'].lower()
-                                    value_list = action['values']
-                                    if action['act'] in ['REQ_MORE', 'AFFIRM', 'NEGATE', 'THANK_YOU', 'GOODBYE']:
-                                        turn['dialogue_act']['binary'].append({
-                                            "intent": intent,
-                                            "domain": '',
-                                            "slot": '',
-                                            "value": '',
-                                        })
-                                    elif action['act'] in ['NOTIFY_SUCCESS', 'NOTIFY_FAILURE', 'REQUEST_ALTS', 'AFFIRM_INTENT', 'NEGATE_INTENT']:
-                                        # Slot and values are always empty
-                                        turn['dialogue_act']['binary'].append({
-                                            "intent": intent,
-                                            "domain": domain,
-                                            "slot": '',
-                                            "value": '',
-                                        })
-                                    elif action['act'] in ['OFFER_INTENT', 'INFORM_INTENT']:
-                                        # always has "intent" as the slot, and a single value containing the intent being offered.
-                                        assert slot == 'intent'
-                                        turn['dialogue_act']['binary'].append({
-                                            "intent": intent,
-                                            "domain": domain,
-                                            "slot": slot,
-                                            "value": value_list[0].lower(),
-                                        })
-                                    elif action['act'] in ['REQUEST', 'SELECT'] and not value_list:
-                                        # always contains a slot, but values are optional.
-                                        # assert slot in ontology['domains'][domain]['slots']
-                                        turn['dialogue_act']['binary'].append({
-                                            "intent": intent,
-                                            "domain": domain,
-                                            "slot": slot,
-                                            "value": '',
-                                        })
-                                    elif action['act'] in ['INFORM_COUNT']:
-                                        # always has "count" as the slot, and a single element in values for the number of results obtained by the system.
-                                        value = value_list[0]
-                                        assert slot in ontology['domains'][domain]['slots']
-                                        (start, end), num = pharse_in_sen(value, t['utterance'])
-                                        if num:
-                                            assert value.lower() == t['utterance'][start:end].lower() \
-                                                   or digit2word[value].lower() == t['utterance'][start:end].lower()
-                                            turn['dialogue_act']['non-categorical'].append({
-                                                "intent": intent,
-                                                "domain": domain,
-                                                "slot": slot.lower(),
-                                                "value": t['utterance'][start:end].lower(),
-                                                "start": start,
-                                                "end": end
-                                            })
-                                    else:
-                                        # have slot & value
-                                        if ontology['domains'][domain]['slots'][slot]['is_categorical']:
-                                            for value in value_list:
-                                                value = value.lower()
-                                                if value not in ontology['domains'][domain]['slots'][slot]['possible_values'] and value != 'dontcare':
-                                                    ontology['domains'][domain]['slots'][slot]['possible_values'].append(value)
-                                                    print('add value to ontology', domain, slot, value)
-                                                assert value in ontology['domains'][domain]['slots'][slot][
-                                                    'possible_values'] or value == 'dontcare'
-                                                turn['dialogue_act']['categorical'].append({
-                                                    "intent": intent,
-                                                    "domain": domain,
-                                                    "slot": slot,
-                                                    "value": value,
-                                                })
-                                        elif slot in numerical_slots:
-                                            value = value_list[-1]
-                                            (start, end), num = pharse_in_sen(value, t['utterance'])
-                                            if num:
-                                                assert value.lower() == t['utterance'][start:end].lower() \
-                                                       or digit2word[value].lower() == t['utterance'][start:end].lower()
-                                                turn['dialogue_act']['non-categorical'].append({
-                                                    "intent": intent,
-                                                    "domain": domain,
-                                                    "slot": slot.lower(),
-                                                    "value": t['utterance'][start:end].lower(),
-                                                    "start": start,
-                                                    "end": end
-                                                })
-                                        else:
-                                            # span info in frame['slots']
-                                            for value in value_list:
-                                                for slot_info in frame['slots']:
-                                                    start = slot_info['start']
-                                                    end = slot_info['exclusive_end']
-                                                    if slot_info['slot'] == slot and t['utterance'][start:end] == value:
-                                                        turn['dialogue_act']['non-categorical'].append({
-                                                            "intent": intent,
-                                                            "domain": domain,
-                                                            "slot": slot,
-                                                            "value": value.lower(),
-                                                            "start": start,
-                                                            "end": end
-                                                        })
-                                                        break
-                            # add span da to all_slot_spans_from_da
-                            for ele in turn['dialogue_act']['non-categorical']:
-                                all_slot_spans_from_da.insert(0, {
-                                    "domain": ele["domain"],
-                                    "slot": ele["slot"],
-                                    "value": ele["value"].lower(),
-                                    "utt_idx": utt_idx,
-                                    "start": ele["start"],
-                                    "end": ele["end"]
-                                })
-                            if speaker == 'user':
-                                # DONE: record state update, may come from sys acts
-                                # prev_state: state. update the state using current frames.
-                                # candidate span info from prev frames and current frames
-                                slot_spans = []
-                                for frame in t['frames']:
-                                    for ele in frame['slots']:
-                                        slot, start, end = ele['slot'].lower(), ele['start'], ele['exclusive_end']
-                                        slot_spans.append({
-                                            "domain": service2domain(frame['service']),
-                                            "slot": slot,
-                                            "value": t['utterance'][start:end].lower(),
-                                            "utt_idx": utt_idx,
-                                            "start": start,
-                                            "end": end
-                                        })
-                                for frame in prev_sys_frames:
-                                    for ele in frame['slots']:
-                                        slot, start, end = ele['slot'].lower(), ele['start'], ele['exclusive_end']
-                                        slot_spans.append({
-                                            "domain": service2domain(frame['service']),
-                                            "slot": slot,
-                                            "value": d['turns'][utt_idx-1]['utterance'][start:end].lower(),
-                                            "utt_idx": utt_idx-1,
-                                            "start": start,
-                                            "end": end
-                                        })
-                                # turn['slot_spans'] = slot_spans
-                                # turn['all_slot_span'] = deepcopy(all_slot_spans_from_da)
-                                state_update = {"categorical": [], "non-categorical": []}
-                                # print(utt_idx)
-                                for frame in t['frames']:
-                                    domain = service2domain(frame['service'])
-                                    # print(domain)
-                                    for slot, value_list in frame['state']['slot_values'].items():
-                                        # For categorical slots, this list contains a single value assigned to the slot.
-                                        # For non-categorical slots, all the values in this list are spoken variations
-                                        # of each other and are equivalent (e.g, "6 pm", "six in the evening",
-                                        # "evening at 6" etc.).
-                                        numerical_equal_values = []
-                                        if slot in numerical_slots:
-                                            for value in value_list:
-                                                if value in digit2word:
-                                                    numerical_equal_values.append(digit2word[value])
-                                        value_list += numerical_equal_values
-                                        assert len(value_list) > 0, print(slot, value_list)
-                                        assert slot in state[domain]
-                                        value_list = list(set([x.lower() for x in value_list]))
-                                        if state[domain][slot] in value_list:
-                                            continue
-                                        # new value
-                                        candidate_values = value_list
-                                        for prev_user_frame in prev_user_frames:
-                                            prev_domain = service2domain(prev_user_frame['service'])
-                                            if prev_domain == domain and slot in prev_user_frame['state']['slot_values']:
-                                                prev_value_list = [x.lower() for x in prev_user_frame['state']['slot_values'][slot]]
-                                                candidate_values = list(set(value_list) - set(prev_value_list))
-                                        assert state[domain][slot] not in candidate_values
-                                        assert candidate_values
-
-                                        if ontology['domains'][domain]['slots'][slot]['is_categorical']:
-                                            state_cnt.setdefault('cate_slot_update', 0)
-                                            state_cnt['cate_slot_update'] += 1
-                                            value = candidate_values[0]
-                                            state_update['categorical'].append(
-                                                {"domain": domain, "slot": slot, "value": value}
-                                            )
-                                            state[domain][slot] = value
-                                        else:
-                                            state_cnt.setdefault('non_cate_slot_update', 0)
-                                            state_cnt['non_cate_slot_update'] += 1
-                                            span_priority = []
-                                            slot_spans_len = len(slot_spans)
-                                            all_slot_spans = slot_spans+all_slot_spans_from_da
-                                            for span_idx, slot_span in enumerate(all_slot_spans):
-                                                priority = 0
-                                                span_domain = slot_span['domain']
-                                                span_slot = slot_span['slot']
-                                                span_value = slot_span['value']
-                                                if domain == span_domain:
-                                                    priority += 1
-                                                if slot == span_slot:
-                                                    priority += 10
-                                                if span_value in candidate_values:
-                                                    priority += 100
-                                                if span_idx + 1 <= slot_spans_len:
-                                                    priority += 0.5
-                                                span_priority.append(priority)
-                                                if span_idx + 1 <= slot_spans_len:
-                                                    # slot_spans not run out
-                                                    if max(span_priority) >= 111.5:
-                                                        break
-                                                else:
-                                                    # search in previous da
-                                                    if max(span_priority) >= 111:
-                                                        break
-                                            if span_priority and max(span_priority) >= 100:
-                                                # {111.5: 114255,
-                                                #  111: 29591,
-                                                #  100: 15208,
-                                                #  110: 2159,
-                                                #  100.5: 642,
-                                                #  110.5: 125,
-                                                #  101: 24}
-                                                max_priority = max(span_priority)
-                                                state_cnt.setdefault('max_priority', Counter())
-                                                state_cnt['max_priority'][max_priority] += 1
-                                                span_idx = np.argmax(span_priority)
-                                                ele = all_slot_spans[span_idx]
-                                                state_update['non-categorical'].append({
-                                                    "domain": domain,
-                                                    "slot": slot,
-                                                    "value": ele['value'],
-                                                    "utt_idx": ele["utt_idx"],
-                                                    "start": ele["start"],
-                                                    "end": ele["end"]
-                                                })
-                                                state[domain][slot] = ele['value']
-                                            else:
-                                                # not found
-                                                value = candidate_values[0]
-                                                state_update['non-categorical'].append(
-                                                    {"domain": domain, "slot": slot, "value": value}
-                                                )
-                                                state[domain][slot] = value
-                                                # print(t['utterance'])
-                                                non_cate_slot_update_fail_cnt += 1
-                                            non_cate_slot_update_cnt += 1
-                                turn['state'] = deepcopy(state)
-                                turn['state_update'] = state_update
-                                prev_user_frames = deepcopy(t['frames'])
-                            else:
-                                prev_sys_frames = deepcopy(t['frames'])
-
-                            for da in turn['dialogue_act']['binary']:
-                                if da not in ontology['binary_dialogue_act']:
-                                    ontology['binary_dialogue_act'].append(deepcopy(da))
-                            dialogue['turns'].append(deepcopy(turn))
-                        assert len(dialogue['turns']) % 2 == 0
-                        dialogue['turns'].pop()
-                        processed_dialogue.append(dialogue)
-                        # break
-        # sort ontology binary
-        pprint(state_cnt)
-        ontology['binary_dialogue_act'] = sorted(ontology['binary_dialogue_act'], key=lambda x:x['intent'])
-        json.dump(ontology, open(os.path.join(self_dir, 'ontology.json'), 'w'), indent=2)
-        json.dump(processed_dialogue, open('data.json', 'w'), indent=2)
-        write_zipped_json(os.path.join(self_dir, 'data.zip'), 'data.json')
-        os.remove('data.json')
-        print('# train dialog: {}, # train utterance: {}'.format(num_train_dialog, num_train_utt))
-        print(non_cate_slot_update_fail_cnt, non_cate_slot_update_cnt) # 395 162399
-
-    else:
-        # read from file
-        processed_dialogue = read_zipped_json(os.path.join(self_dir, 'data.zip'), 'data.json')
-        ontology = json.load(open(os.path.join(self_dir, 'ontology.json')))
-    return processed_dialogue, ontology
-
-
-if __name__ == '__main__':
-    preprocess()
-    print(match) # {'0': 4146, '1': 53626, '>1': 2904} =>(after user act released) {'0': 487, '1': 63886, '>1': 3097}
diff --git a/data/unified_datasets/sgd/README.md b/data/unified_datasets/sgd/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..d31998d76e45cc1f7f8ad8d1278a06fca10dedbf
--- /dev/null
+++ b/data/unified_datasets/sgd/README.md
@@ -0,0 +1,58 @@
+# Dataset Card for Schema-Guided Dialogue
+
+- **Repository:** https://github.com/google-research-datasets/dstc8-schema-guided-dialogue
+- **Paper:** https://arxiv.org/pdf/1909.05855.pdf
+- **Leaderboard:** None
+- **Who transforms the dataset:** Qi Zhu(zhuq96 at gmail dot com)
+
+### Dataset Summary
+
+The **Schema-Guided Dialogue (SGD)** dataset consists of over 20k annotated multi-domain, task-oriented conversations between a human and a virtual assistant. These conversations involve interactions with services and APIs spanning 20 domains, such as banks, events, media, calendar, travel, and weather. For most of these domains, the dataset contains multiple different APIs, many of which have overlapping functionalities but different interfaces, which reflects common real-world scenarios. The wide range of available annotations can be used for intent prediction, slot filling, dialogue state tracking, policy imitation learning, language generation, and user simulation learning, among other tasks for developing large-scale virtual assistants. Additionally, the dataset contains unseen domains and services in the evaluation set to quantify the performance in zero-shot or few-shot settings.
+
+- **How to get the transformed data from original data:** 
+  - Download [dstc8-schema-guided-dialogue-master.zip](https://github.com/google-research-datasets/dstc8-schema-guided-dialogue/archive/refs/heads/master.zip).
+  - Run `python preprocess.py` in the current directory.
+- **Main changes of the transformation:**
+  - Lower case original `act` as `intent`.
+  - Add `count` slot for each domain, non-categorical, find span by text matching.
+  - Categorize `dialogue acts` according to the `intent`.
+  - Concatenate multiple values using `|`.
+  - Retain `active_intent`, `requested_slots`, `service_call`.
+- **Annotations:**
+  - dialogue acts, state, db_results, service_call, active_intent, requested_slots.
+
+### Supported Tasks and Leaderboards
+
+NLU, DST, Policy, NLG, E2E
+
+### Languages
+
+English
+
+### Data Splits
+
+| split      | dialogues | utterances | avg_utt | avg_tokens | avg_domains | cat slot match(state) | cat slot match(goal) | cat slot match(dialogue act) | non-cat slot span(dialogue act) |
+| ---------- | --------- | ---------- | ------- | ---------- | ----------- | --------------------- | -------------------- | ---------------------------- | ------------------------------- |
+| train      | 16142     | 329964     | 20.44   | 9.75       | 1.84        | 100                   | -                    | 100                          | 100                             |
+| validation | 2482      | 48726      | 19.63   | 9.66       | 1.84        | 100                   | -                    | 100                          | 100                             |
+| test       | 4201      | 84594      | 20.14   | 10.4       | 2.02        | 100                   | -                    | 100                          | 100                             |
+| all        | 22825     | 463284     | 20.3    | 9.86       | 1.87        | 100                   | -                    | 100                          | 100                             |
+
+45 domains: ['Banks_1', 'Buses_1', 'Buses_2', 'Calendar_1', 'Events_1', 'Events_2', 'Flights_1', 'Flights_2', 'Homes_1', 'Hotels_1', 'Hotels_2', 'Hotels_3', 'Media_1', 'Movies_1', 'Music_1', 'Music_2', 'RentalCars_1', 'RentalCars_2', 'Restaurants_1', 'RideSharing_1', 'RideSharing_2', 'Services_1', 'Services_2', 'Services_3', 'Travel_1', 'Weather_1', 'Alarm_1', 'Banks_2', 'Flights_3', 'Hotels_4', 'Media_2', 'Movies_2', 'Restaurants_2', 'Services_4', 'Buses_3', 'Events_3', 'Flights_4', 'Homes_2', 'Media_3', 'Messaging_1', 'Movies_3', 'Music_3', 'Payment_1', 'RentalCars_3', 'Trains_1']
+- **cat slot match**: how many values of categorical slots are in the possible values of ontology in percentage.
+- **non-cat slot span**: how many values of non-categorical slots have span annotation in percentage.
+
+### Citation
+
+```
+@article{rastogi2019towards,
+  title={Towards Scalable Multi-domain Conversational Agents: The Schema-Guided Dialogue Dataset},
+  author={Rastogi, Abhinav and Zang, Xiaoxue and Sunkara, Srinivas and Gupta, Raghav and Khaitan, Pranav},
+  journal={arXiv preprint arXiv:1909.05855},
+  year={2019}
+}
+```
+
+### Licensing Information
+
+[**CC BY-SA 4.0**](https://creativecommons.org/licenses/by-sa/4.0/)
\ No newline at end of file
diff --git a/data/unified_datasets/schema/original_data.zip b/data/unified_datasets/sgd/data.zip
similarity index 75%
rename from data/unified_datasets/schema/original_data.zip
rename to data/unified_datasets/sgd/data.zip
index 110e958b8b1f73f0c57f8660f9201a2dfb340f71..e29e82d67d158b41122b9e0e7a90ffdf6607c370 100644
Binary files a/data/unified_datasets/schema/original_data.zip and b/data/unified_datasets/sgd/data.zip differ
diff --git a/data/unified_datasets/sgd/dummy_data.json b/data/unified_datasets/sgd/dummy_data.json
new file mode 100644
index 0000000000000000000000000000000000000000..cbb161ea5e2034ee41a80153f0fd485b57a0959b
--- /dev/null
+++ b/data/unified_datasets/sgd/dummy_data.json
@@ -0,0 +1,8534 @@
+[
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-0",
+    "original_id": "1_00000",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I am feeling hungry so I would like to find a place to eat.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Do you have a specific which you want the eating place to be located at?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I would like for it to be in San Jose.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 29,
+              "end": 37
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Is there a specific cuisine type you enjoy, such as Mexican, Italian or something else?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Mexican",
+              "start": 52,
+              "end": 59
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Italian",
+              "start": 61,
+              "end": 68
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I usually like eating the American type of food.",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "American",
+              "start": 26,
+              "end": 34
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I see that at 71 Saint Peter there is a good restaurant which is in San Jose.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "71 Saint Peter",
+              "start": 14,
+              "end": 28
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 68,
+              "end": 76
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "San Jose",
+              "cuisine": "American"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-971-8523",
+              "price_range": "moderate",
+              "restaurant_name": "71 Saint Peter",
+              "serves_alcohol": "True",
+              "street_address": "71 North San Pedro Street"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-261-5787",
+              "price_range": "moderate",
+              "restaurant_name": "Bazille",
+              "serves_alcohol": "True",
+              "street_address": "2400 Forest Avenue"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-292-4300",
+              "price_range": "moderate",
+              "restaurant_name": "Billy Berk's",
+              "serves_alcohol": "True",
+              "street_address": "99 South 1st Street"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-343-7230",
+              "price_range": "moderate",
+              "restaurant_name": "Bj's Restaurant & Brewhouse",
+              "serves_alcohol": "True",
+              "street_address": "511 Coleman Avenue"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-816-7251",
+              "price_range": "expensive",
+              "restaurant_name": "Black Sheep Brasserie",
+              "serves_alcohol": "True",
+              "street_address": "1202 Lincoln Avenue"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-238-9110",
+              "price_range": "moderate",
+              "restaurant_name": "Chuck E. Cheese's",
+              "serves_alcohol": "False",
+              "street_address": "2445 Fontaine Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-292-7444",
+              "price_range": "moderate",
+              "restaurant_name": "Famous Dave's Bar-b-que",
+              "serves_alcohol": "False",
+              "street_address": "61 Curtner Avenue"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-287-6969",
+              "price_range": "moderate",
+              "restaurant_name": "Firehouse No.1 Gastropub",
+              "serves_alcohol": "True",
+              "street_address": "69 North San Pedro Street"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "True",
+              "phone_number": "408-279-4888",
+              "price_range": "moderate",
+              "restaurant_name": "Hukilau",
+              "serves_alcohol": "True",
+              "street_address": "230 Jackson Street"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "408-998-1440",
+              "price_range": "moderate",
+              "restaurant_name": "John's Of Willow Glen",
+              "serves_alcohol": "False",
+              "street_address": "1238 Lincoln Avenue"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can you give me the address of this restaurant.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "If you want to go to this restaurant you can find it at 71 North San Pedro Street.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "71 North San Pedro Street",
+              "start": 56,
+              "end": 81
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can you give me the phone number that I can contact them with?",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "phone_number"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "If you want to phone them you can at 408-971-8523.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": "408-971-8523",
+              "start": 37,
+              "end": 49
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Is there some other restaurant which you can suggest?",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "How would you like Bazille restaurant which is situated in San Jose.",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Bazille",
+              "start": 19,
+              "end": 26
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 59,
+              "end": 67
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Do you have another restaurant matching my needs? For example a restaurant which is economical and is located in Palo Alto.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "moderate"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Palo Alto",
+              "start": 113,
+              "end": 122
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Palo Alto",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I see that 7 restaurants suit to what you requested. Bird Dog seems as a good restaurant and is located in Palo Alto.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Bird Dog",
+              "start": 53,
+              "end": 61
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Palo Alto",
+              "start": 107,
+              "end": 116
+            },
+            {
+              "intent": "inform_count",
+              "domain": "Restaurants_1",
+              "slot": "count",
+              "value": "7",
+              "start": 11,
+              "end": 12
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "price_range": "moderate"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "650-688-2614",
+              "price_range": "moderate",
+              "restaurant_name": "Bazille",
+              "serves_alcohol": "True",
+              "street_address": "550 Stanford Shopping Center"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "650-656-8180",
+              "price_range": "moderate",
+              "restaurant_name": "Bird Dog",
+              "serves_alcohol": "False",
+              "street_address": "420 Ramona Street"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "650-327-0284",
+              "price_range": "moderate",
+              "restaurant_name": "Bistro Elan",
+              "serves_alcohol": "False",
+              "street_address": "2363 Birch Street"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "650-326-8640",
+              "price_range": "moderate",
+              "restaurant_name": "Cafe Brioche",
+              "serves_alcohol": "True",
+              "street_address": "445 California Avenue"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "650-493-6787",
+              "price_range": "moderate",
+              "restaurant_name": "Cibo Restaurant & Bar",
+              "serves_alcohol": "False",
+              "street_address": "3398 El Camino Real"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "650-322-7509",
+              "price_range": "moderate",
+              "restaurant_name": "Local Union 271",
+              "serves_alcohol": "False",
+              "street_address": "271 University Avenue"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "has_live_music": "False",
+              "phone_number": "650-321-3514",
+              "price_range": "moderate",
+              "restaurant_name": "Palo Alto Grill",
+              "serves_alcohol": "True",
+              "street_address": "140 University Avenue"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Alright, that seems good. I would like to make a booking at this restaurant.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            },
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Bird Dog",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Palo Alto",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "For which time do you want the booking to be?",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I will be eating there at 11:30 am so make it for then.",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "11:30 am",
+              "start": 26,
+              "end": 34
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Bird Dog",
+            "date": "",
+            "time": "11:30 am",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Palo Alto",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Can you please confirm that you want to book a table for 2 at 11:30 am at the Bird Dog restaurant in Palo Alto for today.",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Bird Dog",
+              "start": 78,
+              "end": 86
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Palo Alto",
+              "start": 101,
+              "end": 110
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "11:30 am",
+              "start": 62,
+              "end": 70
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "today",
+              "start": 115,
+              "end": 120
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That suits me well. Can you tell me if they feature live music?",
+        "utt_idx": 18,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            },
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Bird Dog",
+            "date": "today",
+            "time": "11:30 am",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "moderate",
+            "city": "Palo Alto",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Your booking has been made without errors, but unfortunately they do not have live music.",
+        "utt_idx": 19,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            }
+          ],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Palo Alto",
+              "date": "2019-03-01",
+              "party_size": "2",
+              "restaurant_name": "Bird Dog",
+              "time": "11:30"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Palo Alto",
+              "cuisine": "American",
+              "date": "2019-03-01",
+              "has_live_music": "False",
+              "party_size": "2",
+              "phone_number": "650-656-8180",
+              "price_range": "moderate",
+              "restaurant_name": "Bird Dog",
+              "serves_alcohol": "False",
+              "street_address": "420 Ramona Street",
+              "time": "11:30"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Will I be able to find liquor there? Can you give me the address of their location?",
+        "utt_idx": 20,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Bird Dog",
+            "date": "today",
+            "time": "11:30 am",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "moderate",
+            "city": "Palo Alto",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "serves_alcohol",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The restaurant is located at 420 Ramona Street. Unfortunately they do not serve alcohol at the restaurant.",
+        "utt_idx": 21,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": "False"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "420 Ramona Street",
+              "start": 29,
+              "end": 46
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I appreciate it very much. That would be all.",
+        "utt_idx": 22,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Bird Dog",
+            "date": "today",
+            "time": "11:30 am",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "moderate",
+            "city": "Palo Alto",
+            "cuisine": "American"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Have a good time!",
+        "utt_idx": 23,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-1",
+    "original_id": "1_00001",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "Hi i need a help, i am very hungry, I am looking for a restaurant",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Sure, I will help you, What type of food are you looking for? Which city should i search in?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Some Punjabi kind of foods in milpitas",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Punjabi",
+              "start": 5,
+              "end": 12
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "milpitas",
+              "start": 30,
+              "end": 38
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "milpitas",
+            "cuisine": "Punjabi"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I found a good restaurant in Milpitas, The restaurant name is Anjappar Chettinad Restaurant",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Anjappar Chettinad Restaurant",
+              "start": 62,
+              "end": 91
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Milpitas",
+              "start": 29,
+              "end": 37
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "Milpitas",
+              "cuisine": "Indian"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Milpitas",
+              "cuisine": "Indian",
+              "has_live_music": "False",
+              "phone_number": "408-435-5500",
+              "price_range": "moderate",
+              "restaurant_name": "Anjappar Chettinad Restaurant",
+              "serves_alcohol": "False",
+              "street_address": "Milpitas Square"
+            },
+            {
+              "city": "Milpitas",
+              "cuisine": "Indian",
+              "has_live_music": "False",
+              "phone_number": "408-941-1700",
+              "price_range": "moderate",
+              "restaurant_name": "Aria Dining & Banquets Fine Indian Cuisine",
+              "serves_alcohol": "False",
+              "street_address": "212 Ranch Drive"
+            },
+            {
+              "city": "Milpitas",
+              "cuisine": "Indian",
+              "has_live_music": "False",
+              "phone_number": "408-833-6333",
+              "price_range": "moderate",
+              "restaurant_name": "Bezawada",
+              "serves_alcohol": "False",
+              "street_address": "127 Dixon Road"
+            },
+            {
+              "city": "Milpitas",
+              "cuisine": "Indian",
+              "has_live_music": "False",
+              "phone_number": "408-945-1500",
+              "price_range": "moderate",
+              "restaurant_name": "Vedas Indian Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "560 North Abel Street"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Ok, What is the address? How pricey are they?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Punjabi"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "price_range",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Price range is moderate, The address is Milpitas Square",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "moderate"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "Milpitas Square",
+              "start": 40,
+              "end": 55
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Ok, Find me another restaurant?",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Punjabi"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I found another restaurant for you, Aria Dining & Banquets Fine Indian Cuisine Restaurant at Milpitas",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Aria Dining & Banquets Fine Indian Cuisine",
+              "start": 36,
+              "end": 78
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Milpitas",
+              "start": 93,
+              "end": 101
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, suggest me another Restaurant, Some Take-out type of food will be perfect",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Take-out",
+              "start": 40,
+              "end": 48
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I found 2 Restaurants, Olive garden Italian Restaurant at Milpitas",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Olive garden Italian Restaurant",
+              "start": 23,
+              "end": 54
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Milpitas",
+              "start": 58,
+              "end": 66
+            },
+            {
+              "intent": "inform_count",
+              "domain": "Restaurants_1",
+              "slot": "count",
+              "value": "2",
+              "start": 8,
+              "end": 9
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "Milpitas",
+              "cuisine": "Take-out"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Milpitas",
+              "cuisine": "Take-out",
+              "has_live_music": "False",
+              "phone_number": "408-935-8176",
+              "price_range": "moderate",
+              "restaurant_name": "Olive Garden Italian Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "1350 Great Mall Drive"
+            },
+            {
+              "city": "Milpitas",
+              "cuisine": "Take-out",
+              "has_live_music": "False",
+              "phone_number": "669-213-9385",
+              "price_range": "moderate",
+              "restaurant_name": "Red Chillies The Malabar Cuisine",
+              "serves_alcohol": "False",
+              "street_address": "167 South Main Street"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, it seems good for me",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive garden Italian Restaurant",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "shall i reserve a table here for you?",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "offer_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, I want it on the 11th",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm_intent",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "the 11th",
+              "start": 18,
+              "end": 26
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive garden Italian Restaurant",
+            "date": "the 11th",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "please tell me what time is the reservation for?",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "at afternoon 1:30",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "afternoon 1:30",
+              "start": 3,
+              "end": 17
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive garden Italian Restaurant",
+            "date": "the 11th",
+            "time": "afternoon 1:30",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm the following details: Booking a table at Olive Garden Italian Restaurant at Milpitas on March 11th reservation time is 1:30 pm, The reservation is for 2 people",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Olive Garden Italian Restaurant",
+              "start": 57,
+              "end": 88
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Milpitas",
+              "start": 92,
+              "end": 100
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "1:30 pm",
+              "start": 135,
+              "end": 142
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "March 11th",
+              "start": 104,
+              "end": 114
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, time change to twelve in the afternoon for one people",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "twelve in the afternoon",
+              "start": 19,
+              "end": 42
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive Garden Italian Restaurant|Olive garden Italian Restaurant",
+            "date": "March 11th|the 11th",
+            "time": "twelve in the afternoon",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm the following details: the reservation time is 12 pm, The reservation is for 1 people",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "12 pm",
+              "start": 62,
+              "end": 67
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes",
+        "utt_idx": 18,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive Garden Italian Restaurant|Olive garden Italian Restaurant",
+            "date": "March 11th|the 11th",
+            "time": "12 pm|twelve in the afternoon",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Congrats, your reservation is confirmed",
+        "utt_idx": 19,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Milpitas",
+              "date": "2019-03-11",
+              "party_size": "1",
+              "restaurant_name": "Olive Garden Italian Restaurant",
+              "time": "12:00"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Milpitas",
+              "cuisine": "Take-out",
+              "date": "2019-03-11",
+              "has_live_music": "False",
+              "party_size": "1",
+              "phone_number": "408-935-8176",
+              "price_range": "moderate",
+              "restaurant_name": "Olive Garden Italian Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "1350 Great Mall Drive",
+              "time": "12:00"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "What is the Restaurant address, Do they have live music, I love it",
+        "utt_idx": 20,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive Garden Italian Restaurant|Olive garden Italian Restaurant",
+            "date": "March 11th|the 11th",
+            "time": "12 pm|twelve in the afternoon",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Sorry, They don't have live music, The restaurant address is 1350 Great Mall Drive",
+        "utt_idx": 21,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "1350 Great Mall Drive",
+              "start": 61,
+              "end": 82
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you very much for your help",
+        "utt_idx": 22,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive Garden Italian Restaurant|Olive garden Italian Restaurant",
+            "date": "March 11th|the 11th",
+            "time": "12 pm|twelve in the afternoon",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Shall i help you with anything else?",
+        "utt_idx": 23,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, Thanks",
+        "utt_idx": 24,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Olive Garden Italian Restaurant|Olive garden Italian Restaurant",
+            "date": "March 11th|the 11th",
+            "time": "12 pm|twelve in the afternoon",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Milpitas|milpitas",
+            "cuisine": "Take-out"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "NONE"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "You are welcome, have a great day",
+        "utt_idx": 25,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-2",
+    "original_id": "1_00002",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "Help me find a good restaurant.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "In which city are you looking for the restaurant and do you have any preferred cuisine?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Find me Ethiopian cuisine in Berkeley.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Ethiopian",
+              "start": 8,
+              "end": 17
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Berkeley",
+              "start": 29,
+              "end": 37
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Of the 4 Ethiopian restaurants in Berkeley, Addis Restaurant is a good one.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Addis Restaurant",
+              "start": 44,
+              "end": 60
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Berkeley",
+              "start": 34,
+              "end": 42
+            },
+            {
+              "intent": "inform_count",
+              "domain": "Restaurants_1",
+              "slot": "count",
+              "value": "4",
+              "start": 7,
+              "end": 8
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "Berkeley",
+              "cuisine": "Ethiopian"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Berkeley",
+              "cuisine": "Ethiopian",
+              "has_live_music": "False",
+              "phone_number": "510-653-3456",
+              "price_range": "moderate",
+              "restaurant_name": "Addis Restaurant",
+              "serves_alcohol": "False",
+              "street_address": "6100 Telegraph Avenue"
+            },
+            {
+              "city": "Berkeley",
+              "cuisine": "Ethiopian",
+              "has_live_music": "False",
+              "phone_number": "510-923-6181",
+              "price_range": "moderate",
+              "restaurant_name": "Barcote | Ethiopian Restaurant",
+              "serves_alcohol": "False",
+              "street_address": "6430 Telegraph Avenue"
+            },
+            {
+              "city": "Berkeley",
+              "cuisine": "Ethiopian",
+              "has_live_music": "False",
+              "phone_number": "510-843-1992",
+              "price_range": "inexpensive",
+              "restaurant_name": "Ethiopia Restaurant",
+              "serves_alcohol": "False",
+              "street_address": "2955 Telegraph Avenue"
+            },
+            {
+              "city": "Berkeley",
+              "cuisine": "Ethiopian",
+              "has_live_music": "False",
+              "phone_number": "510-883-0167",
+              "price_range": "moderate",
+              "restaurant_name": "Finfine Restaurant",
+              "serves_alcohol": "False",
+              "street_address": "2556 Telegraph Avenue"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Do they have live music?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I'm sorry. They do not have live music.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            }
+          ],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That's okay. I'd like to reserve a table for the 4th.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            },
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "the 4th",
+              "start": 45,
+              "end": 52
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Addis Restaurant",
+            "date": "the 4th",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "At what time will you be arriving at the restaurant?",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Reserve the table for the 2nd of this month at 17:15.",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "17:15",
+              "start": 47,
+              "end": 52
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "2nd of this month",
+              "start": 26,
+              "end": 43
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Addis Restaurant",
+            "date": "2nd of this month",
+            "time": "17:15",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm that you want to reserve a table for 2 at the Addis Restaurant in Berkeley for tomorrow at 5:15 pm.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Addis Restaurant",
+              "start": 61,
+              "end": 77
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Berkeley",
+              "start": 81,
+              "end": 89
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "5:15 pm",
+              "start": 106,
+              "end": 113
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "tomorrow",
+              "start": 94,
+              "end": 102
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That's right. Do they serve alcohol? And how expensive is the place?",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": ""
+            },
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Addis Restaurant",
+            "date": "2nd of this month|tomorrow",
+            "time": "17:15|5:15 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "price_range",
+            "serves_alcohol"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Sorry the reservation was not successful. Is there anything else I can assist you with?",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_failure",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Berkeley",
+              "date": "2019-03-02",
+              "party_size": "2",
+              "restaurant_name": "Addis Restaurant",
+              "time": "17:15"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Berkeley",
+              "cuisine": "Ethiopian",
+              "date": "2019-03-02",
+              "has_live_music": "False",
+              "party_size": "2",
+              "phone_number": "510-653-3456",
+              "price_range": "moderate",
+              "restaurant_name": "Addis Restaurant",
+              "serves_alcohol": "False",
+              "street_address": "6100 Telegraph Avenue",
+              "time": "17:30"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can you check if a table is available at 17:30?",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "17:30",
+              "start": 41,
+              "end": 46
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Addis Restaurant",
+            "date": "2nd of this month|tomorrow",
+            "time": "17:30",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Okay.Please confirm that you want to reserve a table for 2 at the Addis Restaurant in Berkeley for tomorrow at 5:30 pm.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Addis Restaurant",
+              "start": 66,
+              "end": 82
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Berkeley",
+              "start": 86,
+              "end": 94
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "5:30 pm",
+              "start": 111,
+              "end": 118
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "tomorrow",
+              "start": 99,
+              "end": 107
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That's correct.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Addis Restaurant",
+            "date": "2nd of this month|tomorrow",
+            "time": "17:30|5:30 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Your table has been reserved.",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Berkeley",
+              "date": "2019-03-02",
+              "party_size": "2",
+              "restaurant_name": "Addis Restaurant",
+              "time": "17:30"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Berkeley",
+              "cuisine": "Ethiopian",
+              "date": "2019-03-02",
+              "has_live_music": "False",
+              "party_size": "2",
+              "phone_number": "510-653-3456",
+              "price_range": "moderate",
+              "restaurant_name": "Addis Restaurant",
+              "serves_alcohol": "False",
+              "street_address": "6100 Telegraph Avenue",
+              "time": "17:30"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you. That's all I need for now.",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Addis Restaurant",
+            "date": "2nd of this month|tomorrow",
+            "time": "17:30|5:30 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "Berkeley",
+            "cuisine": "Ethiopian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Have a great day!",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-3",
+    "original_id": "1_00003",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I'm looking for a place to eat.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Which city should I search in? What kind of food are you looking for?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Some Freshwater fish kind of food in Palo Alto would be perfect.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Freshwater fish",
+              "start": 5,
+              "end": 20
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Palo Alto",
+              "start": 37,
+              "end": 46
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Palo Alto",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I found 4 restaurants. Odori Japanese Cuisine is a nice restaurant in Palo Alto.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Odori Japanese Cuisine",
+              "start": 23,
+              "end": 45
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Palo Alto",
+              "start": 70,
+              "end": 79
+            },
+            {
+              "intent": "inform_count",
+              "domain": "Restaurants_1",
+              "slot": "count",
+              "value": "4",
+              "start": 8,
+              "end": 9
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "Palo Alto",
+              "cuisine": "Seafood"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Palo Alto",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-327-2222",
+              "price_range": "moderate",
+              "restaurant_name": "Odori Japanese Cuisine",
+              "serves_alcohol": "False",
+              "street_address": "2111 El Camino Real"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-330-1782",
+              "price_range": "moderate",
+              "restaurant_name": "P.f. Chang's",
+              "serves_alcohol": "True",
+              "street_address": "900 Stanford Shopping Center Bldg. W Bldg. W"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-493-9188",
+              "price_range": "moderate",
+              "restaurant_name": "The Fish Market",
+              "serves_alcohol": "True",
+              "street_address": "3150 El Camino Real"
+            },
+            {
+              "city": "Palo Alto",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-213-1111",
+              "price_range": "very expensive",
+              "restaurant_name": "The Sea By Alexander's Steakhouse",
+              "serves_alcohol": "False",
+              "street_address": "4269 El Camino Real"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Could you suggest any other restaurant?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Palo Alto",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "P.f. Chang's is another nice restaurant in Palo Alto.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "P.f. Chang's",
+              "start": 0,
+              "end": 12
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Palo Alto",
+              "start": 43,
+              "end": 52
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, that works for me.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "P.f. Chang's",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Palo Alto",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Would you like to reserve a table here?",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "offer_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, I want to make a reservation for one. Make it at half past 6 in the evening.",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm_intent",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "half past 6 in the evening",
+              "start": 54,
+              "end": 80
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "P.f. Chang's",
+            "date": "",
+            "time": "half past 6 in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Palo Alto",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm: Booking a table for 1 at P.f. Chang's at 6:30 pm today in Palo Alto.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "P.f. Chang's",
+              "start": 41,
+              "end": 53
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Palo Alto",
+              "start": 74,
+              "end": 83
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "6:30 pm",
+              "start": 57,
+              "end": 64
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "today",
+              "start": 65,
+              "end": 70
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, that works for me. How pricey are they? What is their contact number?",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": ""
+            },
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "P.f. Chang's",
+            "date": "today",
+            "time": "6:30 pm|half past 6 in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Palo Alto",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "phone_number",
+            "price_range"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Your reservation is successful. Their price range is moderate and their phone number is 650-330-1782.",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "moderate"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": "650-330-1782",
+              "start": 88,
+              "end": 100
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Palo Alto",
+              "date": "2019-03-01",
+              "party_size": "1",
+              "restaurant_name": "P.f. Chang's",
+              "time": "18:30"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Palo Alto",
+              "cuisine": "Seafood",
+              "date": "2019-03-01",
+              "has_live_music": "False",
+              "party_size": "1",
+              "phone_number": "650-330-1782",
+              "price_range": "moderate",
+              "restaurant_name": "P.f. Chang's",
+              "serves_alcohol": "True",
+              "street_address": "900 Stanford Shopping Center Bldg. W Bldg. W",
+              "time": "18:30"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you very much.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "P.f. Chang's",
+            "date": "today",
+            "time": "6:30 pm|half past 6 in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Palo Alto",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Can I help you with anything else?",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, thank you very much.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "P.f. Chang's",
+            "date": "today",
+            "time": "6:30 pm|half past 6 in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Palo Alto",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "NONE"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Have a good day.",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-4",
+    "original_id": "1_00004",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I'd like to find a place to eat.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Where should I look? What kind of food are you in the mood for? You can say things like Mexican, Italian or any other kind of food.",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Mexican",
+              "start": 88,
+              "end": 95
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Italian",
+              "start": 97,
+              "end": 104
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Lobster sounds great. Please search in San Mateo.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Lobster",
+              "start": 0,
+              "end": 7
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Mateo",
+              "start": 39,
+              "end": 48
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I have found 9 restaurants. Andes Cafe San Mateo is a great restaurant in San Mateo.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Andes Cafe San Mateo",
+              "start": 28,
+              "end": 48
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Mateo",
+              "start": 74,
+              "end": 83
+            },
+            {
+              "intent": "inform_count",
+              "domain": "Restaurants_1",
+              "slot": "count",
+              "value": "9",
+              "start": 13,
+              "end": 14
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "San Mateo",
+              "cuisine": "Seafood"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-581-1305",
+              "price_range": "moderate",
+              "restaurant_name": "Andes Cafe San Mateo",
+              "serves_alcohol": "False",
+              "street_address": "2317 South El Camino Real"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-348-7810",
+              "price_range": "moderate",
+              "restaurant_name": "Fuji Sukiyaki",
+              "serves_alcohol": "False",
+              "street_address": "428 East 3rd Avenue"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-347-1228",
+              "price_range": "inexpensive",
+              "restaurant_name": "Golden Wok",
+              "serves_alcohol": "False",
+              "street_address": "570 South Norfolk Street"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-340-8974",
+              "price_range": "moderate",
+              "restaurant_name": "Joy Sushi",
+              "serves_alcohol": "True",
+              "street_address": "30 South B Street"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-342-0288",
+              "price_range": "moderate",
+              "restaurant_name": "Ni-mo Japanese Cuisine",
+              "serves_alcohol": "False",
+              "street_address": "73 East 3rd Avenue"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-315-2827",
+              "price_range": "moderate",
+              "restaurant_name": "Seapot",
+              "serves_alcohol": "True",
+              "street_address": "1952 South El Camino Real"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-349-3474",
+              "price_range": "moderate",
+              "restaurant_name": "The Fish Market",
+              "serves_alcohol": "True",
+              "street_address": "1855 South Norfolk Street"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-349-1845",
+              "price_range": "expensive",
+              "restaurant_name": "Top Of The Market",
+              "serves_alcohol": "True",
+              "street_address": "1855 South Norfolk Street"
+            },
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "650-358-0298",
+              "price_range": "moderate",
+              "restaurant_name": "Yuzu",
+              "serves_alcohol": "False",
+              "street_address": "54 37th Avenue"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "What's their phone number?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "phone_number"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Their number is 650-581-1305.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": "650-581-1305",
+              "start": 16,
+              "end": 28
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Any other suggestions?",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Fuji Sukiyaki is another great choice in San Mateo.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Fuji Sukiyaki",
+              "start": 0,
+              "end": 13
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Mateo",
+              "start": 41,
+              "end": 50
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Do they have live music?",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "They do not.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            }
+          ],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Any other suggestions?",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Golden Wok would be a great choice in San Mateo.",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Golden Wok",
+              "start": 0,
+              "end": 10
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Mateo",
+              "start": 38,
+              "end": 47
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That would work great. I would like to make a reservation there at evening 5:30 on March 14th.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            },
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "evening 5:30",
+              "start": 67,
+              "end": 79
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "March 14th",
+              "start": 83,
+              "end": 93
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Golden Wok",
+            "date": "March 14th",
+            "time": "evening 5:30",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm the following: You want to eat at Golden Wok in San Mateo on March 14th starting at 5:30 pm. The reservation would be for 2 people.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Golden Wok",
+              "start": 49,
+              "end": 59
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Mateo",
+              "start": 63,
+              "end": 72
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "5:30 pm",
+              "start": 99,
+              "end": 106
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "March 14th",
+              "start": 76,
+              "end": 86
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, that would be great. Do they serve liquor or have live music?",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            },
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Golden Wok",
+            "date": "March 14th",
+            "time": "5:30 pm|evening 5:30",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music",
+            "serves_alcohol"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Your reservation was successful. They do not play live music or serve alcohol.",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": "False"
+            }
+          ],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "San Mateo",
+              "date": "2019-03-14",
+              "party_size": "2",
+              "restaurant_name": "Golden Wok",
+              "time": "17:30"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Mateo",
+              "cuisine": "Seafood",
+              "date": "2019-03-14",
+              "has_live_music": "False",
+              "party_size": "2",
+              "phone_number": "650-347-1228",
+              "price_range": "inexpensive",
+              "restaurant_name": "Golden Wok",
+              "serves_alcohol": "False",
+              "street_address": "570 South Norfolk Street",
+              "time": "17:30"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thanks so much!",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Golden Wok",
+            "date": "March 14th",
+            "time": "5:30 pm|evening 5:30",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Is there anything else today?",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Nope, that'll be all. Thanks!",
+        "utt_idx": 18,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Golden Wok",
+            "date": "March 14th",
+            "time": "5:30 pm|evening 5:30",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Mateo",
+            "cuisine": "Lobster"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "NONE"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Have a great day!",
+        "utt_idx": 19,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-5",
+    "original_id": "1_00005",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I'm looking for a Filipino place to eat.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Filipino",
+              "start": 18,
+              "end": 26
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Which City are you looking at?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I want to eat in San Bruno",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Bruno",
+              "start": 17,
+              "end": 26
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Bruno",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I have 3 restaurants, Cabalen is a nice one in San Bruno.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Cabalen",
+              "start": 22,
+              "end": 29
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Bruno",
+              "start": 47,
+              "end": 56
+            },
+            {
+              "intent": "inform_count",
+              "domain": "Restaurants_1",
+              "slot": "count",
+              "value": "3",
+              "start": 7,
+              "end": 8
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "San Bruno",
+              "cuisine": "Filipino"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Bruno",
+              "cuisine": "Filipino",
+              "has_live_music": "False",
+              "phone_number": "650-225-9221",
+              "price_range": "inexpensive",
+              "restaurant_name": "Cabalen",
+              "serves_alcohol": "False",
+              "street_address": "495 San Mateo Avenue"
+            },
+            {
+              "city": "San Bruno",
+              "cuisine": "Filipino",
+              "has_live_music": "False",
+              "phone_number": "650-588-6078",
+              "price_range": "moderate",
+              "restaurant_name": "Isla Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "448 San Mateo Avenue"
+            },
+            {
+              "city": "San Bruno",
+              "cuisine": "Filipino",
+              "has_live_music": "False",
+              "phone_number": "650-952-5739",
+              "price_range": "inexpensive",
+              "restaurant_name": "Kuya's Asian Cuisine",
+              "serves_alcohol": "False",
+              "street_address": "460 San Mateo Avenue"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Any other suggestions?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Bruno",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What about Isla Restaurant in San Bruno?",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Isla Restaurant",
+              "start": 11,
+              "end": 26
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Bruno",
+              "start": 30,
+              "end": 39
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "How cheap is it and how much does it cost?",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "inexpensive"
+            }
+          ],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Bruno",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "price_range",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "It is moderate pricing and they are at 448 San Mateo Avenue",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "moderate"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "448 San Mateo Avenue",
+              "start": 39,
+              "end": 59
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Please can you make the reservation",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            },
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Isla Restaurant",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Bruno",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What time for?",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "On the 12th at six pm",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "six pm",
+              "start": 15,
+              "end": 21
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "the 12th",
+              "start": 3,
+              "end": 11
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Isla Restaurant",
+            "date": "the 12th",
+            "time": "six pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Bruno",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm: Booking a table for 2 at Isla Restaurant in San Bruno. It is on March 12th at 6 pm.",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Isla Restaurant",
+              "start": 41,
+              "end": 56
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Bruno",
+              "start": 60,
+              "end": 69
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "6 pm",
+              "start": 94,
+              "end": 98
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "March 12th",
+              "start": 80,
+              "end": 90
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That's good. Do they serve liquor and what is there number?",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": ""
+            },
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Isla Restaurant",
+            "date": "March 12th|the 12th",
+            "time": "6 pm|six pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Bruno",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "phone_number",
+            "serves_alcohol"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Reservation made.The number is 650-588-6078 and they do serve alcohol.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": "True"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": "650-588-6078",
+              "start": 31,
+              "end": 43
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "San Bruno",
+              "date": "2019-03-12",
+              "party_size": "2",
+              "restaurant_name": "Isla Restaurant",
+              "time": "18:00"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Bruno",
+              "cuisine": "Filipino",
+              "date": "2019-03-12",
+              "has_live_music": "False",
+              "party_size": "2",
+              "phone_number": "650-588-6078",
+              "price_range": "moderate",
+              "restaurant_name": "Isla Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "448 San Mateo Avenue",
+              "time": "18:00"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thanks a lot",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Isla Restaurant",
+            "date": "March 12th|the 12th",
+            "time": "6 pm|six pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Bruno",
+            "cuisine": "Filipino"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Have a great day.",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-6",
+    "original_id": "1_00006",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "Can you help find a place to eat?",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What kind of food like Indian or Chinese?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Indian",
+              "start": 23,
+              "end": 29
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Chinese",
+              "start": 33,
+              "end": 40
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I would like Freshwater fish.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Freshwater fish",
+              "start": 13,
+              "end": 28
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Do you have a city?",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "The city is San Jose.",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 12,
+              "end": 20
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I have one in San Jose called Ariake.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Ariake",
+              "start": 30,
+              "end": 36
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 14,
+              "end": 22
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "San Jose",
+              "cuisine": "Seafood"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-269-8383",
+              "price_range": "moderate",
+              "restaurant_name": "Ariake",
+              "serves_alcohol": "False",
+              "street_address": "1008 Blossom Hill Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-238-2888",
+              "price_range": "moderate",
+              "restaurant_name": "Big T's Seafood Market Bar",
+              "serves_alcohol": "False",
+              "street_address": "1694 Tully Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-289-8879",
+              "price_range": "moderate",
+              "restaurant_name": "Blue Water Seafood And Crab",
+              "serves_alcohol": "True",
+              "street_address": "860 Willow Street"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-649-6741",
+              "price_range": "moderate",
+              "restaurant_name": "Claw Shack",
+              "serves_alcohol": "False",
+              "street_address": "1696 Berryessa Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-392-0087",
+              "price_range": "moderate",
+              "restaurant_name": "Honba Sushi",
+              "serves_alcohol": "False",
+              "street_address": "1759 Technology Drive"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-365-9000",
+              "price_range": "moderate",
+              "restaurant_name": "Kampai Sushi & Grill",
+              "serves_alcohol": "False",
+              "street_address": "171 Branham Lane #3"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-286-1738",
+              "price_range": "moderate",
+              "restaurant_name": "Mariscos San Juan 2",
+              "serves_alcohol": "False",
+              "street_address": "1718 Senter Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-440-2468",
+              "price_range": "moderate",
+              "restaurant_name": "Mavericks Mexican Grill",
+              "serves_alcohol": "False",
+              "street_address": "1111 Meridian Avenue Ste 5"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-225-1420",
+              "price_range": "moderate",
+              "restaurant_name": "Olive Garden Italian Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "940 Blossom Hill Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "has_live_music": "False",
+              "phone_number": "408-971-1700",
+              "price_range": "expensive",
+              "restaurant_name": "Scott's Seafood",
+              "serves_alcohol": "False",
+              "street_address": "185 Park Avenue"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes that is fine.",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Ariake",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Would you like a reservation?",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "offer_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes make it for March 10th.",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm_intent",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "March 10th",
+              "start": 16,
+              "end": 26
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Ariake",
+            "date": "March 10th",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What time would you like?",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Reserve for six in the evening.",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "six in the evening",
+              "start": 12,
+              "end": 30
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Ariake",
+            "date": "March 10th",
+            "time": "six in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm Ariake in San Jose for 6 pm on March 10th for 2.",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Ariake",
+              "start": 15,
+              "end": 21
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 25,
+              "end": 33
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "6 pm",
+              "start": 38,
+              "end": 42
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "March 10th",
+              "start": 46,
+              "end": 56
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes what is the address and do they have live music?",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            },
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Ariake",
+            "date": "March 10th",
+            "time": "6 pm|six in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The address is 1008 Blossom Hill Road and they do not have live music but your reservation is confirmed.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "1008 Blossom Hill Road",
+              "start": 15,
+              "end": 37
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "San Jose",
+              "date": "2019-03-10",
+              "party_size": "2",
+              "restaurant_name": "Ariake",
+              "time": "18:00"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Jose",
+              "cuisine": "Seafood",
+              "date": "2019-03-10",
+              "has_live_music": "False",
+              "party_size": "2",
+              "phone_number": "408-269-8383",
+              "price_range": "moderate",
+              "restaurant_name": "Ariake",
+              "serves_alcohol": "False",
+              "street_address": "1008 Blossom Hill Road",
+              "time": "18:00"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you for all.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Ariake",
+            "date": "March 10th",
+            "time": "6 pm|six in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Is there anything else I can do?",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, that is all.",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Ariake",
+            "date": "March 10th",
+            "time": "6 pm|six in the evening",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "",
+            "city": "San Jose",
+            "cuisine": "Freshwater fish"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "NONE"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Thanks and have a good day.",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-7",
+    "original_id": "1_00007",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "My friend and I are looking for a place to eat.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please tell me what type of food you are looking for just say Mexican, Chinese or anything else. Also what city would you like me to search int.",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Mexican",
+              "start": 62,
+              "end": 69
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Chinese",
+              "start": 71,
+              "end": 78
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "My family and I are in San Jose and the perfect place would have pizza and pasta. We don't have a price preference.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "dontcare"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 23,
+              "end": 31
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "pizza and pasta",
+              "start": 65,
+              "end": 80
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "San Jose has a restaurant called Al Castello Ristorante that is nice.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Al Castello Ristorante",
+              "start": 33,
+              "end": 55
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 0,
+              "end": 8
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "San Jose",
+              "cuisine": "Italian"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-369-9820",
+              "price_range": "moderate",
+              "restaurant_name": "Al Castello Ristorante",
+              "serves_alcohol": "False",
+              "street_address": "2083 Camden Avenue"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-227-5502",
+              "price_range": "moderate",
+              "restaurant_name": "Angelo's Italian Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "436 Blossom Hill Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-279-4922",
+              "price_range": "moderate",
+              "restaurant_name": "Antonella's Ristorante",
+              "serves_alcohol": "True",
+              "street_address": "1701 Park Avenue"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-278-4555",
+              "price_range": "expensive",
+              "restaurant_name": "Arcadia",
+              "serves_alcohol": "True",
+              "street_address": "100 West San Carlos Street"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-226-1444",
+              "price_range": "moderate",
+              "restaurant_name": "Buca Di Beppo Italian Restaurant",
+              "serves_alcohol": "True",
+              "street_address": "925 Blossom Hill Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-618-5455",
+              "price_range": "moderate",
+              "restaurant_name": "Enoteca La Storia Downtown",
+              "serves_alcohol": "True",
+              "street_address": "320 West Saint John Street"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-446-9644",
+              "price_range": "moderate",
+              "restaurant_name": "Frankie Johnnie & Luigi Too",
+              "serves_alcohol": "True",
+              "street_address": "5245 Prospect Road"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-264-5781",
+              "price_range": "moderate",
+              "restaurant_name": "Giorgio's Italian Food & Pizzeria",
+              "serves_alcohol": "False",
+              "street_address": "1445 Foxworthy Avenue"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-423-8973",
+              "price_range": "moderate",
+              "restaurant_name": "Maggiano's Little Italy",
+              "serves_alcohol": "True",
+              "street_address": "3055 Olin Avenue Suite 1000"
+            },
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "408-217-9327",
+              "price_range": "moderate",
+              "restaurant_name": "Paesano",
+              "serves_alcohol": "False",
+              "street_address": "350 West Julian Street"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Is there any other restaurant that you can suggest?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There is also a nice restaurant called Angelo's Italian Restaurant in San Jose.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Angelo's Italian Restaurant",
+              "start": 39,
+              "end": 66
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 70,
+              "end": 78
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can I please have the address and contact number?",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "phone_number",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "408-227-5502 is their phone and it is located at 436 Blossom Hill Road.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": "408-227-5502",
+              "start": 0,
+              "end": 12
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "436 Blossom Hill Road",
+              "start": 49,
+              "end": 70
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Is there any other restaurant that you can suggest?",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "There is another nice restaurant called Antonella's Ristorante in San Jose.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Antonella's Ristorante",
+              "start": 40,
+              "end": 62
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 66,
+              "end": 74
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That restaurant will work can you please make a reservation for 12:30.",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            },
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "12:30",
+              "start": 64,
+              "end": 69
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Antonella's Ristorante",
+            "date": "",
+            "time": "12:30",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I will be booking a table at Antonella's Ristorante in San Jose. The reservation will be set at 12:30 pm for today. And it is for 2 people is this correct.",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Antonella's Ristorante",
+              "start": 29,
+              "end": 51
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "San Jose",
+              "start": 55,
+              "end": 63
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "12:30 pm",
+              "start": 96,
+              "end": 104
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "today",
+              "start": 109,
+              "end": 114
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, thank you that is correct.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Antonella's Ristorante",
+            "date": "today",
+            "time": "12:30|12:30 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I have successful made your reservation.",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "San Jose",
+              "date": "2019-03-01",
+              "party_size": "2",
+              "restaurant_name": "Antonella's Ristorante",
+              "time": "12:30"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "San Jose",
+              "cuisine": "Italian",
+              "date": "2019-03-01",
+              "has_live_music": "False",
+              "party_size": "2",
+              "phone_number": "408-279-4922",
+              "price_range": "moderate",
+              "restaurant_name": "Antonella's Ristorante",
+              "serves_alcohol": "True",
+              "street_address": "1701 Park Avenue",
+              "time": "12:30"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Thank you so much for setting that up.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Antonella's Ristorante",
+            "date": "today",
+            "time": "12:30|12:30 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Is there anything else that I can help you with.",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That is all thank you so much.",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Antonella's Ristorante",
+            "date": "today",
+            "time": "12:30|12:30 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "2",
+            "price_range": "dontcare",
+            "city": "San Jose",
+            "cuisine": "pizza and pasta"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "NONE"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Have a good day thank you.",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-8",
+    "original_id": "1_00008",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "Can you find me something economical to eat in Pleasanton.",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "moderate"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Pleasanton",
+              "start": 47,
+              "end": 57
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Are you looking for Italian, Indian or something else?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Italian",
+              "start": 20,
+              "end": 27
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Indian",
+              "start": 29,
+              "end": 35
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I would like some Italian food.",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Italian",
+              "start": 18,
+              "end": 25
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Found 5 restaurants for you out of which De La Torre's Trattoria seems a great from Pleasanton.",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "De La Torre's Trattoria",
+              "start": 41,
+              "end": 64
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Pleasanton",
+              "start": 84,
+              "end": 94
+            },
+            {
+              "intent": "inform_count",
+              "domain": "Restaurants_1",
+              "slot": "count",
+              "value": "5",
+              "start": 6,
+              "end": 7
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "Pleasanton",
+              "cuisine": "Italian",
+              "price_range": "moderate"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Pleasanton",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "925-484-3878",
+              "price_range": "moderate",
+              "restaurant_name": "De La Torre's Trattoria",
+              "serves_alcohol": "False",
+              "street_address": "6025 West Las Positas Boulevard"
+            },
+            {
+              "city": "Pleasanton",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "925-425-0099",
+              "price_range": "moderate",
+              "restaurant_name": "Forno Vecchio",
+              "serves_alcohol": "False",
+              "street_address": "680 Main Street"
+            },
+            {
+              "city": "Pleasanton",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "925-846-2555",
+              "price_range": "moderate",
+              "restaurant_name": "Gay 90's Pizza Co.",
+              "serves_alcohol": "False",
+              "street_address": "288 Main Street"
+            },
+            {
+              "city": "Pleasanton",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "925-417-2222",
+              "price_range": "moderate",
+              "restaurant_name": "Pastas Trattoria",
+              "serves_alcohol": "True",
+              "street_address": "405 Main Street"
+            },
+            {
+              "city": "Pleasanton",
+              "cuisine": "Italian",
+              "has_live_music": "False",
+              "phone_number": "925-484-9600",
+              "price_range": "moderate",
+              "restaurant_name": "Strizzi's Restaurant - Pleasanton",
+              "serves_alcohol": "False",
+              "street_address": "649 Main Street"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can you provide the address and do they have live music?",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "No, they do not have live music and its address is 6025 West Las Positas Boulevard.",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "6025 West Las Positas Boulevard",
+              "start": 51,
+              "end": 82
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Any other recommendation?",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Forno Vecchio also seems nice and its located n Pleasanton as well.",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Forno Vecchio",
+              "start": 0,
+              "end": 13
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Pleasanton",
+              "start": 48,
+              "end": 58
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Can you provide more options?",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request_alts",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Another good restaurant in Pleasanton in Gay 90's Pizza Co.",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Gay 90's Pizza Co.",
+              "start": 41,
+              "end": 59
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Pleasanton",
+              "start": 27,
+              "end": 37
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "That sounds like a good choice for me.",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Is there anything else?",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, make a reservation at the restaurant.",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What time do you want me to make the reservation?",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I'll reach there at 1:30 pm.",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "1:30 pm",
+              "start": 20,
+              "end": 27
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "",
+            "time": "1:30 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm that you want to make a reservation at Gay 90's Pizza Co. which is located in Pleasanton for 2 people. The reservation is for today at 1:30 pm.",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "2"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Gay 90's Pizza Co.",
+              "start": 54,
+              "end": 72
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Pleasanton",
+              "start": 93,
+              "end": 103
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "1:30 pm",
+              "start": 150,
+              "end": 157
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "today",
+              "start": 141,
+              "end": 146
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, change the time to 7 pm and for one person only.",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "7 pm",
+              "start": 23,
+              "end": 27
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "",
+            "time": "7 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Alright, please confirm that the reservation is at 7 pm for 1 person.",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "7 pm",
+              "start": 51,
+              "end": 55
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "No, change it on next friday.",
+        "utt_idx": 18,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "next friday",
+              "start": 17,
+              "end": 28
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "next friday",
+            "time": "7 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Sure. Please confirm that the date is now next Friday and for 1 person.",
+        "utt_idx": 19,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "next Friday",
+              "start": 42,
+              "end": 53
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes. Sounds good.",
+        "utt_idx": 20,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "next Friday|next friday",
+            "time": "7 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Your reservation is booked.",
+        "utt_idx": 21,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Pleasanton",
+              "date": "2019-03-08",
+              "party_size": "1",
+              "restaurant_name": "Gay 90's Pizza Co.",
+              "time": "19:00"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Pleasanton",
+              "cuisine": "Italian",
+              "date": "2019-03-08",
+              "has_live_music": "False",
+              "party_size": "1",
+              "phone_number": "925-846-2555",
+              "price_range": "moderate",
+              "restaurant_name": "Gay 90's Pizza Co.",
+              "serves_alcohol": "False",
+              "street_address": "288 Main Street",
+              "time": "19:00"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "What is the address of the restaurant and do the have live music?",
+        "utt_idx": 22,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "next Friday|next friday",
+            "time": "7 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music",
+            "street_address"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "The address is 288 Main Street and No, they don't have live music either.",
+        "utt_idx": 23,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "street_address",
+              "value": "288 Main Street",
+              "start": 15,
+              "end": 30
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Alright, Thank you.",
+        "utt_idx": 24,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Gay 90's Pizza Co.",
+            "date": "next Friday|next friday",
+            "time": "7 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "moderate",
+            "city": "Pleasanton",
+            "cuisine": "Italian"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Have a great day.",
+        "utt_idx": 25,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  },
+  {
+    "dataset": "sgd",
+    "data_split": "train",
+    "dialogue_id": "sgd-train-9",
+    "original_id": "1_00009",
+    "domains": [
+      "Restaurants_1"
+    ],
+    "goal": {
+      "description": "",
+      "inform": {},
+      "request": {}
+    },
+    "turns": [
+      {
+        "speaker": "user",
+        "utterance": "I am looking to eat somewhere",
+        "utt_idx": 0,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "inform_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "FindRestaurants"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "",
+            "cuisine": ""
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "What city would you like to go? Do you want American or Italian?",
+        "utt_idx": 1,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "American",
+              "start": 44,
+              "end": 52
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "Italian",
+              "start": 56,
+              "end": 63
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "I want some breakfast in Fairfield",
+        "utt_idx": 2,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "cuisine",
+              "value": "breakfast",
+              "start": 12,
+              "end": 21
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Fairfield",
+              "start": 25,
+              "end": 34
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "I recommend Mimi's cafe in fairfield",
+        "utt_idx": 3,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [],
+          "non-categorical": [
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "Mimi's cafe",
+              "start": 12,
+              "end": 23
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "fairfield",
+              "start": 27,
+              "end": 36
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "FindRestaurants",
+            "parameters": {
+              "city": "Fairfield",
+              "cuisine": "Breakfast"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Fairfield",
+              "cuisine": "Breakfast",
+              "has_live_music": "False",
+              "phone_number": "707-421-0835",
+              "price_range": "moderate",
+              "restaurant_name": "Mimi's Cafe",
+              "serves_alcohol": "True",
+              "street_address": "1650 Gateway Boulevard"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "Do they have live music with liquor",
+        "utt_idx": 4,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Fairfield|fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "has_live_music",
+            "serves_alcohol"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "They do not have live music but they do have alcohol",
+        "utt_idx": 5,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "has_live_music",
+              "value": "False"
+            },
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "serves_alcohol",
+              "value": "True"
+            }
+          ],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "ok that works",
+        "utt_idx": 6,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "select",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Mimi's cafe",
+            "date": "",
+            "time": "",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "",
+            "price_range": "",
+            "city": "Fairfield|fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "FindRestaurants"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Do you want me to reserve a table for you",
+        "utt_idx": 7,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "offer_intent",
+              "domain": "Restaurants_1",
+              "slot": "intent",
+              "value": "ReserveRestaurant"
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "Yes, please make reservation for one people this evening 4:45",
+        "utt_idx": 8,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm_intent",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "evening 4:45",
+              "start": 49,
+              "end": 61
+            }
+          ]
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Mimi's cafe",
+            "date": "",
+            "time": "evening 4:45",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Fairfield|fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Please confirm your booking at mimi's cafe in Fairfield for 1 people today at 4:45 pm",
+        "utt_idx": 9,
+        "dialogue_acts": {
+          "binary": [],
+          "categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "mimi's cafe",
+              "start": 31,
+              "end": 42
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "city",
+              "value": "Fairfield",
+              "start": 46,
+              "end": 55
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "4:45 pm",
+              "start": 78,
+              "end": 85
+            },
+            {
+              "intent": "confirm",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "today",
+              "start": 69,
+              "end": 74
+            }
+          ]
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "thats correct. What is their phone number what how expensive are they",
+        "utt_idx": 10,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": ""
+            },
+            {
+              "intent": "request",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": ""
+            },
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Mimi's cafe|mimi's cafe",
+            "date": "today",
+            "time": "4:45 pm|evening 4:45",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Fairfield|fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": [
+            "phone_number",
+            "price_range"
+          ]
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "Sorry, they are fully booked. Shall i try to make reservation for 1 people today at 5 pm? The price range is Moderate at mimi's cafe and their phone number is 707-421-0835",
+        "utt_idx": 11,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_failure",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "price_range",
+              "value": "moderate"
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "party_size",
+              "value": "1"
+            }
+          ],
+          "non-categorical": [
+            {
+              "intent": "inform",
+              "domain": "Restaurants_1",
+              "slot": "phone_number",
+              "value": "707-421-0835",
+              "start": 159,
+              "end": 171
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "restaurant_name",
+              "value": "mimi's cafe",
+              "start": 121,
+              "end": 132
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "date",
+              "value": "today",
+              "start": 75,
+              "end": 80
+            },
+            {
+              "intent": "offer",
+              "domain": "Restaurants_1",
+              "slot": "time",
+              "value": "5 pm",
+              "start": 84,
+              "end": 88
+            }
+          ]
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Fairfield",
+              "date": "2019-03-01",
+              "party_size": "1",
+              "restaurant_name": "Mimi's Cafe",
+              "time": "16:45"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Fairfield",
+              "cuisine": "Breakfast",
+              "date": "2019-03-01",
+              "has_live_music": "False",
+              "party_size": "1",
+              "phone_number": "707-421-0835",
+              "price_range": "moderate",
+              "restaurant_name": "Mimi's Cafe",
+              "serves_alcohol": "True",
+              "street_address": "1650 Gateway Boulevard",
+              "time": "17:00"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "yes thats fine",
+        "utt_idx": 12,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "affirm",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Mimi's cafe|mimi's cafe",
+            "date": "today",
+            "time": "5 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Fairfield|fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "your seat is booked",
+        "utt_idx": 13,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "notify_success",
+              "domain": "Restaurants_1",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {
+          "Restaurants_1": {
+            "method": "ReserveRestaurant",
+            "parameters": {
+              "city": "Fairfield",
+              "date": "2019-03-01",
+              "party_size": "1",
+              "restaurant_name": "Mimi's Cafe",
+              "time": "17:00"
+            }
+          }
+        },
+        "db_results": {
+          "Restaurants_1": [
+            {
+              "city": "Fairfield",
+              "cuisine": "Breakfast",
+              "date": "2019-03-01",
+              "has_live_music": "False",
+              "party_size": "1",
+              "phone_number": "707-421-0835",
+              "price_range": "moderate",
+              "restaurant_name": "Mimi's Cafe",
+              "serves_alcohol": "True",
+              "street_address": "1650 Gateway Boulevard",
+              "time": "17:00"
+            }
+          ]
+        }
+      },
+      {
+        "speaker": "user",
+        "utterance": "thanks",
+        "utt_idx": 14,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Mimi's cafe|mimi's cafe",
+            "date": "today",
+            "time": "5 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Fairfield|fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "ReserveRestaurant"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "anything else i can help you with?",
+        "utt_idx": 15,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "req_more",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      },
+      {
+        "speaker": "user",
+        "utterance": "no thats it",
+        "utt_idx": 16,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "negate",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            },
+            {
+              "intent": "thank_you",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "state": {
+          "Restaurants_1": {
+            "restaurant_name": "Mimi's cafe|mimi's cafe",
+            "date": "today",
+            "time": "5 pm",
+            "serves_alcohol": "",
+            "has_live_music": "",
+            "phone_number": "",
+            "street_address": "",
+            "party_size": "1",
+            "price_range": "",
+            "city": "Fairfield|fairfield",
+            "cuisine": "breakfast"
+          }
+        },
+        "active_intent": {
+          "Restaurants_1": "NONE"
+        },
+        "requested_slots": {
+          "Restaurants_1": []
+        }
+      },
+      {
+        "speaker": "system",
+        "utterance": "have a nice day",
+        "utt_idx": 17,
+        "dialogue_acts": {
+          "binary": [
+            {
+              "intent": "goodbye",
+              "domain": "",
+              "slot": "",
+              "value": ""
+            }
+          ],
+          "categorical": [],
+          "non-categorical": []
+        },
+        "service_call": {},
+        "db_results": {}
+      }
+    ]
+  }
+]
\ No newline at end of file
diff --git a/data/unified_datasets/sgd/preprocess.py b/data/unified_datasets/sgd/preprocess.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b7f26a86d26d062353289f16154e39d01200e90
--- /dev/null
+++ b/data/unified_datasets/sgd/preprocess.py
@@ -0,0 +1,355 @@
+from zipfile import ZipFile, ZIP_DEFLATED
+import json
+import os
+from pprint import pprint
+from copy import deepcopy
+from collections import Counter
+from tqdm import tqdm
+from shutil import rmtree
+import re
+
+digit2word = {
+    '0': 'zero', '1': 'one', '2': 'two', '3': 'three', '4': 'four', '5': 'five',
+    '6': 'six', '7': 'seven', '8': 'eight', '9': 'nine', '10': 'ten'
+}
+
+match = {
+    '0': 0,
+    '1': 0,
+    '>1': 0,
+}
+
+
+def pharse_in_sen(phrase, sen):
+    '''
+    match value in the sentence
+    :param phrase: str
+    :param sen: str
+    :return: start, end if matched, else None, None
+    '''
+    assert isinstance(phrase, str)
+    pw = '(^|[\s,\.:\?!-])(?P<v>{})([\s,\.:\?!-]|$)'
+    pn = '(^|[\s\?!-]|\D[,\.:])(?P<v>{})($|[\s\?!-]|[,\.:]\D|[,\.:]$)'
+    if phrase.isdigit():
+        pattern = pn
+    else:
+        pattern = pw
+    p = re.compile(pattern.format(re.escape(phrase)), re.I)
+    m = re.search(p, sen)
+    if m:
+        num = len(re.findall(p, sen))
+        if num > 1:
+            match['>1'] += 1
+        else:
+            match['1'] += 1
+        return m.span('v'), num
+    if phrase.isdigit() and phrase in digit2word:
+        phrase = digit2word[phrase]
+        p = re.compile(pw.format(re.escape(phrase)), re.I)
+        m = re.search(p, sen)
+        if m:
+            num = len(re.findall(p, sen))
+            if num > 1:
+                match['>1'] += 1
+            else:
+                match['1'] += 1
+            return m.span('v'), num
+    match['0'] += 1
+    return (None, None), 0
+
+
+def sys_intent():
+    """from original data README.md"""
+    return {
+        "inform": {"description": "Inform the value for a slot to the user."},
+        "request": {"description": "Request the value of a slot from the user."},
+        "confirm": {"description": "Confirm the value of a slot before making a transactional service call."},
+        "offer": {"description": "Offer a certain value for a slot to the user."},
+        "notify_success": {"description": "Inform the user that their request was successful."},
+        "notify_failure": {"description": "Inform the user that their request failed."},
+        "inform_count": {"description": "Inform the number of items found that satisfy the user's request."},
+        "offer_intent": {"description": "Offer a new intent to the user."},
+        "req_more": {"description": "Asking the user if they need anything else."},
+        "goodbye": {"description": "End the dialogue."},
+    }
+
+
+def usr_intent():
+    """from original data README.md"""
+    return {
+        "inform_intent": {"description": "Express the desire to perform a certain task to the system."},
+        "negate_intent": {"description": "Negate the intent which has been offered by the system."},
+        "affirm_intent": {"description": "Agree to the intent which has been offered by the system."},
+        "inform": {"description": "Inform the value of a slot to the system."},
+        "request": {"description": "Request the value of a slot from the system."},
+        "affirm": {"description": "Agree to the system's proposition. "},
+        "negate": {"description": "Deny the system's proposal."},
+        "select": {"description": "Select a result being offered by the system."},
+        "request_alts": {"description": "Ask for more results besides the ones offered by the system."},
+        "thank_you": {"description": "Thank the system."},
+        "goodbye": {"description": "End the dialogue."},
+    }
+
+
+def get_intent():
+    """merge sys & usr intent"""
+    return {
+        "inform": {"description": "Inform the value for a slot."},
+        "request": {"description": "Request the value of a slot."},
+        "confirm": {"description": "Confirm the value of a slot before making a transactional service call."},
+        "offer": {"description": "Offer a certain value for a slot to the user."},
+        "notify_success": {"description": "Inform the user that their request was successful."},
+        "notify_failure": {"description": "Inform the user that their request failed."},
+        "inform_count": {"description": "Inform the number of items found that satisfy the user's request."},
+        "offer_intent": {"description": "Offer a new intent to the user."},
+        "req_more": {"description": "Asking the user if they need anything else."},
+        "goodbye": {"description": "End the dialogue."},
+        "inform_intent": {"description": "Express the desire to perform a certain task to the system."},
+        "negate_intent": {"description": "Negate the intent which has been offered by the system."},
+        "affirm_intent": {"description": "Agree to the intent which has been offered by the system."},
+        "affirm": {"description": "Agree to the system's proposition. "},
+        "negate": {"description": "Deny the system's proposal."},
+        "select": {"description": "Select a result being offered by the system."},
+        "request_alts": {"description": "Ask for more results besides the ones offered by the system."},
+        "thank_you": {"description": "Thank the system."},
+    }
+
+
+def preprocess():
+    original_data_dir = 'dstc8-schema-guided-dialogue-master'
+    new_data_dir = 'data'
+
+    if not os.path.exists(original_data_dir):
+        original_data_zip = 'dstc8-schema-guided-dialogue-master.zip'
+        if not os.path.exists(original_data_zip):
+            raise FileNotFoundError(f'cannot find original data {original_data_zip} in sgd/, should manually download dstc8-schema-guided-dialogue-master.zip from https://github.com/google-research-datasets/dstc8-schema-guided-dialogue')
+        else:
+            archive = ZipFile(original_data_zip)
+            archive.extractall()
+    
+    os.makedirs(new_data_dir, exist_ok=True)
+
+    dialogues = []
+    ontology = {'domains': {},
+                'intents': get_intent(),
+                'binary_dialogue_acts': set(),
+                'state': {}}
+    splits = ['train', 'validation', 'test']
+    dialogues = []
+    dataset_name = 'sgd'
+    for data_split in splits:
+        data_dir = os.path.join(original_data_dir, data_split if data_split != 'validation' else 'dev')
+        # schema => ontology
+        with open(os.path.join(data_dir, 'schema.json')) as f:
+            data = json.load(f)
+            for schema in data:
+                domain = schema['service_name']
+                ontology['domains'].setdefault(domain, {})
+                ontology['domains'][domain]['description'] = schema['description']
+                ontology['domains'][domain].setdefault('slots', {})
+                ontology['domains'][domain]['active_intents'] = schema['intents']
+                ontology['state'].setdefault(domain, {})
+                for slot in schema['slots']:
+                    ontology['domains'][domain]['slots'][slot['name']] = {
+                        "description": slot['description'],
+                        "is_categorical": slot['is_categorical'],
+                        "possible_values": slot['possible_values']
+                    }
+                    ontology['state'][domain][slot['name']] = ''
+                # add 'count' slot
+                ontology['domains'][domain]['slots']['count'] = {
+                    "description": "the number of items found that satisfy the user's request.",
+                    "is_categorical": False,
+                    "possible_values": []
+                }
+
+        # dialog
+        cnt = 0
+        for root, dirs, files in os.walk(data_dir):
+            fs = sorted([x for x in files if 'dialogues' in x])
+            for f in tqdm(fs, desc='processing schema-guided-{}'.format(data_split)):
+                data = json.load(open(os.path.join(data_dir, f)))
+                for d in data:
+                    dialogue = {
+                        "dataset": dataset_name,
+                        "data_split": data_split,
+                        "dialogue_id": f'{dataset_name}-{data_split}-{cnt}',
+                        "original_id": d['dialogue_id'],
+                        "domains": d['services'],
+                        "goal": { # no goal
+                            'description': '',
+                            'inform': {},
+                            'request': {}
+                        },
+                        "turns": []
+                    }
+                    cnt += 1
+                    init_state = {}
+                    for domain in dialogue['domains']:
+                        init_state.setdefault(domain, deepcopy(ontology['state'][domain]))
+
+                    for utt_idx, t in enumerate(d['turns']):
+                        speaker = t['speaker'].lower()
+                        turn = {
+                            'speaker': speaker,
+                            'utterance': t['utterance'],
+                            'utt_idx': utt_idx,
+                            'dialogue_acts': {
+                                'binary': [],
+                                'categorical': [],
+                                'non-categorical': [],
+                            },
+                        }
+                        for frame in t['frames']:
+                            domain = frame['service']
+                            for action in frame['actions']:
+                                intent = action['act'].lower() # lowercase intent
+                                assert intent in ontology['intents'], [intent]
+                                slot = action['slot']
+                                value_list = action['values']
+                                if action['act'] in ['REQ_MORE', 'AFFIRM', 'NEGATE', 'THANK_YOU', 'GOODBYE']:
+                                    # Slot and values are always empty
+                                    assert slot == "" and len(value_list) == 0
+                                    turn['dialogue_acts']['binary'].append({
+                                        "intent": intent,
+                                        "domain": '',
+                                        "slot": '',
+                                        "value": '',
+                                    })
+                                elif action['act'] in ['NOTIFY_SUCCESS', 'NOTIFY_FAILURE', 'REQUEST_ALTS', 'AFFIRM_INTENT', 'NEGATE_INTENT']:
+                                    # Slot and values are always empty
+                                    assert slot == "" and len(value_list) == 0
+                                    turn['dialogue_acts']['binary'].append({
+                                        "intent": intent,
+                                        "domain": domain,
+                                        "slot": '',
+                                        "value": '',
+                                    })
+                                elif action['act'] in ['OFFER_INTENT', 'INFORM_INTENT']:
+                                    # always has "intent" as the slot, and a single value containing the intent being offered.
+                                    assert slot == 'intent' and len(value_list) == 1
+                                    turn['dialogue_acts']['binary'].append({
+                                        "intent": intent,
+                                        "domain": domain,
+                                        "slot": slot,
+                                        "value": value_list[0],
+                                    })
+                                elif action['act'] in ['REQUEST'] and len(value_list) == 0:
+                                    # always contains a slot, but values are optional.
+                                    assert slot in ontology['domains'][domain]['slots'], f'{domain}-{slot}'
+                                    turn['dialogue_acts']['binary'].append({
+                                        "intent": intent,
+                                        "domain": domain,
+                                        "slot": slot,
+                                        "value": '',
+                                    })
+                                elif action['act'] in ['SELECT'] and len(value_list) == 0:
+                                    # (slot=='' and len(value_list) == 0) or (slot!='' and len(value_list) > 0)
+                                    assert slot == '', f'{domain}-{slot}-{action}'
+                                    turn['dialogue_acts']['binary'].append({
+                                        "intent": intent,
+                                        "domain": domain,
+                                        "slot": slot,
+                                        "value": '',
+                                    })
+                                elif action['act'] in ['INFORM_COUNT']:
+                                    # always has "count" as the slot, and a single element in values for the number of results obtained by the system.
+                                    assert slot == 'count' and len(value_list) == 1
+                                    value = value_list[0]
+
+                                    turn['dialogue_acts']['non-categorical'].append({
+                                        "intent": intent,
+                                        "domain": domain,
+                                        "slot": slot,
+                                        "value": value,
+                                    })
+                                    
+                                    # find char span
+                                    (start, end), num = pharse_in_sen(value, t['utterance'])
+                                    assert num > 0, f'{value}-{t["utterance"]}' # {1:20086, 2:341, 3:19}
+                                    assert value.lower() == t['utterance'][start:end].lower() \
+                                                or digit2word[value].lower() == t['utterance'][start:end].lower()
+                                    # first match is always the choice
+                                    turn['dialogue_acts']['non-categorical'][-1].update({
+                                        "value": t['utterance'][start:end], "start": start, "end": end
+                                    })
+                                else:
+                                    # have slot & value
+                                    if ontology['domains'][domain]['slots'][slot]['is_categorical']:
+                                        possible_values = [value.lower() for value in ontology['domains'][domain]['slots'][slot]['possible_values']]
+                                        for value in value_list:
+                                            if value.lower() not in possible_values and value != 'dontcare':
+                                                ontology['domains'][domain]['slots'][slot]['possible_values'].append(value)
+                                                print(f'add value to ontology\t{domain}-{slot}-{value}', possible_values)
+                                            turn['dialogue_acts']['categorical'].append({
+                                                "intent": intent,
+                                                "domain": domain,
+                                                "slot": slot,
+                                                "value": value,
+                                            })
+                                    else:
+                                        # span info in frame['slots']
+                                        for value in value_list:
+                                            for slot_info in frame['slots']:
+                                                start = slot_info['start']
+                                                end = slot_info['exclusive_end']
+                                                if slot_info['slot'] == slot and t['utterance'][start:end].lower() == value.lower():
+                                                    assert t['utterance'][start:end] == value, f'{action}-{slot_info}-{t["utterance"][start:end]}'
+                                                    turn['dialogue_acts']['non-categorical'].append({
+                                                        "intent": intent,
+                                                        "domain": domain,
+                                                        "slot": slot,
+                                                        "value": value,
+                                                        "start": start,
+                                                        "end": end
+                                                    })
+                                                    break
+                                            else:
+                                                assert value == 'dontcare', f'{action}-{slot_info}'
+                                                
+                        if speaker == 'user':
+                            state = deepcopy(init_state)
+                            active_intent = {}
+                            requested_slots = {}
+                            for frame in t['frames']:
+                                domain = frame['service']
+                                active_intent[domain] = frame['state']['active_intent']
+                                requested_slots[domain] = frame['state']['requested_slots']
+                                for slot, value_list in frame['state']['slot_values'].items():
+                                    state[domain][slot] = value_list[0]
+                                    for value in value_list[1:]:
+                                        state[domain][slot] += '|' + value
+                            turn['state'] = state
+                            turn['active_intent'] = active_intent
+                            turn['requested_slots'] = requested_slots
+                        else:
+                            # service_call and service_results
+                            turn['service_call'] = {}
+                            turn['db_results'] = {}
+                            for frame in t['frames']:
+                                if 'service_call' not in frame:
+                                    continue
+                                domain = frame['service']
+                                turn['service_call'][domain] = frame['service_call']
+                                turn['db_results'][domain] = frame['service_results']
+
+                        for da in turn['dialogue_acts']['binary']:
+                            da_tuple = (da['intent'], da['domain'], da['slot'], da['value'],)
+                            if da_tuple not in ontology['binary_dialogue_acts']:
+                                ontology['binary_dialogue_acts'].add(da_tuple)
+                        dialogue['turns'].append(turn)
+                    dialogues.append(dialogue)
+    
+    ontology['binary_dialogue_acts'] = [{'intent':bda[0],'domain':bda[1],'slot':bda[2],'value':bda[3]} for bda in sorted(ontology['binary_dialogue_acts'])]
+    json.dump(dialogues[:10], open(f'dummy_data.json', 'w', encoding='utf-8'), indent=2, ensure_ascii=False)
+    json.dump(dialogues, open(f'{new_data_dir}/dialogues.json', 'w', encoding='utf-8'), indent=2, ensure_ascii=False)
+    json.dump(ontology, open(f'{new_data_dir}/ontology.json', 'w', encoding='utf-8'), indent=2, ensure_ascii=False)
+    with ZipFile('data.zip', 'w', ZIP_DEFLATED) as zf:
+        for filename in os.listdir(new_data_dir):
+            zf.write(f'{new_data_dir}/{filename}')
+    rmtree(original_data_dir)
+    rmtree(new_data_dir)
+    return dialogues, ontology
+
+if __name__ == '__main__':
+    preprocess()
\ No newline at end of file