diff --git a/data/unified_datasets/sgd/preprocess.py b/data/unified_datasets/sgd/preprocess.py index 8b7f26a86d26d062353289f16154e39d01200e90..7122e4e5736150d97a0cd5fa3d3669a800dacc68 100644 --- a/data/unified_datasets/sgd/preprocess.py +++ b/data/unified_datasets/sgd/preprocess.py @@ -135,7 +135,6 @@ def preprocess(): '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') diff --git a/data/unified_datasets/tm1/README.md b/data/unified_datasets/tm1/README.md new file mode 100644 index 0000000000000000000000000000000000000000..4179fe43a9b18c2bdf062122849d0f83f408cd06 --- /dev/null +++ b/data/unified_datasets/tm1/README.md @@ -0,0 +1,61 @@ +# Dataset Card for Taskmaster-1 + +- **Repository:** https://github.com/google-research-datasets/Taskmaster +- **Paper:** https://arxiv.org/pdf/1909.05358.pdf +- **Leaderboard:** None +- **Who transforms the dataset:** Qi Zhu(zhuq96 at gmail dot com) + +### Dataset Summary + +The original dataset consists of 13,215 task-based dialogs, including 5,507 spoken and 7,708 written dialogs created with two distinct procedures. Each conversation falls into one of six domains: ordering pizza, creating auto repair appointments, setting up ride service, ordering movie tickets, ordering coffee drinks and making restaurant reservations. + +- **How to get the transformed data from original data:** + - Download [master.zip](https://github.com/google-research-datasets/Taskmaster/archive/refs/heads/master.zip). + - Run `python preprocess.py` in the current directory. +- **Main changes of the transformation:** + - Remove dialogs that are empty or only contain one speaker. + - Split woz-dialogs into train/validation/test randomly (8:1:1). The split of self-dialogs is followed the original dataset. + - Merge continuous turns by the same speaker (ignore repeated turns). + - Annotate `dialogue acts` according to the original segment annotations. Add `intent` annotation (inform/accept/reject). The type of `dialogue act` is set to `non-categorical` if the original segment annotation includes a specified `slot`. Otherwise, the type is set to `binary` (and the `slot` and `value` are empty) since it means general reference to a transaction, e.g. "OK your pizza has been ordered". + - Add `intent` and `slot` descriptions. + - Add `state` by accumulate dialog acts except those whose intents are **reject**. + - Keep the first annotation since each conversation was annotated by two workers. +- **Annotations:** + - dialogue acts, state. + +### Supported Tasks and Leaderboards + +NLU, DST, Policy, NLG + +### 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 | 10535 | 223322 | 21.2 | 8.75 | 1 | - | - | - | 100 | +| validation | 1318 | 27903 | 21.17 | 8.75 | 1 | - | - | - | 100 | +| test | 1322 | 27660 | 20.92 | 8.87 | 1 | - | - | - | 100 | +| all | 13175 | 278885 | 21.17 | 8.76 | 1 | - | - | - | 100 | + +6 domains: ['uber_lyft', 'movie_ticket', 'restaurant_reservation', 'coffee_ordering', 'pizza_ordering', 'auto_repair'] +- **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 + +``` +@inproceedings{byrne-etal-2019-taskmaster, + title = {Taskmaster-1:Toward a Realistic and Diverse Dialog Dataset}, + author = {Bill Byrne and Karthik Krishnamoorthi and Chinnadhurai Sankar and Arvind Neelakantan and Daniel Duckworth and Semih Yavuz and Ben Goodrich and Amit Dubey and Kyu-Young Kim and Andy Cedilnik}, + booktitle = {2019 Conference on Empirical Methods in Natural Language Processing and 9th International Joint Conference on Natural Language Processing}, + address = {Hong Kong}, + year = {2019} +} +``` + +### Licensing Information + +[**CC BY 4.0**](https://creativecommons.org/licenses/by/4.0/) \ No newline at end of file diff --git a/data/unified_datasets/tm1/data.zip b/data/unified_datasets/tm1/data.zip new file mode 100644 index 0000000000000000000000000000000000000000..ef44348839377a2609eb06197418518bc4df0e89 Binary files /dev/null and b/data/unified_datasets/tm1/data.zip differ diff --git a/data/unified_datasets/tm1/dummy_data.json b/data/unified_datasets/tm1/dummy_data.json new file mode 100644 index 0000000000000000000000000000000000000000..9cffe8bbb254b2437c70e4f9837823cd93e139cf --- /dev/null +++ b/data/unified_datasets/tm1/dummy_data.json @@ -0,0 +1,5188 @@ +[ + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-0", + "original_id": "dlg-3369f6e3-6c81-4902-8259-138ffd830952", + "domains": [ + "movie_ticket" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "Hi. A friend and I would like to see the movie Us tonight. Can you help us get the tickets?", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.movie", + "value": "Us", + "start": 47, + "end": 49 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "", + "num.tickets": "", + "time.start": "", + "location.theater": "", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Oh, I heard that's good. Of course I can help. Where would you like to see the movie?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I'm in Studio City in LA, so somewhere close to there would be good.", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "location.theater", + "value": "Studio City in LA", + "start": 7, + "end": 24 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "", + "num.tickets": "", + "time.start": "", + "location.theater": "Studio City in LA", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "OK, there are a number of theaters nearby. Did you have a time in mind?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "How about 7 o'clock this evening?", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "time.start", + "value": "7 o'clock", + "start": 10, + "end": 19 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "", + "num.tickets": "", + "time.start": "7 o'clock", + "location.theater": "Studio City in LA", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "It looks like the movie is showing on both standard and IMAX theaters. Do you have a preference?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "standard", + "start": 43, + "end": 51 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "IMAX", + "start": 56, + "end": 60 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "IMAX would be cool.", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "IMAX", + "start": 0, + "end": 4 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "", + "num.tickets": "", + "time.start": "7 o'clock", + "location.theater": "Studio City in LA", + "price.ticket": "", + "type.screening": "IMAX", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Great. And you said you wanted two tickets, right?", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "num.tickets", + "value": "two", + "start": 31, + "end": 34 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yep.", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "", + "num.tickets": "two", + "time.start": "7 o'clock", + "location.theater": "Studio City in LA", + "price.ticket": "", + "type.screening": "IMAX", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "The AMC Cinema at the Universal CityWalk is playing Us in IMAX, but the next showing time is at 8 PM. Is that ok?", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "AMC Cinema", + "start": 4, + "end": 14 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "location.theater", + "value": "Universal CityWalk", + "start": 22, + "end": 40 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.movie", + "value": "Us", + "start": 52, + "end": 54 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "IMAX", + "start": 58, + "end": 62 + }, + { + "intent": "reject", + "domain": "movie_ticket", + "slot": "num.tickets", + "value": "8 PM", + "start": 96, + "end": 100 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Hm, I'd rather go earlier. What about the ArcLight theater in Sherman Oaks?", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "ArcLight", + "start": 42, + "end": 50 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "location.theater", + "value": "Sherman Oaks", + "start": 62, + "end": 74 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "ArcLight", + "num.tickets": "two", + "time.start": "7 o'clock", + "location.theater": "Sherman Oaks", + "price.ticket": "", + "type.screening": "IMAX", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "The ArcLight is showing the movie at 7:15 PM, but it's on a standard screen, not IMAX. Is that ok?", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "ArcLight", + "start": 4, + "end": 12 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "time.start", + "value": "7:15 PM", + "start": 37, + "end": 44 + }, + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "standard", + "start": 60, + "end": 68 + }, + { + "intent": "reject", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "IMAX", + "start": 81, + "end": 85 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yeah, that will be fine, I guess. How much is it for two tickets?", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "num.tickets", + "value": "two", + "start": 53, + "end": 56 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "ArcLight", + "num.tickets": "two", + "time.start": "7:15 PM", + "location.theater": "Sherman Oaks", + "price.ticket": "", + "type.screening": "standard", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Tickets are $17 each, so it would be about $34 plus tax.", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "price.ticket", + "value": "$17", + "start": 12, + "end": 15 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "price.ticket", + "value": "$34", + "start": 43, + "end": 46 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Hm, that's a little pricey. Any other theaters?", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "ArcLight", + "num.tickets": "two", + "time.start": "7:15 PM", + "location.theater": "Sherman Oaks", + "price.ticket": "$34", + "type.screening": "standard", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "The AMC 6 in Burbank is also showing the movie at that time, and tickets are $15 each.", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "AMC 6", + "start": 4, + "end": 9 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "location.theater", + "value": "Burbank", + "start": 13, + "end": 20 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "price.ticket", + "value": "$15", + "start": 77, + "end": 80 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I guess the price isn't much different. Let's go with the ArcLight at 7:15 pm.", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "ArcLight", + "start": 58, + "end": 66 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "time.start", + "value": "7:15 pm", + "start": 70, + "end": 77 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "ArcLight", + "num.tickets": "two", + "time.start": "7:15 pm", + "location.theater": "Burbank", + "price.ticket": "$15", + "type.screening": "standard", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "OK, to confirm: two tickets to see Us at the ArcLight Theater in Sherman Oaks at 7:15 pm. The price will be $34 plus tax.", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "num.tickets", + "value": "two", + "start": 16, + "end": 19 + }, + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "name.movie", + "value": "Us", + "start": 35, + "end": 37 + }, + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "ArcLight Theater", + "start": 45, + "end": 61 + }, + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "location.theater", + "value": "Sherman Oaks", + "start": 65, + "end": 77 + }, + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "time.start", + "value": "7:15 pm", + "start": 81, + "end": 88 + }, + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "price.ticket", + "value": "$34", + "start": 108, + "end": 111 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "That all sounds right.", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "ArcLight Theater", + "num.tickets": "two", + "time.start": "7:15 pm", + "location.theater": "Sherman Oaks", + "price.ticket": "$34", + "type.screening": "standard", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Great! I'll text the tickets to your phone so you'll be ready to go this evening.", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thank you very much.", + "utt_idx": 20, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Us", + "name.theater": "ArcLight Theater", + "num.tickets": "two", + "time.start": "7:15 pm", + "location.theater": "Sherman Oaks", + "price.ticket": "$34", + "type.screening": "standard", + "time.end": "", + "time.duration": "" + } + } + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-1", + "original_id": "dlg-336c8165-068e-4b4b-803d-18ef0676f668", + "domains": [ + "restaurant_reservation" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "Hi, I'm looking for a place that sells spicy wet hotdogs, can you think of any?", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "You might enjoy Spicy Wet Hotdogs LLC.", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Spicy Wet Hotdogs LLC", + "start": 16, + "end": 37 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "That sounds really good, can you make me a reservation?", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Certainly, when would you like a reservation?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I have a party of 50 who want a really sloppy dog on Saturday at noon.", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "50", + "start": 18, + "end": 20 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "50", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Saturday at noon is no good, I'm sorry.", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "Saturday at noon", + "start": 0, + "end": 16 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Oh okay, is there another restauraunt nearby?", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "50", + "time.reservation": "Saturday at noon", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Yeah, you might enjoy Bob's Blender Burgers - they blend up hamburgers and sell them as milkshakes!", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Bob's Blender Burgers", + "start": 22, + "end": 43 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Wow that sounds delicious! ", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Bob's Blender Burgers", + "name.reservation": "", + "num.guests": "50", + "time.reservation": "Saturday at noon", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "I know, right?", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I'll make a reservation for 50 at the blended burger joint on Saturday.", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "50", + "start": 28, + "end": 30 + }, + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "blended burger", + "start": 38, + "end": 52 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "blended burger", + "name.reservation": "", + "num.guests": "50", + "time.reservation": "Saturday at noon", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Great, your reservation is made.", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thank you so much!", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "blended burger", + "name.reservation": "", + "num.guests": "50", + "time.reservation": "Saturday at noon", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "No problem, anything else I can do for you?", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yeah - can you actually make sure that our table is by the play-place?", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "type.seating", + "value": "our table is by the play-place", + "start": 39, + "end": 69 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "blended burger", + "name.reservation": "", + "num.guests": "50", + "time.reservation": "Saturday at noon", + "type.seating": "our table is by the play-place", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Yeah, will there be children joining you?", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes! Fourty of them.", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "Fourty of them", + "start": 5, + "end": 19 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "blended burger", + "name.reservation": "", + "num.guests": "Fourty of them", + "time.reservation": "Saturday at noon", + "type.seating": "our table is by the play-place", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Alright, we've got you the table with the play-place.", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "type.seating", + "value": "table with the play-place", + "start": 27, + "end": 52 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thank you so much, have a good one!", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "blended burger", + "name.reservation": "", + "num.guests": "Fourty of them", + "time.reservation": "Saturday at noon", + "type.seating": "table with the play-place", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "You too!", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-2", + "original_id": "dlg-3370fcc4-8914-434d-994d-9e741c0707b2", + "domains": [ + "auto_repair" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "Hello Pam, I need you to make an appointment for me to get some repairs done on my vehicle.", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "auto_repair": { + "name.store": "", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "", + "name.vehicle": "", + "year.vehicle": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Okay. Where would you like me to schedule the appointment?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "There's a shop called Intelligent Auto Solutions", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "auto_repair", + "slot": "name.store", + "value": "Intelligent Auto Solutions", + "start": 22, + "end": 48 + } + ] + }, + "state": { + "auto_repair": { + "name.store": "Intelligent Auto Solutions", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "", + "name.vehicle": "", + "year.vehicle": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Where's that located?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "It' located in O'Fallon, IL. on Hwy 50.", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "auto_repair", + "slot": "location.store", + "value": "O'Fallon, IL. on Hwy 50", + "start": 15, + "end": 38 + } + ] + }, + "state": { + "auto_repair": { + "name.store": "Intelligent Auto Solutions", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "", + "name.vehicle": "", + "year.vehicle": "", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, so give me some information about what's going on with your vehicle?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Well, it's my 2015 Toyota Corolla that's giving me problems.", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "auto_repair", + "slot": "year.vehicle", + "value": "2015", + "start": 14, + "end": 18 + }, + { + "intent": "inform", + "domain": "auto_repair", + "slot": "name.vehicle", + "value": "Toyota Corolla", + "start": 19, + "end": 33 + } + ] + }, + "state": { + "auto_repair": { + "name.store": "Intelligent Auto Solutions", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "What type of problems?", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Well, I would like a tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "auto_repair", + "slot": "reason.appt", + "value": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "start": 21, + "end": 121 + } + ] + }, + "state": { + "auto_repair": { + "name.store": "Intelligent Auto Solutions", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, I will call them and let them know.", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thanks.", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "auto_repair": { + "name.store": "Intelligent Auto Solutions", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Could you tell me when would you like to take it in.", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I really would like the fist available appointment. ", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "auto_repair": { + "name.store": "Intelligent Auto Solutions", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, I will call and let you know the outcome", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thank you.", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "auto_repair": { + "name.store": "Intelligent Auto Solutions", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, I think that will be asking me your personal infomation.", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Okay, my name is Jim Wright, address is 222 W. Main Belleville", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "auto_repair", + "slot": "name.store", + "value": "Jim Wright", + "start": 17, + "end": 27 + } + ] + }, + "state": { + "auto_repair": { + "name.store": "Jim Wright", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, what about your telephone number.", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Give them my cell phone number, which is 222-333-4576", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "auto_repair": { + "name.store": "Jim Wright", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, I think I have all of the information needed.", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thanks Pam.", + "utt_idx": 20, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "auto_repair": { + "name.store": "Jim Wright", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "tune up and have them check my brakes. I believe I hear some grinding noise when I press the brakes.", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "You're welcome. I am calling them now to make an appointment for your 2015 Toyota Corolla to have your brakes checked and to obtain a tune up.", + "utt_idx": 21, + "dialogue_acts": { + "binary": [ + { + "intent": "accept", + "domain": "auto_repair", + "slot": "", + "value": "" + } + ], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "auto_repair", + "slot": "year.vehicle", + "value": "2015", + "start": 70, + "end": 74 + }, + { + "intent": "accept", + "domain": "auto_repair", + "slot": "name.vehicle", + "value": "Toyota Corolla", + "start": 75, + "end": 89 + }, + { + "intent": "accept", + "domain": "auto_repair", + "slot": "reason.appt", + "value": "your brakes checked and to obtain a tune up", + "start": 98, + "end": 141 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes and make sure they know that it's urgent.", + "utt_idx": 22, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "auto_repair": { + "name.store": "Jim Wright", + "name.customer": "", + "date.appt": "", + "time.appt": "", + "reason.appt": "your brakes checked and to obtain a tune up", + "name.vehicle": "Toyota Corolla", + "year.vehicle": "2015", + "location.store": "O'Fallon, IL. on Hwy 50" + } + } + }, + { + "speaker": "system", + "utterance": "Will do. Have a great day.", + "utt_idx": 23, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-3", + "original_id": "dlg-33769877-7168-4b1d-b056-9f2df7b7ede3", + "domains": [ + "coffee_ordering" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "Hi there, I'd like you to order me a coffee from starbucks please.", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "coffee_ordering": { + "location.store": "", + "name.drink": "", + "size.drink": "", + "num.drink": "", + "type.milk": "", + "preference": "" + } + } + }, + { + "speaker": "system", + "utterance": "Ok which store would you like me to order from?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "The one on Ashland ave..", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "coffee_ordering", + "slot": "location.store", + "value": "Ashland ave.", + "start": 11, + "end": 23 + } + ] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "", + "size.drink": "", + "num.drink": "", + "type.milk": "", + "preference": "" + } + } + }, + { + "speaker": "system", + "utterance": "Ok and what kind of coffee drink do you want?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I'll take the Caffè Latte please.", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "coffee_ordering", + "slot": "name.drink", + "value": "Caffè Latte", + "start": 14, + "end": 25 + } + ] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "", + "num.drink": "", + "type.milk": "", + "preference": "" + } + } + }, + { + "speaker": "system", + "utterance": "Ok and what size?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "The largest one, venti think its called.", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "coffee_ordering", + "slot": "size.drink", + "value": "largest one", + "start": 4, + "end": 15 + }, + { + "intent": "accept", + "domain": "coffee_ordering", + "slot": "size.drink", + "value": "venti", + "start": 17, + "end": 22 + } + ] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "venti", + "num.drink": "", + "type.milk": "", + "preference": "" + } + } + }, + { + "speaker": "system", + "utterance": "Great what milk do you want with it?", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I would like whole milk.", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "coffee_ordering", + "slot": "type.milk", + "value": "whole milk.", + "start": 13, + "end": 24 + } + ] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "venti", + "num.drink": "", + "type.milk": "whole milk.", + "preference": "" + } + } + }, + { + "speaker": "system", + "utterance": "Ok well it looks like the whole milk actually is not available.", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "coffee_ordering", + "slot": "type.milk", + "value": "whole milk", + "start": 26, + "end": 36 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Well that sucks what is?", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "venti", + "num.drink": "", + "type.milk": "whole milk.", + "preference": "" + } + } + }, + { + "speaker": "system", + "utterance": "Almond, cocunut, soy and 2 percent milk", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "coffee_ordering", + "slot": "type.milk", + "value": "Almond", + "start": 0, + "end": 6 + }, + { + "intent": "inform", + "domain": "coffee_ordering", + "slot": "type.milk", + "value": "cocunut", + "start": 8, + "end": 15 + }, + { + "intent": "inform", + "domain": "coffee_ordering", + "slot": "type.milk", + "value": "soy", + "start": 17, + "end": 20 + }, + { + "intent": "inform", + "domain": "coffee_ordering", + "slot": "preference", + "value": "2 percent milk", + "start": 25, + "end": 39 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I guess I'll take the almond milk then.", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "coffee_ordering", + "slot": "type.milk", + "value": "almond milk", + "start": 22, + "end": 33 + } + ] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "venti", + "num.drink": "", + "type.milk": "almond milk", + "preference": "2 percent milk" + } + } + }, + { + "speaker": "system", + "utterance": "Great well I'll order it right now if that's all.", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yep thats it thanks.", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "venti", + "num.drink": "", + "type.milk": "almond milk", + "preference": "2 percent milk" + } + } + }, + { + "speaker": "system", + "utterance": "Ok its ordered, and will be ready at the starbucks shortly.", + "utt_idx": 15, + "dialogue_acts": { + "binary": [ + { + "intent": "accept", + "domain": "coffee_ordering", + "slot": "", + "value": "" + } + ], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yeah just got it thanks again.", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "venti", + "num.drink": "", + "type.milk": "almond milk", + "preference": "2 percent milk" + } + } + }, + { + "speaker": "system", + "utterance": "Oh and the receipt will be sent to you're phone via text message.", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Ah ok well thanks, bye.", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "coffee_ordering": { + "location.store": "Ashland ave.", + "name.drink": "Caffè Latte", + "size.drink": "venti", + "num.drink": "", + "type.milk": "almond milk", + "preference": "2 percent milk" + } + } + }, + { + "speaker": "system", + "utterance": "No problem , bye.", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-4", + "original_id": "dlg-33796d43-da7a-41df-98e1-6d47c5f8f20e", + "domains": [ + "pizza_ordering" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "Hey, can I get a pizza from Domino's?", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.store", + "value": "Domino's", + "start": 28, + "end": 36 + } + ] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "", + "size.pizza": "", + "type.topping": "", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Sure, what kind would you like?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "What are the specials they have right now?", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "", + "size.pizza": "", + "type.topping": "", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "There are family and party combos currently on offer", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "No, I just want a large pizza", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "size.pizza", + "value": "large", + "start": 18, + "end": 23 + } + ] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "They have any large specialty pizza for 10.99", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "size.pizza", + "value": "large", + "start": 14, + "end": 19 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.pizza", + "value": "specialty pizza", + "start": 20, + "end": 35 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "What are their specialty pizzas?", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "specialty pizza", + "size.pizza": "large", + "type.topping": "", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Well, there is the Extravagazza, Meatzza, Philly Cheesesteak, Hawaiian, Buffalo Chicken Ranch, and more. Would you like to hear more?", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.pizza", + "value": "Extravagazza", + "start": 19, + "end": 31 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.pizza", + "value": "Meatzza", + "start": 33, + "end": 40 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.pizza", + "value": "Philly Cheesesteak", + "start": 42, + "end": 60 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.pizza", + "value": "Hawaiian", + "start": 62, + "end": 70 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "Buffalo Chicken Ranch,", + "start": 72, + "end": 94 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "What is on the Philly Cheesesteak?", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.pizza", + "value": "Philly Cheesesteak", + "start": 15, + "end": 33 + } + ] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "Philly Cheesesteak", + "size.pizza": "large", + "type.topping": "Buffalo Chicken Ranch,", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Domino's describes it as thinly sliced beef, melted cheese whiz, onions, green pepper, and mozzarella.", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "name.store", + "value": "Domino's", + "start": 0, + "end": 8 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "thinly sliced beef,", + "start": 25, + "end": 44 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "preference", + "value": "melted cheese whiz", + "start": 45, + "end": 63 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "onions", + "start": 65, + "end": 71 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "green pepper", + "start": 73, + "end": 85 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "mozzarella", + "start": 91, + "end": 101 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "That sounds great, I will get that.", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "Philly Cheesesteak", + "size.pizza": "large", + "type.topping": "mozzarella", + "type.crust": "", + "preference": "melted cheese whiz", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Would you like me to place the order now or later?", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "A little later, at 7oclock tonight?", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "Philly Cheesesteak", + "size.pizza": "large", + "type.topping": "mozzarella", + "type.crust": "", + "preference": "melted cheese whiz", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, will this be for pick up or delivery?", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I'll pick it up.", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "Domino's", + "name.pizza": "Philly Cheesesteak", + "size.pizza": "large", + "type.topping": "mozzarella", + "type.crust": "", + "preference": "melted cheese whiz", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Are you okay with using the credit card linked to you domino's rewards?", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "name.store", + "value": "domino's", + "start": 54, + "end": 62 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes that will be fine?", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "domino's", + "name.pizza": "Philly Cheesesteak", + "size.pizza": "large", + "type.topping": "mozzarella", + "type.crust": "", + "preference": "melted cheese whiz", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Anything you want beyond the pizza?", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Nope, just that", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "domino's", + "name.pizza": "Philly Cheesesteak", + "size.pizza": "large", + "type.topping": "mozzarella", + "type.crust": "", + "preference": "melted cheese whiz", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Great, I will order a Philly Cheesteak pizza large at 7ocklock tonight for pickup", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "name.pizza", + "value": "Philly Cheesteak pizza", + "start": 22, + "end": 44 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "size.pizza", + "value": "large", + "start": 45, + "end": 50 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thanks", + "utt_idx": 20, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "domino's", + "name.pizza": "Philly Cheesteak pizza", + "size.pizza": "large", + "type.topping": "mozzarella", + "type.crust": "", + "preference": "melted cheese whiz", + "location.store": "" + } + } + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-5", + "original_id": "dlg-3388f38a-7ebd-4d73-9700-a34cea212f5a", + "domains": [ + "pizza_ordering" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "I would like a large pizza", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "size.pizza", + "value": "large", + "start": 15, + "end": 20 + } + ] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "ok, one large pizza, which toppings would you like on your pizza?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "large", + "start": 8, + "end": 13 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Sausage and onion please", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "Sausage", + "start": 0, + "end": 7 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "onion", + "start": 12, + "end": 17 + } + ] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "onion", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Im sorry but we are currently out of onions, would you like to choose another topping, such as black olives or mushrooms?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "onions", + "start": 37, + "end": 43 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "black olives", + "start": 95, + "end": 107 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "mushrooms", + "start": 111, + "end": 120 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Mushrooms please", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "Mushrooms", + "start": 0, + "end": 9 + } + ] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "Mushrooms", + "type.crust": "", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "one large pizza with sausage and mushrooms, would you like that with hand tossed crust or deep dish?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "size.pizza", + "value": "large", + "start": 4, + "end": 9 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "sausage", + "start": 21, + "end": 28 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "mushrooms", + "start": 33, + "end": 42 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.crust", + "value": "hand tossed crust", + "start": 69, + "end": 86 + }, + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.crust", + "value": "deep dish", + "start": 90, + "end": 99 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Deep dish", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "type.crust", + "value": "Deep dish", + "start": 0, + "end": 9 + } + ] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "Deep dish", + "preference": "", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "ok, and would you like to add extra cheese?", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "pizza_ordering", + "slot": "preference", + "value": "extra cheese", + "start": 30, + "end": 42 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "yes please", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "Deep dish", + "preference": "extra cheese", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "would you like to add a side of hot wings to compliment the order?", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "No thank you", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "Deep dish", + "preference": "extra cheese", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "will that complete your order?", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "Deep dish", + "preference": "extra cheese", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "so one large deep dish pizza with extra cheese, sausage and mushrooms, is that correct?", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "size.pizza", + "value": "large", + "start": 7, + "end": 12 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "type.crust", + "value": "deep dish", + "start": 13, + "end": 22 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "preference", + "value": "extra cheese", + "start": 34, + "end": 46 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "sausage", + "start": 48, + "end": 55 + }, + { + "intent": "accept", + "domain": "pizza_ordering", + "slot": "type.topping", + "value": "mushrooms", + "start": 60, + "end": 69 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "deep dish", + "preference": "extra cheese", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Is your account information accurate?", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "deep dish", + "preference": "extra cheese", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "Thank you, your pizza order is complete and the pizzas will be ready for pickup in about 25 minutes.", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Perfect, can I get a receipt?", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "deep dish", + "preference": "extra cheese", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "your receipt will be sent to your mobile device via text message.", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thank you, goodbye", + "utt_idx": 20, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "pizza_ordering": { + "name.store": "", + "name.pizza": "", + "size.pizza": "large", + "type.topping": "mushrooms", + "type.crust": "deep dish", + "preference": "extra cheese", + "location.store": "" + } + } + }, + { + "speaker": "system", + "utterance": "your welcome, have a wonderful night", + "utt_idx": 21, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-6", + "original_id": "dlg-338edd6c-5fbe-4498-bce1-b7360bac2160", + "domains": [ + "restaurant_reservation" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "Google, I want to eat out tonight.", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, what are you in the mood for?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Ethiopian food.", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, how much would you prefer to spend per person?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Um, maybe fifteen dollars?", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "There are 2 highly rated Ethiopian restaurants within ten miles in that price range. Would you like to hear them?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Sure.", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Jackie's Bistro on 59th St. in Williamstown is open until 10pm and has an average rating of three and a half stars on Yelp . Would you like to book a table?", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Jackie's Bistro", + "start": 0, + "end": 15 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "location.restaurant", + "value": "59th St. in Williamstown", + "start": 19, + "end": 43 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "No.", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jackie's Bistro", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "59th St. in Williamstown" + } + } + }, + { + "speaker": "system", + "utterance": "Would you like to hear another?", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes.", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jackie's Bistro", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "59th St. in Williamstown" + } + } + }, + { + "speaker": "system", + "utterance": "Tom's Cuisine on Main St in Williamstown is open until 9pm and has an average rating of 3.2 stars on Yelp. Would you like to book a table?", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Tom's Cuisine", + "start": 0, + "end": 13 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "location.restaurant", + "value": "Main St in Williamstown", + "start": 17, + "end": 40 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "No.", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Tom's Cuisine", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "Main St in Williamstown" + } + } + }, + { + "speaker": "system", + "utterance": "Would you like to continue searching?", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes.", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Tom's Cuisine", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "Main St in Williamstown" + } + } + }, + { + "speaker": "system", + "utterance": "There is one other Ethiopian restaurant in that price range within 25 miles. Would you like to hear it?", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "location.restaurant", + "value": "within 25 miles", + "start": 60, + "end": 75 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes.", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Tom's Cuisine", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "within 25 miles" + } + } + }, + { + "speaker": "system", + "utterance": "Jake's Place is open until 10pm today and has an average rating of 4 stars on Yelp. Would you like to book a table?", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Jake's Place", + "start": 0, + "end": 12 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes.", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jake's Place", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "within 25 miles" + } + } + }, + { + "speaker": "system", + "utterance": "What time?", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "8pm tonight.", + "utt_idx": 20, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "8pm", + "start": 0, + "end": 3 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jake's Place", + "name.reservation": "", + "num.guests": "", + "time.reservation": "8pm", + "type.seating": "", + "location.restaurant": "within 25 miles" + } + } + }, + { + "speaker": "system", + "utterance": "For how many people?", + "utt_idx": 21, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Ten.", + "utt_idx": 22, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "Ten", + "start": 0, + "end": 3 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jake's Place", + "name.reservation": "", + "num.guests": "Ten", + "time.reservation": "8pm", + "type.seating": "", + "location.restaurant": "within 25 miles" + } + } + }, + { + "speaker": "system", + "utterance": "I'm sorry, Jake's Place does not have a table for ten at 8pm tonight. Would you like to hear available times for a party of ten?", + "utt_idx": 23, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Jake's Place", + "start": 11, + "end": 23 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "ten", + "start": 50, + "end": 53 + }, + { + "intent": "reject", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "8pm", + "start": 57, + "end": 60 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes.", + "utt_idx": 24, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jake's Place", + "name.reservation": "", + "num.guests": "ten", + "time.reservation": "8pm", + "type.seating": "", + "location.restaurant": "within 25 miles" + } + } + }, + { + "speaker": "system", + "utterance": "Jake's Place has tables for ten available at the following times tonight: 5, 5:30, 6, 6:30, and 7 pm. What time would you like?", + "utt_idx": 25, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Jake's Place", + "start": 0, + "end": 12 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "ten", + "start": 28, + "end": 31 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "5", + "start": 74, + "end": 75 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "5:30", + "start": 77, + "end": 81 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "6", + "start": 83, + "end": 84 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "6:30", + "start": 86, + "end": 90 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "7 pm", + "start": 96, + "end": 100 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "7:30 pm, please.", + "utt_idx": 26, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "7:30 pm", + "start": 0, + "end": 7 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jake's Place", + "name.reservation": "", + "num.guests": "ten", + "time.reservation": "7:30 pm", + "type.seating": "", + "location.restaurant": "within 25 miles" + } + } + }, + { + "speaker": "system", + "utterance": "Okay. I've booked a 7:30 pm reservation for a party of ten at Jake's Place tonight. Would you like to book another table?", + "utt_idx": 27, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "7:30 pm", + "start": 20, + "end": 27 + }, + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "ten", + "start": 55, + "end": 58 + }, + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Jake's Place", + "start": 62, + "end": 74 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "type.seating", + "value": "table", + "start": 115, + "end": 120 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "No.", + "utt_idx": 28, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Jake's Place", + "name.reservation": "", + "num.guests": "ten", + "time.reservation": "7:30 pm", + "type.seating": "table", + "location.restaurant": "within 25 miles" + } + } + }, + { + "speaker": "system", + "utterance": "Okay.", + "utt_idx": 29, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-7", + "original_id": "dlg-3392e3ff-40b6-4004-a2ec-63ec0d557dfc", + "domains": [ + "uber_lyft" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "I need a lyft ride.", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "uber_lyft": { + "location.from": "", + "location.to": "", + "type.ride": "", + "num.people": "", + "price.estimate": "", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "Where do you want to go to and from?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I need to go from south boston to the north end.", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "location.from", + "value": "south boston", + "start": 18, + "end": 30 + }, + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "location.to", + "value": "the north end", + "start": 34, + "end": 47 + } + ] + }, + "state": { + "uber_lyft": { + "location.from": "south boston", + "location.to": "the north end", + "type.ride": "", + "num.people": "", + "price.estimate": "", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "where exactly in the south end are you at.", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "uber_lyft", + "slot": "location.from", + "value": "in the south end", + "start": 14, + "end": 30 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "boston chops.", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "uber_lyft", + "slot": "location.from", + "value": "boston chops.", + "start": 0, + "end": 13 + } + ] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "the north end", + "type.ride": "", + "num.people": "", + "price.estimate": "", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "where in the north end do you want to go to?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "location.to", + "value": "north end", + "start": 13, + "end": 22 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "north end garage.", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "uber_lyft", + "slot": "location.to", + "value": "north end garage", + "start": 0, + "end": 16 + } + ] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "", + "num.people": "", + "price.estimate": "", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "Do you want a personal ride or shared?", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "type.ride", + "value": "personal ride", + "start": 14, + "end": 27 + }, + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "type.ride", + "value": "shared", + "start": 31, + "end": 37 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "personal please.", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "type.ride", + "value": "personal", + "start": 0, + "end": 8 + } + ] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "personal", + "num.people": "", + "price.estimate": "", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "What type of features? XL, high-end, black?", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "type.ride", + "value": "XL", + "start": 23, + "end": 25 + }, + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "type.ride", + "value": "high-end", + "start": 27, + "end": 35 + }, + { + "intent": "inform", + "domain": "uber_lyft", + "slot": "type.ride", + "value": "black", + "start": 37, + "end": 42 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Just a regular lyft personal ride.", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "uber_lyft", + "slot": "type.ride", + "value": "regular lyft personal ride", + "start": 7, + "end": 33 + } + ] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "regular lyft personal ride", + "num.people": "", + "price.estimate": "", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "Got it. Let me input that data for you.", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "How much will it cost.", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "regular lyft personal ride", + "num.people": "", + "price.estimate": "", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "It is showing $8-10.", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "uber_lyft", + "slot": "price.estimate", + "value": "$8-10", + "start": 14, + "end": 19 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "How long will it take.", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "regular lyft personal ride", + "num.people": "", + "price.estimate": "$8-10", + "duration.estimate": "", + "time.pickup": "", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "It will take 10 minutes to get to you.", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "uber_lyft", + "slot": "time.pickup", + "value": "10 minutes", + "start": 13, + "end": 23 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Seems awfully long.", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "regular lyft personal ride", + "num.people": "", + "price.estimate": "$8-10", + "duration.estimate": "", + "time.pickup": "10 minutes", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "Yah. Looks like things are slow tonight. Do you want me to book it. ", + "utt_idx": 17, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes, book it.", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "regular lyft personal ride", + "num.people": "", + "price.estimate": "$8-10", + "duration.estimate": "", + "time.pickup": "10 minutes", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "Alright it is booked. It will show up on your phone. Ride is on its way. You can status it on your phone.", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Do i need to tip them.", + "utt_idx": 20, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "regular lyft personal ride", + "num.people": "", + "price.estimate": "$8-10", + "duration.estimate": "", + "time.pickup": "10 minutes", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "Well that is up to you but it is already paid for.", + "utt_idx": 21, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thanks.", + "utt_idx": 22, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "uber_lyft": { + "location.from": "boston chops.", + "location.to": "north end garage", + "type.ride": "regular lyft personal ride", + "num.people": "", + "price.estimate": "$8-10", + "duration.estimate": "", + "time.pickup": "10 minutes", + "time.dropoff": "" + } + } + }, + { + "speaker": "system", + "utterance": "Your welcome.", + "utt_idx": 23, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-8", + "original_id": "dlg-3393df32-6c63-4569-b0f6-3e2f8e19852e", + "domains": [ + "restaurant_reservation" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "I want to book a restaurant for dinner.", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Sure, what kind of restaurant are you thinking of.", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Maybe Thai or Indonesian food. ", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, any place in mind?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I'm thinking about going to Thai Market or Awang Kitchen in New York City.", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Thai Market", + "start": 28, + "end": 39 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Awang Kitchen", + "start": 43, + "end": 56 + }, + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "location.restaurant", + "value": "New York City", + "start": 60, + "end": 73 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Awang Kitchen", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "New York City" + } + } + }, + { + "speaker": "system", + "utterance": "Which one do you prefer?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Well, I was wondering, which place has better reviews and more space. I also want the restaurant that's closest to my office which is on 40th Street and 5th Avenue in New York.", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "location.restaurant", + "value": "closest to my office", + "start": 104, + "end": 124 + }, + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "location.restaurant", + "value": "40th Street and 5th Avenue in New York", + "start": 137, + "end": 175 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Awang Kitchen", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "40th Street and 5th Avenue in New York" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, Thai Market is closer to your office. It is also larger than Awang Kitchen and it has a 4.6 rating on Google.", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Thai Market", + "start": 6, + "end": 17 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "location.restaurant", + "value": "closer to your office", + "start": 21, + "end": 42 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Awang Kitchen", + "start": 67, + "end": 80 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Does it have spicy food?", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Awang Kitchen", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "closer to your office" + } + } + }, + { + "speaker": "system", + "utterance": "Yes, it has many spicy options on the menu, such as the Drunken Noodles. ", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Okay, great, I think I will go to Thai Market. Can you make a reservation?", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "name.restaurant", + "value": "Thai Market", + "start": 34, + "end": 45 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Thai Market", + "name.reservation": "", + "num.guests": "", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "closer to your office" + } + } + }, + { + "speaker": "system", + "utterance": "For what time and date?", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "For 7 pm on March 1, 2019, for 2 people.", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "7 pm on March 1, 2019", + "start": 4, + "end": 25 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "2 people", + "start": 31, + "end": 39 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Thai Market", + "name.reservation": "", + "num.guests": "2 people", + "time.reservation": "", + "type.seating": "", + "location.restaurant": "closer to your office" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, I just checked for you, unfortunately they are booked for this time.", + "utt_idx": 13, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Okay, then for 8 pm on March 1, 2019 for 2 people.", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "time.reservation", + "value": "8 pm on March 1, 2019", + "start": 15, + "end": 36 + }, + { + "intent": "inform", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "2 people", + "start": 41, + "end": 49 + } + ] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Thai Market", + "name.reservation": "", + "num.guests": "2 people", + "time.reservation": "8 pm on March 1, 2019", + "type.seating": "", + "location.restaurant": "closer to your office" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, there is an opening. I made a reservation for a table for 2 on that date. Since the weather is chilly, I assume you want to eat indoors.", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "num.guests", + "value": "2", + "start": 64, + "end": 65 + }, + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "type.seating", + "value": "indoors", + "start": 134, + "end": 141 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes, that is correct, thank you.", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Thai Market", + "name.reservation": "", + "num.guests": "2", + "time.reservation": "8 pm on March 1, 2019", + "type.seating": "indoors", + "location.restaurant": "closer to your office" + } + } + }, + { + "speaker": "system", + "utterance": "Okay, the reservation is confirmed. ", + "utt_idx": 17, + "dialogue_acts": { + "binary": [ + { + "intent": "accept", + "domain": "restaurant_reservation", + "slot": "", + "value": "" + } + ], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Okay, great, thanks so much, have a nice day.", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "restaurant_reservation": { + "name.restaurant": "Thai Market", + "name.reservation": "", + "num.guests": "2", + "time.reservation": "8 pm on March 1, 2019", + "type.seating": "indoors", + "location.restaurant": "closer to your office" + } + } + }, + { + "speaker": "system", + "utterance": "You too, have a nice day. ", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + }, + { + "dataset": "tm1", + "data_split": "train", + "dialogue_id": "tm1-train-9", + "original_id": "dlg-339dfcb2-714f-4b53-95ff-8aa1bf43d12a", + "domains": [ + "movie_ticket" + ], + "goal": { + "description": "", + "inform": {}, + "request": {} + }, + "turns": [ + { + "speaker": "user", + "utterance": "I'd like to get tickets for Alita: Battle Angel", + "utt_idx": 0, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.movie", + "value": "Alita: Battle Angel", + "start": 28, + "end": 47 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "", + "num.tickets": "", + "time.start": "", + "location.theater": "", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "What is your location?", + "utt_idx": 1, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I'm in Portland, Oregon", + "utt_idx": 2, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "location.theater", + "value": "Portland, Oregon", + "start": 7, + "end": 23 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "", + "num.tickets": "", + "time.start": "", + "location.theater": "Portland, Oregon", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "How many tickets would you like to buy?", + "utt_idx": 3, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Two tickets should work", + "utt_idx": 4, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "num.tickets", + "value": "Two", + "start": 0, + "end": 3 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "", + "num.tickets": "Two", + "time.start": "", + "location.theater": "Portland, Oregon", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "What time would you like to see the movie?", + "utt_idx": 5, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "I'd like to see it around 6:30 pm", + "utt_idx": 6, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "time.start", + "value": "6:30 pm", + "start": 26, + "end": 33 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "", + "num.tickets": "Two", + "time.start": "6:30 pm", + "location.theater": "Portland, Oregon", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Let me check that for you", + "utt_idx": 7, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Ok", + "utt_idx": 8, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "", + "num.tickets": "Two", + "time.start": "6:30 pm", + "location.theater": "Portland, Oregon", + "price.ticket": "", + "type.screening": "", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "It seems like there aren't any showtimes then, but there's one at 8:00 pm at Regal Lloyd Center 10 & Imax", + "utt_idx": 9, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "movie_ticket", + "slot": "time.start", + "value": "It seems like there aren't any showtimes then", + "start": 0, + "end": 45 + }, + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "time.start", + "value": "8:00 pm", + "start": 66, + "end": 73 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "Regal Lloyd Center 10 & Imax", + "start": 77, + "end": 105 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Is 3D available at that theater?", + "utt_idx": 10, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "3D", + "start": 3, + "end": 5 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "Regal Lloyd Center 10 & Imax", + "num.tickets": "Two", + "time.start": "8:00 pm", + "location.theater": "Portland, Oregon", + "price.ticket": "", + "type.screening": "3D", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "No, it isn't, but there's a 3D showing of Alita: Battle Angel at Regal Cinemas Fox Tower 10", + "utt_idx": 11, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "reject", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "No, it isn't", + "start": 0, + "end": 12 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "type.screening", + "value": "3D", + "start": 28, + "end": 30 + }, + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "name.theater", + "value": "Alita: Battle Angel at Regal Cinemas Fox Tower 10", + "start": 42, + "end": 91 + } + ] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Let's see it there", + "utt_idx": 12, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [ + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "location.theater", + "value": "Let's see it there", + "start": 0, + "end": 18 + } + ] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "Alita: Battle Angel at Regal Cinemas Fox Tower 10", + "num.tickets": "Two", + "time.start": "8:00 pm", + "location.theater": "Let's see it there", + "price.ticket": "", + "type.screening": "3D", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "So you would like to order tickets?", + "utt_idx": 13, + "dialogue_acts": { + "binary": [ + { + "intent": "inform", + "domain": "movie_ticket", + "slot": "", + "value": "" + } + ], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Yes", + "utt_idx": 14, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "Alita: Battle Angel at Regal Cinemas Fox Tower 10", + "num.tickets": "Two", + "time.start": "8:00 pm", + "location.theater": "Let's see it there", + "price.ticket": "", + "type.screening": "3D", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Ok, placing your order", + "utt_idx": 15, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thanks", + "utt_idx": 16, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "Alita: Battle Angel at Regal Cinemas Fox Tower 10", + "num.tickets": "Two", + "time.start": "8:00 pm", + "location.theater": "Let's see it there", + "price.ticket": "", + "type.screening": "3D", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Your ticket order has been placed and your receipt has been sent to your mobile device", + "utt_idx": 17, + "dialogue_acts": { + "binary": [ + { + "intent": "accept", + "domain": "movie_ticket", + "slot": "", + "value": "" + } + ], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + }, + { + "speaker": "user", + "utterance": "Thanks", + "utt_idx": 18, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "state": { + "movie_ticket": { + "name.movie": "Alita: Battle Angel", + "name.theater": "Alita: Battle Angel at Regal Cinemas Fox Tower 10", + "num.tickets": "Two", + "time.start": "8:00 pm", + "location.theater": "Let's see it there", + "price.ticket": "", + "type.screening": "3D", + "time.end": "", + "time.duration": "" + } + } + }, + { + "speaker": "system", + "utterance": "Have a good day!", + "utt_idx": 19, + "dialogue_acts": { + "binary": [], + "categorical": [], + "non-categorical": [] + }, + "db_results": {} + } + ] + } +] \ No newline at end of file diff --git a/data/unified_datasets/tm1/preprocess.py b/data/unified_datasets/tm1/preprocess.py new file mode 100644 index 0000000000000000000000000000000000000000..f73f80b88503aefcbdf5b01d90d7ea73c8bd9443 --- /dev/null +++ b/data/unified_datasets/tm1/preprocess.py @@ -0,0 +1,308 @@ +from zipfile import ZipFile, ZIP_DEFLATED +import json +import os +import copy +import zipfile +from tqdm import tqdm +import re +from collections import Counter +from shutil import rmtree +from convlab2.util.file_util import read_zipped_json, write_zipped_json +from pprint import pprint +import random + + +descriptions = { + "uber_lyft": { + "uber_lyft": "order a car for a ride inside a city", + "location.from": "pickup location", + "location.to": "destination of the ride", + "type.ride": "type of ride", + "num.people": "number of people", + "price.estimate": "estimated cost of the ride", + "duration.estimate": "estimated duration of the ride", + "time.pickup": "time of pickup", + "time.dropoff": "time of dropoff", + }, + "movie_ticket": { + "movie_ticket": "book movie tickets for a film", + "name.movie": "name of the movie", + "name.theater": "name of the theater", + "num.tickets": "number of tickets", + "time.start": "start time of the movie", + "location.theater": "location of the theater", + "price.ticket": "price of the ticket", + "type.screening": "type of the screening", + "time.end": "end time of the movie", + "time.duration": "duration of the movie", + }, + "restaurant_reservation": { + "restaurant_reservation": "searching for a restaurant and make reservation", + "name.restaurant": "name of the restaurant", + "name.reservation": "name of the person who make the reservation", + "num.guests": "number of guests", + "time.reservation": "time of the reservation", + "type.seating": "type of the seating", + "location.restaurant": "location of the restaurant", + }, + "coffee_ordering": { + "coffee_ordering": "order a coffee drink from either Starbucks or Peets for pick up", + "location.store": "location of the coffee store", + "name.drink": "name of the drink", + "size.drink": "size of the drink", + "num.drink": "number of drinks", + "type.milk": "type of the milk", + "preference": "user preference of the drink", + }, + "pizza_ordering": { + "pizza_ordering": "order a pizza", + "name.store": "name of the pizza store", + "name.pizza": "name of the pizza", + "size.pizza": "size of the pizza", + "type.topping": "type of the topping", + "type.crust": "type of the crust", + "preference": "user preference of the pizza", + "location.store": "location of the pizza store", + }, + "auto_repair": { + "auto_repair": "set up an auto repair appointment with a repair shop", + "name.store": "name of the repair store", + "name.customer": "name of the customer", + "date.appt": "date of the appointment", + "time.appt": "time of the appointment", + "reason.appt": "reason of the appointment", + "name.vehicle": "name of the vehicle", + "year.vehicle": "year of the vehicle", + "location.store": "location of the repair store", + } +} + +def normalize_domain_name(domain): + if domain == 'auto': + return 'auto_repair' + elif domain == 'pizza': + return 'pizza_ordering' + elif domain == 'coffee': + return 'coffee_ordering' + elif domain == 'uber': + return 'uber_lyft' + elif domain == 'restaurant': + return 'restaurant_reservation' + elif domain == 'movie': + return 'movie_ticket' + assert 0 + + +def format_turns(ori_turns): + # delete invalid turns and merge continuous turns + new_turns = [] + previous_speaker = None + utt_idx = 0 + for i, turn in enumerate(ori_turns): + speaker = 'system' if turn['speaker'] == 'ASSISTANT' else 'user' + turn['speaker'] = speaker + if turn['text'] == '(deleted)': + continue + if not previous_speaker: + # first turn + assert speaker != previous_speaker + if speaker != previous_speaker: + # switch speaker + previous_speaker = speaker + new_turns.append(copy.deepcopy(turn)) + utt_idx += 1 + else: + # continuous speaking of the same speaker + last_turn = new_turns[-1] + # skip repeated turn + if turn['text'] in ori_turns[i-1]['text']: + continue + # merge continuous turns + index_shift = len(last_turn['text']) + 1 + last_turn['text'] += ' '+turn['text'] + if 'segments' in turn: + last_turn.setdefault('segments', []) + for segment in turn['segments']: + segment['start_index'] += index_shift + segment['end_index'] += index_shift + last_turn['segments'] += turn['segments'] + return new_turns + + +def preprocess(): + original_data_dir = 'Taskmaster-master' + new_data_dir = 'data' + + if not os.path.exists(original_data_dir): + original_data_zip = 'master.zip' + if not os.path.exists(original_data_zip): + raise FileNotFoundError(f'cannot find original data {original_data_zip} in tm1/, should manually download master.zip from https://github.com/google-research-datasets/Taskmaster/archive/refs/heads/master.zip') + else: + archive = ZipFile(original_data_zip) + archive.extractall() + + os.makedirs(new_data_dir, exist_ok=True) + + ontology = {'domains': {}, + 'intents': { + 'inform': {'description': 'inform the value of a slot or general information.'}, + 'accept': {'description': 'accept the value of a slot or a transaction'}, + 'reject': {'description': 'reject the value of a slot or a transaction'} + }, + 'binary_dialogue_acts': set(), + 'state': {}} + global descriptions + ori_ontology = {} + for _, item in json.load(open(os.path.join(original_data_dir, "TM-1-2019/ontology.json"))).items(): + ori_ontology[item["id"]] = item + + for domain, item in ori_ontology.items(): + ontology['domains'][domain] = {'description': descriptions[domain][domain], 'slots': {}} + ontology['state'][domain] = {} + for slot in item['required']+item['optional']: + ontology['domains'][domain]['slots'][slot] = { + 'description': descriptions[domain][slot], + 'is_categorical': False, + 'possible_values': [], + } + ontology['state'][domain][slot] = '' + + dataset = 'tm1' + splits = ['train', 'validation', 'test'] + dialogues_by_split = {split:[] for split in splits} + dialog_files = ["TM-1-2019/self-dialogs.json", "TM-1-2019/woz-dialogs.json"] + for file_idx, filename in enumerate(dialog_files): + data = json.load(open(os.path.join(original_data_dir, filename))) + if file_idx == 0: + # original split for self dialogs + dial_id2split = {} + for data_split in ['train', 'dev', 'test']: + with open(os.path.join(original_data_dir, f"TM-1-2019/train-dev-test/{data_split}.csv")) as f: + for line in f: + dial_id = line.split(',')[0] + dial_id2split[dial_id] = data_split if data_split != 'dev' else 'validation' + else: + # random split for woz dialogs 8:1:1 + random.seed(42) + dial_ids = [d['conversation_id'] for d in data] + random.shuffle(dial_ids) + dial_id2split = {} + for dial_id in dial_ids[:int(0.8*len(dial_ids))]: + dial_id2split[dial_id] = 'train' + for dial_id in dial_ids[int(0.8*len(dial_ids)):int(0.9*len(dial_ids))]: + dial_id2split[dial_id] = 'validation' + for dial_id in dial_ids[int(0.9*len(dial_ids)):]: + dial_id2split[dial_id] = 'test' + + for d in tqdm(data, desc='processing taskmaster-{}'.format(filename)): + # delete empty dialogs and invalid dialogs + if len(d['utterances']) == 0: + continue + if len(set([t['speaker'] for t in d['utterances']])) == 1: + continue + data_split = dial_id2split[d["conversation_id"]] + dialogue_id = f'{dataset}-{data_split}-{len(dialogues_by_split[data_split])}' + cur_domains = [normalize_domain_name(d["instruction_id"].split('-', 1)[0])] + assert len(cur_domains) == 1 and cur_domains[0] in ontology['domains'] + domain = cur_domains[0] + goal = { + 'description': '', + 'inform': {}, + 'request': {} + } + dialogue = { + 'dataset': dataset, + 'data_split': data_split, + 'dialogue_id': dialogue_id, + 'original_id': d["conversation_id"], + 'domains': cur_domains, + 'goal': goal, + 'turns': [] + } + turns = format_turns(d['utterances']) + prev_state = {} + prev_state.setdefault(domain, copy.deepcopy(ontology['state'][domain])) + + for utt_idx, uttr in enumerate(turns): + speaker = uttr['speaker'] + turn = { + 'speaker': speaker, + 'utterance': uttr['text'], + 'utt_idx': utt_idx, + 'dialogue_acts': { + 'binary': [], + 'categorical': [], + 'non-categorical': [], + }, + } + in_span = [0] * len(turn['utterance']) + + if 'segments' in uttr: + for segment in uttr['segments']: + # skip overlapped span + if sum(in_span[segment['start_index']: segment['end_index']]) > 0: + continue + else: + in_span[segment['start_index']: segment['end_index']] = [1]*(segment['end_index']-segment['start_index']) + # Each conversation was annotated by two workers. + # only keep the first annotation for the span + item = segment['annotations'][0] + intent = 'inform' # default intent + slot = item['name'].split('.', 1)[-1] + if slot.endswith('.accept') or slot.endswith('.reject'): + # intent=accept/reject + intent = slot[-6:] + slot = slot[:-7] + if slot not in ontology['domains'][domain]['slots']: + # no slot, only general reference to a transaction, binary dialog act + turn['dialogue_acts']['binary'].append({ + 'intent': intent, + 'domain': domain, + 'slot': '', + 'value': '' + }) + else: + assert turn['utterance'][segment['start_index']:segment['end_index']] == segment['text'] + turn['dialogue_acts']['non-categorical'].append({ + 'intent': intent, + 'domain': domain, + 'slot': slot, + 'value': segment['text'], + 'start': segment['start_index'], + 'end': segment['end_index'] + }) + + 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) + + for da in turn['dialogue_acts']['non-categorical']: + slot, value = da['slot'], da['value'] + assert slot in prev_state[domain] + # not add reject slot-value into state + if da['intent'] != 'reject': + prev_state[domain][slot] = value + + if speaker == 'user': + turn['state'] = copy.deepcopy(prev_state) + else: + turn['db_results'] = {} + + dialogue['turns'].append(turn) + dialogues_by_split[data_split].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'])] + dialogues = dialogues_by_split['train']+dialogues_by_split['validation']+dialogues_by_split['test'] + 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()