Full Code of MiuLab/DDQ for AI

master f65611c23585 cached
64 files
55.7 MB
630.6k tokens
204 symbols
1 requests
Download .txt
Showing preview only (2,522K chars total). Download the full file or copy to clipboard to get everything.
Repository: MiuLab/DDQ
Branch: master
Commit: f65611c23585
Files: 64
Total size: 55.7 MB

Directory structure:
gitextract_ubqsackx/

├── Bash_figure_4.sh
├── Bash_figure_5.sh
├── LICENSE
├── README.md
└── src/
    ├── deep_dialog/
    │   ├── __init__.py
    │   ├── agents/
    │   │   ├── __init__.py
    │   │   ├── agent.py
    │   │   ├── agent_baselines.py
    │   │   ├── agent_cmd.py
    │   │   └── agent_dqn.py
    │   ├── checkpoints/
    │   │   ├── temp_run1/
    │   │   │   └── agt_9_performance_records.json
    │   │   └── temp_run2/
    │   │       └── agt_9_performance_records.json
    │   ├── data/
    │   │   ├── count_uniq_slots.py
    │   │   ├── dia_act_nl_pairs.v6.json
    │   │   ├── dia_acts.txt
    │   │   ├── dicts.v3.json
    │   │   ├── dicts.v3.p
    │   │   ├── human_huamn_data_framed.json
    │   │   ├── human_huamn_data_framed_agent_first_turn.json
    │   │   ├── movie_kb.1k.json
    │   │   ├── movie_kb.1k.p
    │   │   ├── movie_kb.v2.json
    │   │   ├── movie_kb.v2.p
    │   │   ├── slot_set.txt
    │   │   ├── slot_set_small.txt
    │   │   ├── user_goals.json
    │   │   ├── user_goals_all_turns_template.p
    │   │   ├── user_goals_first_turn_template.part.movie.v1.p
    │   │   ├── user_goals_first_turn_template.v2.p
    │   │   └── user_goals_ids.json
    │   ├── dialog_config.py
    │   ├── dialog_system/
    │   │   ├── __init__.py
    │   │   ├── dialog_manager.py
    │   │   ├── dict_reader.py
    │   │   ├── kb_helper.py
    │   │   ├── state_tracker.py
    │   │   └── utils.py
    │   ├── models/
    │   │   ├── nlg/
    │   │   │   ├── convert.py
    │   │   │   ├── lstm_tanh_relu_[1468202263.38]_2_0.610.p
    │   │   │   └── model.nlg
    │   │   └── nlu/
    │   │       ├── convert.py
    │   │       └── lstm_[1468447442.91]_39_80_0.921.p
    │   ├── nlg/
    │   │   ├── __init__.py
    │   │   ├── decoder.py
    │   │   ├── lstm_decoder_tanh.py
    │   │   ├── nlg.py
    │   │   └── utils.py
    │   ├── nlu/
    │   │   ├── __init__.py
    │   │   ├── bi_lstm.py
    │   │   ├── lstm.py
    │   │   ├── nlu.py
    │   │   ├── seq_seq.py
    │   │   └── utils.py
    │   ├── qlearning/
    │   │   ├── __init__.py
    │   │   ├── dqn.py
    │   │   ├── dqn_torch.py
    │   │   └── utils.py
    │   └── usersims/
    │       ├── __init__.py
    │       ├── user_model.py
    │       ├── usersim.py
    │       ├── usersim_model.py
    │       └── usersim_rule.py
    ├── draw_learning_curve.py
    └── run.py

================================================
FILE CONTENTS
================================================

================================================
FILE: Bash_figure_4.sh
================================================
#Below is the script used for figure 4
for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k0_run$i \
--planning_steps 0 --torch_seed $seed --grounded 0 --boosted 1 --train_world_model 1
done

for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k2_run$i \
--planning_steps 1 --torch_seed $seed --grounded 0 --boosted 1 --train_world_model 1
done

for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k5_run$i \
--planning_steps 4 --torch_seed $seed --grounded 0 --boosted 1 --train_world_model 1
done

for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k10_run$i \
--planning_steps 9 --torch_seed $seed --grounded 0 --boosted 1 --train_world_model 1
done

for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k20_run$i \
--planning_steps 19 --torch_seed $seed --grounded 0 --boosted 1 --train_world_model 1
done

================================================
FILE: Bash_figure_5.sh
================================================
#Below is the script used for figure 5

##DQN 10, upper bound
for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DQN_k10_run$i \
--planning_steps 9 --torch_seed $seed --grounded 1 --boosted 1 --train_world_model 1
done

##DDQ 10
for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k10_run$i \
--planning_steps 9 --torch_seed $seed --grounded 0 --boosted 1 --train_world_model 1
done

##DDQ 10 rand-init
for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k10_rand_run$i \
--planning_steps 9 --torch_seed $seed --grounded 0 --boosted 0 --train_world_model 1
done

##DDQ 10 fixed, run 5 or 10 to smooth the results
for ((i=1; i<= 5; i++));do
let "seed=$i*100"
python run.py --agt 9 \
--usr 1 --max_turn 40 --movie_kb_path ./deep_dialog/data/movie_kb.1k.p --dqn_hidden_size 80 \
--experience_replay_pool_size 5000 --episodes 500 --simulation_epoch_size 100 \
--run_mode 3 --act_level 0 --slot_err_prob 0.0 --intent_err_prob 0.00 --batch_size 16 \
--goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p \
--warm_start 1 --warm_start_epochs 100 \
--write_model_dir ./deep_dialog/checkpoints/DDQ_k10_fixed_run$i \
--planning_steps 9 --torch_seed $seed --grounded 0 --boosted 1 --train_world_model 0
done

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2018 WISELab, MiuLab and Microsoft Research

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# Deep Dyna-Q: Integrating Planning for Task-Completion Dialogue Policy Learning
*An implementation of the  
[Deep Dyna-Q: Integrating Planning for Task-Completion Dialogue Policy Learning](https://arxiv.org/abs/1801.06176)*

This document describes how to run the simulation of DDQ Agent.

## Content
* [Data](#data)
* [Parameter](#parameter)
* [Running Dialogue Agents](#running-dialogue-agents)
* [Evaluation](#evaluation)
* [Reference](#reference)

## Data
all the data is under this folder: ./src/deep_dialog/data

* Movie Knowledge Bases<br/>
`movie_kb.1k.p` --- 94% success rate (for `user_goals_first_turn_template_subsets.v1.p`)<br/>
`movie_kb.v2.p` --- 36% success rate (for `user_goals_first_turn_template_subsets.v1.p`)

* User Goals<br/>
`user_goals_first_turn_template.v2.p` --- user goals extracted from the first user turn<br/>
`user_goals_first_turn_template.part.movie.v1.p` --- a subset of user goals [Please use this one, the upper bound success rate on movie_kb.1k.json is 0.9765.]

* NLG Rule Template<br/>
`dia_act_nl_pairs.v6.json` --- some predefined NLG rule templates for both User simulator and Agent.

* Dialog Act Intent<br/>
`dia_acts.txt`

* Dialog Act Slot<br/>
`slot_set.txt`

## Parameter

### Basic setting

`--agt`: the agent id<br/>
`--usr`: the user (simulator) id<br/>
`--max_turn`: maximum turns<br/>
`--episodes`: how many dialogues to run<br/>
`--slot_err_prob`: slot level err probability<br/>
`--slot_err_mode`: which kind of slot err mode<br/>
`--intent_err_prob`: intent level err probability

### DDQ Agent setting
`--grounded`: planning k steps with environment rather than world model, serving as a upper bound.<br/>
`--boosted`: boost the world model with examles generated by rule agent<br/>
`--train_world_model`: train world model on the fly<br/>


### Data setting

`--movie_kb_path`: the movie kb path for agent side<br/>
`--goal_file_path`: the user goal file path for user simulator side

### Model setting

`--dqn_hidden_size`: hidden size for RL agent<br/>
`--batch_size`: batch size for DDQ training<br/>
`--simulation_epoch_size`: how many dialogue to be simulated in one epoch<br/>
`--warm_start`: use rule policy to fill the experience replay buffer at the beginning<br/>
`--warm_start_epochs`: how many dialogues to run in the warm start

### Display setting

`--run_mode`: 0 for display mode (NL); 1 for debug mode (Dia_Act); 2 for debug mode (Dia_Act and NL); >3 for no display (i.e. training)<br/>
`--act_level`: 0 for user simulator is Dia_Act level; 1 for user simulator is NL level<br/>
`--auto_suggest`: 0 for no auto_suggest; 1 for auto_suggest<br/>
`--cmd_input_mode`: 0 for NL input; 1 for Dia_Act input. (this parameter is for AgentCmd only)

### Others

`--write_model_dir`: the directory to write the models<br/>
`--trained_model_path`: the path of the trained RL agent model; load the trained model for prediction purpose.

`--learning_phase`: train/test/all, default is all. You can split the user goal set into train and test set, or do not split (all); We introduce some randomness at the first sampled user action, even for the same user goal, the generated dialogue might be different.<br/>

## Running Dialogue Agents

Train DDQ Agent with K planning steps:
```sh
python run.py --agt 9 --usr 1 --max_turn 40 
	      --movie_kb_path ./deep_dialog/data/movie_kb.1k.p 
	      --dqn_hidden_size 80 --experience_replay_pool_size 5000 
	      --episodes 500 
	      --simulation_epoch_size 100 
	      --run_mode 3 
	      --act_level 0 
	      --slot_err_prob 0.0 
	      --intent_err_prob 0.00 
	      --batch_size 16 
	      --goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p 
	      --warm_start 1 --warm_start_epochs 100 
	      --planning_steps K-1 
	      --write_model_dir ./deep_dialog/checkpoints/DDQAgent
	      --torch_seed 100
	      --grounded 0
	      --boosted 1
	      --train_world_model 1

```
Test RL Agent with N dialogues:
```sh
python run.py --agt 9 --usr 1 --max_turn 40
	      --movie_kb_path ./deep_dialog/data/movie_kb.1k.p
	      --dqn_hidden_size 80
	      --experience_replay_pool_size 1000
	      --episodes 300 
	      --simulation_epoch_size 100
	      --write_model_dir ./deep_dialog/checkpoints/DDQAgent/
	      --slot_err_prob 0.00
	      --intent_err_prob 0.00
	      --batch_size 16
	      --goal_file_path ./deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p
	      --trained_model_path ./deep_dialog/checkpoints/DDQAgent/TRAINED_MODEL
	      --run_mode 3
```
## Experiments
To run the scripts, move the two bash files under src folder. 
1. Bash_figure_4.sh is the script for figure 4.
2. Bash_figure_5.sh is the script for figure 5. 

## Evaluation
To evaluate the performance of agents, three metrics are available: success rate, average reward, average turns. Here we show the learning curve with success rate.

1. Plotting Learning Curve
``` python draw_learning_curve.py --result_file ./deep_dialog/checkpoints/DDQAgent/noe2e/TRAINED_MODEL.json```
2. Pull out the numbers and draw the curves in Excel

## Reference

Main papers to be cited
```
@inproceedings{Peng2018DeepDynaQ,
  title={Deep Dyna-Q: Integrating Planning for Task-Completion Dialogue Policy Learning},
  author={Peng, Baolin and Li, Xiujun and Gao, Jianfeng and Liu, Jingjing and Wong, Kam-Fai and Su, Shang-Yu},
  booktitle={ACL},
  year={2018}
}

@article{li2016user,
  title={A User Simulator for Task-Completion Dialogues},
  author={Li, Xiujun and Lipton, Zachary C and Dhingra, Bhuwan and Li, Lihong and Gao, Jianfeng and Chen, Yun-Nung},
  journal={arXiv preprint arXiv:1612.05688},
  year={2016}
}


================================================
FILE: src/deep_dialog/__init__.py
================================================
#

================================================
FILE: src/deep_dialog/agents/__init__.py
================================================
from .agent_cmd import *
from .agent_baselines import *
from .agent_dqn import *

================================================
FILE: src/deep_dialog/agents/agent.py
================================================
"""
Created on May 17, 2016

@author: xiul, t-zalipt
"""

from deep_dialog import dialog_config

class Agent:
    """ Prototype for all agent classes, defining the interface they must uphold """

    def __init__(self, movie_dict=None, act_set=None, slot_set=None, params=None):
        """ Constructor for the Agent class

        Arguments:
        movie_dict      --  This is here now but doesn't belong - the agent doesn't know about movies
        act_set         --  The set of acts. #### Shouldn't this be more abstract? Don't we want our agent to be more broadly usable?
        slot_set        --  The set of available slots
        """
        self.movie_dict = movie_dict
        self.act_set = act_set
        self.slot_set = slot_set
        self.act_cardinality = len(act_set.keys())
        self.slot_cardinality = len(slot_set.keys())
        
        self.epsilon = params['epsilon']
        self.agent_run_mode = params['agent_run_mode']
        self.agent_act_level = params['agent_act_level']
        

    def initialize_episode(self):
        """ Initialize a new episode. This function is called every time a new episode is run. """
        self.current_action = {}                    #   TODO Changed this variable's name to current_action
        self.current_action['diaact'] = None        #   TODO Does it make sense to call it a state if it has an act? Which act? The Most recent?
        self.current_action['inform_slots'] = {}
        self.current_action['request_slots'] = {}
        self.current_action['turn'] = 0

    def state_to_action(self, state, available_actions):
        """ Take the current state and return an action according to the current exploration/exploitation policy

        We define the agents flexibly so that they can either operate on act_slot representations or act_slot_value representations.
        We also define the responses flexibly, returning a dictionary with keys [act_slot_response, act_slot_value_response]. This way the command-line agent can continue to operate with values

        Arguments:
        state      --   A tuple of (history, kb_results) where history is a sequence of previous actions and kb_results contains information on the number of results matching the current constraints.
        user_action         --   A legacy representation used to run the command line agent. We should remove this ASAP but not just yet
        available_actions   --   A list of the allowable actions in the current state

        Returns:
        act_slot_action         --   An action consisting of one act and >= 0 slots as well as which slots are informed vs requested.
        act_slot_value_action   --   An action consisting of acts slots and values in the legacy format. This can be used in the future for training agents that take value into account and interact directly with the database
        """
        act_slot_response = None
        act_slot_value_response = None
        return {"act_slot_response": act_slot_response, "act_slot_value_response": act_slot_value_response}


    def register_experience_replay_tuple(self, s_t, a_t, reward, s_tplus1, episode_over):
        """  Register feedback from the environment, to be stored as future training data

        Arguments:
        s_t                 --  The state in which the last action was taken
        a_t                 --  The previous agent action
        reward              --  The reward received immediately following the action
        s_tplus1            --  The state transition following the latest action
        episode_over        --  A boolean value representing whether the this is the final action.

        Returns:
        None
        """
        pass
    
    
    def set_nlg_model(self, nlg_model):
        self.nlg_model = nlg_model  
    
    def set_nlu_model(self, nlu_model):
        self.nlu_model = nlu_model
     
       
    def add_nl_to_action(self, agent_action):
        """ Add NL to Agent Dia_Act """
        
        if agent_action['act_slot_response']:
            agent_action['act_slot_response']['nl'] = ""
            #TODO
            user_nlg_sentence = self.nlg_model.convert_diaact_to_nl(agent_action['act_slot_response'], 'agt') #self.nlg_model.translate_diaact(agent_action['act_slot_response']) # NLG
            agent_action['act_slot_response']['nl'] = user_nlg_sentence
        elif agent_action['act_slot_value_response']:
            agent_action['act_slot_value_response']['nl'] = ""
            user_nlg_sentence = self.nlg_model.convert_diaact_to_nl(agent_action['act_slot_value_response'], 'agt') #self.nlg_model.translate_diaact(agent_action['act_slot_value_response']) # NLG
            agent_action['act_slot_response']['nl'] = user_nlg_sentence

================================================
FILE: src/deep_dialog/agents/agent_baselines.py
================================================
"""
Created on May 25, 2016

@author: xiul, t-zalipt
"""

import copy, random
from deep_dialog import dialog_config
from agent import Agent


class InformAgent(Agent):
    """ A simple agent to test the system. This agent should simply inform all the slots and then issue: taskcomplete. """

    def initialize_episode(self):
        self.state = {}
        self.state['diaact'] = ''
        self.state['inform_slots'] = {}
        self.state['request_slots'] = {}
        self.state['turn'] = -1
        self.current_slot_id = 0

    def state_to_action(self, state):
        """ Run current policy on state and produce an action """
        
        self.state['turn'] += 2
        if self.current_slot_id < len(self.slot_set.keys()):
            slot = self.slot_set.keys()[self.current_slot_id]
            self.current_slot_id += 1

            act_slot_response = {}
            act_slot_response['diaact'] = "inform"
            act_slot_response['inform_slots'] = {slot: "PLACEHOLDER"}
            act_slot_response['request_slots'] = {}
            act_slot_response['turn'] = self.state['turn']
        else:
            act_slot_response = {'diaact': "thanks", 'inform_slots': {}, 'request_slots': {}, 'turn': self.state['turn']}
        return {'act_slot_response': act_slot_response, 'act_slot_value_response': None}



class RequestAllAgent(Agent):
    """ A simple agent to test the system. This agent should simply request all the slots and then issue: thanks(). """
    
    def initialize_episode(self):
        self.state = {}
        self.state['diaact'] = ''
        self.state['inform_slots'] = {}
        self.state['request_slots'] = {}
        self.state['turn'] = -1
        self.current_slot_id = 0

    def state_to_action(self, state):
        """ Run current policy on state and produce an action """
        
        self.state['turn'] += 2
        if self.current_slot_id < len(dialog_config.sys_request_slots):
            slot = dialog_config.sys_request_slots[self.current_slot_id]
            self.current_slot_id += 1

            act_slot_response = {}
            act_slot_response['diaact'] = "request"
            act_slot_response['inform_slots'] = {}
            act_slot_response['request_slots'] = {slot: "PLACEHOLDER"}
            act_slot_response['turn'] = self.state['turn']
        else:
            act_slot_response = {'diaact': "thanks", 'inform_slots': {}, 'request_slots': {}, 'turn': self.state['turn']}
        return {'act_slot_response': act_slot_response, 'act_slot_value_response': None}



class RandomAgent(Agent):
    """ A simple agent to test the interface. This agent should choose actions randomly. """

    def initialize_episode(self):
        self.state = {}
        self.state['diaact'] = ''
        self.state['inform_slots'] = {}
        self.state['request_slots'] = {}
        self.state['turn'] = -1


    def state_to_action(self, state):
        """ Run current policy on state and produce an action """
        
        self.state['turn'] += 2
        act_slot_response = copy.deepcopy(random.choice(dialog_config.feasible_actions))
        act_slot_response['turn'] = self.state['turn']
        return {'act_slot_response': act_slot_response, 'act_slot_value_response': None}



class EchoAgent(Agent):
    """ A simple agent that informs all requested slots, then issues inform(taskcomplete) when the user stops making requests. """

    def initialize_episode(self):
        self.state = {}
        self.state['diaact'] = ''
        self.state['inform_slots'] = {}
        self.state['request_slots'] = {}
        self.state['turn'] = -1


    def state_to_action(self, state):
        """ Run current policy on state and produce an action """
        user_action = state['user_action']
        
        self.state['turn'] += 2
        act_slot_response = {}
        act_slot_response['inform_slots'] = {}
        act_slot_response['request_slots'] = {}
        ########################################################################
        # find out if the user is requesting anything
        # if so, inform it
        ########################################################################
        if user_action['diaact'] == 'request':
            requested_slot = user_action['request_slots'].keys()[0]

            act_slot_response['diaact'] = "inform"
            act_slot_response['inform_slots'][requested_slot] = "PLACEHOLDER"
        else:
            act_slot_response['diaact'] = "thanks"

        act_slot_response['turn'] = self.state['turn']
        return {'act_slot_response': act_slot_response, 'act_slot_value_response': None}


class RequestBasicsAgent(Agent):
    """ A simple agent to test the system. This agent should simply request all the basic slots and then issue: thanks(). """
    
    def initialize_episode(self):
        self.state = {}
        self.state['diaact'] = 'UNK'
        self.state['inform_slots'] = {}
        self.state['request_slots'] = {}
        self.state['turn'] = -1
        self.current_slot_id = 0
        self.request_set = ['moviename', 'starttime', 'city', 'date', 'theater', 'numberofpeople']
        self.phase = 0

    def state_to_action(self, state):
        """ Run current policy on state and produce an action """
        
        self.state['turn'] += 2
        if self.current_slot_id < len(self.request_set):
            slot = self.request_set[self.current_slot_id]
            self.current_slot_id += 1

            act_slot_response = {}
            act_slot_response['diaact'] = "request"
            act_slot_response['inform_slots'] = {}
            act_slot_response['request_slots'] = {slot: "UNK"}
            act_slot_response['turn'] = self.state['turn']
        elif self.phase == 0:
            act_slot_response = {'diaact': "inform", 'inform_slots': {'taskcomplete': "PLACEHOLDER"}, 'request_slots': {}, 'turn':self.state['turn']}
            self.phase += 1
        elif self.phase == 1:
            act_slot_response = {'diaact': "thanks", 'inform_slots': {}, 'request_slots': {}, 'turn': self.state['turn']}
        else:
            raise Exception("THIS SHOULD NOT BE POSSIBLE (AGENT CALLED IN UNANTICIPATED WAY)")
        return {'act_slot_response': act_slot_response, 'act_slot_value_response': None}



================================================
FILE: src/deep_dialog/agents/agent_cmd.py
================================================
"""
Created on May 17, 2016

@author: xiul, t-zalipt
"""


from agent import Agent

class AgentCmd(Agent):
    
    def __init__(self, movie_dict=None, act_set=None, slot_set=None, params=None):
        """ Constructor for the Agent class """
        
        self.movie_dict = movie_dict
        self.act_set = act_set
        self.slot_set = slot_set
        self.act_cardinality = len(act_set.keys())
        self.slot_cardinality = len(slot_set.keys())
        
        self.agent_run_mode = params['agent_run_mode']
        self.agent_act_level = params['agent_act_level']
        self.agent_input_mode = params['cmd_input_mode']
        
        
    def state_to_action(self, state):
        """ Generate an action by getting input interactively from the command line """

        user_action = state['user_action']
        # get input from the command line
        print "Turn", user_action['turn'] + 1, "sys:",
        command = raw_input()
        
        if self.agent_input_mode == 0: # nl
            act_slot_value_response = self.generate_diaact_from_nl(command)
        elif self.agent_input_mode == 1: # dia_act
            act_slot_value_response = self.parse_str_to_diaact(command)
        
        return {"act_slot_response": act_slot_value_response, "act_slot_value_response": act_slot_value_response}
    
    def parse_str_to_diaact(self, string):
        """ Parse string into Dia_Act Form """
        
        annot = string.strip(' ').strip('\n').strip('\r')
        act = annot

        if annot.find('(') > 0 and annot.find(')') > 0:
            act = annot[0: annot.find('(')].strip(' ').lower() #Dia act
            annot = annot[annot.find('(')+1:-1].strip(' ') #slot-value pairs
        else: annot = ''
        
        act_slot_value_response = {}
        act_slot_value_response['diaact'] = 'UNK'
        act_slot_value_response['inform_slots'] = {}
        act_slot_value_response['request_slots'] = {}
        
        if act in self.act_set: # dialog_config.all_acts
            act_slot_value_response['diaact'] = act
        else:
            print ("Something wrong for your input dialog act! Please check your input ...")

        if len(annot) > 0: # slot-pair values: slot[val] = id
            annot_segs = annot.split(';') #slot-value pairs
            sent_slot_vals = {} # slot-pair real value
            sent_rep_vals = {} # slot-pair id value

            for annot_seg in annot_segs:
                annot_seg = annot_seg.strip(' ')
                annot_slot = annot_seg
                if annot_seg.find('=') > 0:
                    annot_slot = annot_seg[:annot_seg.find('=')] 
                    annot_val = annot_seg[annot_seg.find('=')+1:]
                else: #requested
                    annot_val = 'UNK' # for request
                    if annot_slot == 'taskcomplete': annot_val = 'FINISH'

                if annot_slot == 'mc_list': continue

                # slot may have multiple values
                sent_slot_vals[annot_slot] = []
                sent_rep_vals[annot_slot] = []

                if annot_val.startswith('{') and annot_val.endswith('}'):
                    annot_val = annot_val[1:-1]

                    if annot_slot == 'result':
                        result_annot_seg_arr = annot_val.strip(' ').split('&')
                        if len(annot_val.strip(' '))> 0:
                            for result_annot_seg_item in result_annot_seg_arr:
                                result_annot_seg_arr = result_annot_seg_item.strip(' ').split('=')
                                result_annot_seg_slot = result_annot_seg_arr[0]
                                result_annot_seg_slot_val = result_annot_seg_arr[1]
                                
                                if result_annot_seg_slot_val == 'UNK': act_slot_value_response['request_slots'][result_annot_seg_slot] = 'UNK'
                                else: act_slot_value_response['inform_slots'][result_annot_seg_slot] = result_annot_seg_slot_val
                        else: # result={}
                            pass
                    else: # multi-choice or mc_list
                        annot_val_arr = annot_val.split('#')
                        act_slot_value_response['inform_slots'][annot_slot] = []
                        for annot_val_ele in annot_val_arr:
                            act_slot_value_response['inform_slots'][annot_slot].append(annot_val_ele)
                else: # single choice
                    if annot_slot in self.slot_set.keys():
                        if annot_val == 'UNK':
                            act_slot_value_response['request_slots'][annot_slot] = 'UNK'
                        else:
                            act_slot_value_response['inform_slots'][annot_slot] = annot_val
        
        return act_slot_value_response
    
    def generate_diaact_from_nl(self, string):
        """ Generate Dia_Act Form with NLU """
        
        agent_action = {}
        agent_action['diaact'] = 'UNK'
        agent_action['inform_slots'] = {}
        agent_action['request_slots'] = {}
        
        if len(string) > 0:
            agent_action = self.nlu_model.generate_dia_act(string)
        
        agent_action['nl'] = string 
        return agent_action
    
    def add_nl_to_action(self, agent_action):
        """ Add NL to Agent Dia_Act """
        
        if self.agent_input_mode == 1:
            if agent_action['act_slot_response']:
                agent_action['act_slot_response']['nl'] = ""
                user_nlg_sentence = self.nlg_model.convert_diaact_to_nl(agent_action['act_slot_response'], 'agt')
                agent_action['act_slot_response']['nl'] = user_nlg_sentence
            elif agent_action['act_slot_value_response']:
                agent_action['act_slot_value_response']['nl'] = ""
                user_nlg_sentence = self.nlg_model.convert_diaact_to_nl(agent_action['act_slot_value_response'], 'agt')
                agent_action['act_slot_response']['nl'] = user_nlg_sentence
                

================================================
FILE: src/deep_dialog/agents/agent_dqn.py
================================================
'''
Created on Oct 30, 2017

An DQN Agent modified for DDQ Agent

Some methods are not consistent with super class Agent.

@author: Baolin Peng
'''

import random, copy, json
import cPickle as pickle
import numpy as np
from collections import namedtuple, deque

from deep_dialog import dialog_config

from agent import Agent
from deep_dialog.qlearning import DQN

import torch
import torch.optim as optim
import torch.nn.functional as F

DEVICE = torch.device('cpu')

Transition = namedtuple('Transition', ('state', 'action', 'reward', 'next_state', 'term'))


class AgentDQN(Agent):
    def __init__(self, movie_dict=None, act_set=None, slot_set=None, params=None):
        self.movie_dict = movie_dict
        self.act_set = act_set
        self.slot_set = slot_set
        self.act_cardinality = len(act_set.keys())
        self.slot_cardinality = len(slot_set.keys())

        self.feasible_actions = dialog_config.feasible_actions
        self.num_actions = len(self.feasible_actions)

        self.epsilon = params['epsilon']
        self.agent_run_mode = params['agent_run_mode']
        self.agent_act_level = params['agent_act_level']

        self.experience_replay_pool_size = params.get('experience_replay_pool_size', 5000)
        self.experience_replay_pool = deque(
            maxlen=self.experience_replay_pool_size)  # experience replay pool <s_t, a_t, r_t, s_t+1>
        self.experience_replay_pool_from_model = deque(
            maxlen=self.experience_replay_pool_size)  # experience replay pool <s_t, a_t, r_t, s_t+1>
        self.running_expereince_pool = None # hold experience from both user and world model

        self.hidden_size = params.get('dqn_hidden_size', 60)
        self.gamma = params.get('gamma', 0.9)
        self.predict_mode = params.get('predict_mode', False)
        self.warm_start = params.get('warm_start', 0)

        self.max_turn = params['max_turn'] + 5
        self.state_dimension = 2 * self.act_cardinality + 7 * self.slot_cardinality + 3 + self.max_turn

        self.dqn = DQN(self.state_dimension, self.hidden_size, self.num_actions).to(DEVICE)
        self.target_dqn = DQN(self.state_dimension, self.hidden_size, self.num_actions).to(DEVICE)
        self.target_dqn.load_state_dict(self.dqn.state_dict())
        self.target_dqn.eval()

        self.optimizer = optim.RMSprop(self.dqn.parameters(), lr=1e-3)

        self.cur_bellman_err = 0

        # Prediction Mode: load trained DQN model
        if params['trained_model_path'] != None:
            self.load(params['trained_model_path'])
            self.predict_mode = True
            self.warm_start = 2

    def initialize_episode(self):
        """ Initialize a new episode. This function is called every time a new episode is run. """

        self.current_slot_id = 0
        self.phase = 0
        self.request_set = ['moviename', 'starttime', 'city', 'date', 'theater', 'numberofpeople']

    def state_to_action(self, state):
        """ DQN: Input state, output action """
        # self.state['turn'] += 2
        self.representation = self.prepare_state_representation(state)
        self.action = self.run_policy(self.representation)
        if self.warm_start == 1:
            act_slot_response = copy.deepcopy(self.feasible_actions[self.action])
        else:
            act_slot_response = copy.deepcopy(self.feasible_actions[self.action[0]])

        return {'act_slot_response': act_slot_response, 'act_slot_value_response': None}

    def prepare_state_representation(self, state):
        """ Create the representation for each state """

        user_action = state['user_action']
        current_slots = state['current_slots']
        kb_results_dict = state['kb_results_dict']
        agent_last = state['agent_action']

        ########################################################################
        #   Create one-hot of acts to represent the current user action
        ########################################################################
        user_act_rep = np.zeros((1, self.act_cardinality))
        user_act_rep[0, self.act_set[user_action['diaact']]] = 1.0

        ########################################################################
        #     Create bag of inform slots representation to represent the current user action
        ########################################################################
        user_inform_slots_rep = np.zeros((1, self.slot_cardinality))
        for slot in user_action['inform_slots'].keys():
            user_inform_slots_rep[0, self.slot_set[slot]] = 1.0

        ########################################################################
        #   Create bag of request slots representation to represent the current user action
        ########################################################################
        user_request_slots_rep = np.zeros((1, self.slot_cardinality))
        for slot in user_action['request_slots'].keys():
            user_request_slots_rep[0, self.slot_set[slot]] = 1.0

        ########################################################################
        #   Creat bag of filled_in slots based on the current_slots
        ########################################################################
        current_slots_rep = np.zeros((1, self.slot_cardinality))
        for slot in current_slots['inform_slots']:
            current_slots_rep[0, self.slot_set[slot]] = 1.0

        ########################################################################
        #   Encode last agent act
        ########################################################################
        agent_act_rep = np.zeros((1, self.act_cardinality))
        if agent_last:
            agent_act_rep[0, self.act_set[agent_last['diaact']]] = 1.0

        ########################################################################
        #   Encode last agent inform slots
        ########################################################################
        agent_inform_slots_rep = np.zeros((1, self.slot_cardinality))
        if agent_last:
            for slot in agent_last['inform_slots'].keys():
                agent_inform_slots_rep[0, self.slot_set[slot]] = 1.0

        ########################################################################
        #   Encode last agent request slots
        ########################################################################
        agent_request_slots_rep = np.zeros((1, self.slot_cardinality))
        if agent_last:
            for slot in agent_last['request_slots'].keys():
                agent_request_slots_rep[0, self.slot_set[slot]] = 1.0

        # turn_rep = np.zeros((1,1)) + state['turn'] / 10.
        turn_rep = np.zeros((1, 1))

        ########################################################################
        #  One-hot representation of the turn count?
        ########################################################################
        turn_onehot_rep = np.zeros((1, self.max_turn))
        turn_onehot_rep[0, state['turn']] = 1.0

        # ########################################################################
        # #   Representation of KB results (scaled counts)
        # ########################################################################
        # kb_count_rep = np.zeros((1, self.slot_cardinality + 1)) + kb_results_dict['matching_all_constraints'] / 100.
        # for slot in kb_results_dict:
        #     if slot in self.slot_set:
        #         kb_count_rep[0, self.slot_set[slot]] = kb_results_dict[slot] / 100.
        #
        # ########################################################################
        # #   Representation of KB results (binary)
        # ########################################################################
        # kb_binary_rep = np.zeros((1, self.slot_cardinality + 1)) + np.sum( kb_results_dict['matching_all_constraints'] > 0.)
        # for slot in kb_results_dict:
        #     if slot in self.slot_set:
        #         kb_binary_rep[0, self.slot_set[slot]] = np.sum( kb_results_dict[slot] > 0.)

        kb_count_rep = np.zeros((1, self.slot_cardinality + 1))

        ########################################################################
        #   Representation of KB results (binary)
        ########################################################################
        kb_binary_rep = np.zeros((1, self.slot_cardinality + 1))

        self.final_representation = np.hstack(
            [user_act_rep, user_inform_slots_rep, user_request_slots_rep, agent_act_rep, agent_inform_slots_rep,
             agent_request_slots_rep, current_slots_rep, turn_rep, turn_onehot_rep, kb_binary_rep, kb_count_rep])
        return self.final_representation

    def run_policy(self, representation):
        """ epsilon-greedy policy """

        if random.random() < self.epsilon:
            return random.randint(0, self.num_actions - 1)
        else:
            if self.warm_start == 1:
                if len(self.experience_replay_pool) > self.experience_replay_pool_size:
                    self.warm_start = 2
                return self.rule_policy()
            else:
                return self.DQN_policy(representation)

    def rule_policy(self):
        """ Rule Policy """

        act_slot_response = {}

        if self.current_slot_id < len(self.request_set):
            slot = self.request_set[self.current_slot_id]
            self.current_slot_id += 1

            act_slot_response = {}
            act_slot_response['diaact'] = "request"
            act_slot_response['inform_slots'] = {}
            act_slot_response['request_slots'] = {slot: "UNK"}
        elif self.phase == 0:
            act_slot_response = {'diaact': "inform", 'inform_slots': {'taskcomplete': "PLACEHOLDER"},
                                 'request_slots': {}}
            self.phase += 1
        elif self.phase == 1:
            act_slot_response = {'diaact': "thanks", 'inform_slots': {}, 'request_slots': {}}

        return self.action_index(act_slot_response)

    def DQN_policy(self, state_representation):
        """ Return action from DQN"""

        with torch.no_grad():
            action = self.dqn.predict(torch.FloatTensor(state_representation))
        return action

    def action_index(self, act_slot_response):
        """ Return the index of action """

        for (i, action) in enumerate(self.feasible_actions):
            if act_slot_response == action:
                return i
        print act_slot_response
        raise Exception("action index not found")
        return None

    def register_experience_replay_tuple(self, s_t, a_t, reward, s_tplus1, episode_over, st_user, from_model=False):
        """ Register feedback from either environment or world model, to be stored as future training data """

        state_t_rep = self.prepare_state_representation(s_t)
        action_t = self.action
        reward_t = reward
        state_tplus1_rep = self.prepare_state_representation(s_tplus1)
        st_user = self.prepare_state_representation(s_tplus1)
        training_example = (state_t_rep, action_t, reward_t, state_tplus1_rep, episode_over, st_user)

        if self.predict_mode == False:  # Training Mode
            if self.warm_start == 1:
                self.experience_replay_pool.append(training_example)
        else:  # Prediction Mode
            if not from_model:
                self.experience_replay_pool.append(training_example)
            else:
                self.experience_replay_pool_from_model.append(training_example)

    def sample_from_buffer(self, batch_size):
        """Sample batch size examples from experience buffer and convert it to torch readable format"""
        # type: (int, ) -> Transition

        batch = [random.choice(self.running_expereince_pool) for i in xrange(batch_size)]
        np_batch = []
        for x in range(len(Transition._fields)):
            v = []
            for i in xrange(batch_size):
                v.append(batch[i][x])
            np_batch.append(np.vstack(v))

        return Transition(*np_batch)

    def train(self, batch_size=1, num_batches=100):
        """ Train DQN with experience buffer that comes from both user and world model interaction."""

        self.cur_bellman_err = 0.
        self.cur_bellman_err_planning = 0.
        self.running_expereince_pool = list(self.experience_replay_pool) + list(self.experience_replay_pool_from_model)

        for iter_batch in range(num_batches):
            for iter in range(len(self.running_expereince_pool) / (batch_size)):
                self.optimizer.zero_grad()
                batch = self.sample_from_buffer(batch_size)

                state_value = self.dqn(torch.FloatTensor(batch.state)).gather(1, torch.tensor(batch.action))
                next_state_value, _ = self.target_dqn(torch.FloatTensor(batch.next_state)).max(1)
                next_state_value = next_state_value.unsqueeze(1)
                term = np.asarray(batch.term, dtype=np.float32)
                expected_value = torch.FloatTensor(batch.reward) + self.gamma * next_state_value * (
                    1 - torch.FloatTensor(term))

                loss = F.mse_loss(state_value, expected_value)
                loss.backward()
                self.optimizer.step()
                self.cur_bellman_err += loss.item()

            if len(self.experience_replay_pool) != 0:
                print (
                    "cur bellman err %.4f, experience replay pool %s, model replay pool %s, cur bellman err for planning %.4f" % (
                        float(self.cur_bellman_err) / (len(self.experience_replay_pool) / (float(batch_size))),
                        len(self.experience_replay_pool), len(self.experience_replay_pool_from_model),
                        self.cur_bellman_err_planning))

    # def train_one_iter(self, batch_size=1, num_batches=100, planning=False):
    #     """ Train DQN with experience replay """
    #     self.cur_bellman_err = 0
    #     self.cur_bellman_err_planning = 0
    #     running_expereince_pool = self.experience_replay_pool + self.experience_replay_pool_from_model
    #     for iter_batch in range(num_batches):
    #         batch = [random.choice(self.experience_replay_pool) for i in xrange(batch_size)]
    #         np_batch = []
    #         for x in range(5):
    #             v = []
    #             for i in xrange(len(batch)):
    #                 v.append(batch[i][x])
    #             np_batch.append(np.vstack(v))
    #
    #         batch_struct = self.dqn.singleBatch(np_batch)
    #         self.cur_bellman_err += batch_struct['cost']['total_cost']
    #         if planning:
    #             plan_step = 3
    #             for _ in xrange(plan_step):
    #                 batch_planning = [random.choice(self.experience_replay_pool) for i in
    #                                   xrange(batch_size)]
    #                 np_batch_planning = []
    #                 for x in range(5):
    #                     v = []
    #                     for i in xrange(len(batch_planning)):
    #                         v.append(batch_planning[i][x])
    #                     np_batch_planning.append(np.vstack(v))
    #
    #                 s_tp1, r, t = self.user_planning.predict(np_batch_planning[0], np_batch_planning[1])
    #                 s_tp1[np.where(s_tp1 >= 0.5)] = 1
    #                 s_tp1[np.where(s_tp1 <= 0.5)] = 0
    #
    #                 t[np.where(t >= 0.5)] = 1
    #
    #                 np_batch_planning[2] = r
    #                 np_batch_planning[3] = s_tp1
    #                 np_batch_planning[4] = t
    #
    #                 batch_struct = self.dqn.singleBatch(np_batch_planning)
    #                 self.cur_bellman_err_planning += batch_struct['cost']['total_cost']
    #
    #     if len(self.experience_replay_pool) != 0:
    #         print ("cur bellman err %.4f, experience replay pool %s, cur bellman err for planning %.4f" % (
    #             float(self.cur_bellman_err) / (len(self.experience_replay_pool) / (float(batch_size))),
    #             len(self.experience_replay_pool), self.cur_bellman_err_planning))

    ################################################################################
    #    Debug Functions
    ################################################################################
    def save_experience_replay_to_file(self, path):
        """ Save the experience replay pool to a file """

        try:
            pickle.dump(self.experience_replay_pool, open(path, "wb"))
            print 'saved model in %s' % (path,)
        except Exception, e:
            print 'Error: Writing model fails: %s' % (path,)
            print e

    def load_experience_replay_from_file(self, path):
        """ Load the experience replay pool from a file"""

        self.experience_replay_pool = pickle.load(open(path, 'rb'))

    def load_trained_DQN(self, path):
        """ Load the trained DQN from a file """

        trained_file = pickle.load(open(path, 'rb'))
        model = trained_file['model']
        print "Trained DQN Parameters:", json.dumps(trained_file['params'], indent=2)
        return model

    def set_user_planning(self, user_planning):
        self.user_planning = user_planning

    def save(self, filename):
        torch.save(self.dqn.state_dict(), filename)

    def load(self, filename):
        self.dqn.load_state_dict(torch.load(filename))

    def reset_dqn_target(self):
        self.target_dqn.load_state_dict(self.dqn.state_dict())


================================================
FILE: src/deep_dialog/checkpoints/temp_run1/agt_9_performance_records.json
================================================
{"ave_turns": {"0": 32.76, "1": 42.0, "2": 12.56, "3": 4.0, "4": 5.52, "5": 14.2, "6": 21.92, "7": 16.28, "8": 22.32, "9": 10.04, "10": 5.8, "11": 6.64, "12": 6.96, "13": 6.24, "14": 9.88, "15": 8.84, "16": 9.52, "17": 9.68, "18": 11.12, "19": 13.56, "20": 30.52, "21": 24.16, "22": 17.44, "23": 36.92, "24": 18.32, "25": 15.04, "26": 28.32, "27": 20.08, "28": 25.0, "29": 32.48, "30": 34.6, "31": 39.0, "32": 34.2, "33": 28.2, "34": 30.0, "35": 39.2, "36": 39.2, "37": 39.2, "38": 32.32, "39": 31.32, "40": 30.8, "41": 34.44, "42": 34.6, "43": 40.28, "44": 36.48, "45": 34.16, "46": 38.68, "47": 38.08, "48": 33.8, "49": 36.8, "50": 36.36, "51": 38.76, "52": 36.44, "53": 37.92, "54": 37.12, "55": 38.28, "56": 40.12, "57": 42.0, "58": 40.44, "59": 40.96, "60": 39.4, "61": 37.08, "62": 37.84, "63": 37.92, "64": 39.92, "65": 37.72, "66": 40.28, "67": 37.12, "68": 39.92, "69": 38.64, "70": 39.84, "71": 40.56, "72": 39.2, "73": 36.92, "74": 37.24, "75": 41.32, "76": 37.8, "77": 38.4, "78": 38.68, "79": 36.32, "80": 37.32, "81": 35.84, "82": 35.24, "83": 32.64, "84": 36.96, "85": 35.8, "86": 34.76, "87": 35.68, "88": 36.8, "89": 34.76, "90": 31.6, "91": 35.92, "92": 35.76, "93": 38.12, "94": 40.96, "95": 38.76, "96": 35.96, "97": 37.24, "98": 37.32, "99": 38.88, "100": 37.32, "101": 35.24, "102": 32.88, "103": 33.08, "104": 37.68, "105": 33.12, "106": 34.64, "107": 37.68, "108": 34.4, "109": 33.84, "110": 34.36, "111": 33.36, "112": 36.68, "113": 36.56, "114": 32.24, "115": 32.76, "116": 35.04, "117": 38.0, "118": 36.4, "119": 32.64, "120": 39.88, "121": 33.2, "122": 40.48, "123": 39.0, "124": 33.4, "125": 32.72, "126": 32.32, "127": 30.88, "128": 29.0, "129": 33.36, "130": 28.92, "131": 30.44, "132": 33.16, "133": 30.44, "134": 32.76, "135": 31.36, "136": 29.36, "137": 27.04, "138": 28.72, "139": 30.12, "140": 29.96, "141": 31.72, "142": 28.8, "143": 30.84, "144": 30.6, "145": 32.48, "146": 30.28, "147": 30.2, "148": 30.12, "149": 30.92, "150": 29.88, "151": 31.96, "152": 31.72, "153": 28.28, "154": 34.16, "155": 30.0, "156": 28.08, "157": 28.96, "158": 29.72, "159": 29.4, "160": 32.8, "161": 31.68, "162": 30.08, "163": 32.52, "164": 30.08, "165": 27.56, "166": 29.68, "167": 29.92, "168": 27.8, "169": 31.92, "170": 28.32, "171": 28.16, "172": 29.44, "173": 31.32, "174": 29.48, "175": 30.16, "176": 29.48, "177": 28.16, "178": 27.04, "179": 27.32, "180": 26.6, "181": 25.6, "182": 27.48, "183": 23.44, "184": 24.68, "185": 25.44, "186": 26.64, "187": 25.2, "188": 28.64, "189": 28.64, "190": 25.6, "191": 22.04, "192": 23.84, "193": 26.52, "194": 23.24, "195": 27.48, "196": 26.88, "197": 27.64, "198": 21.88, "199": 23.44, "200": 21.88, "201": 22.48, "202": 23.92, "203": 26.44, "204": 25.92, "205": 24.32, "206": 21.0, "207": 23.24, "208": 24.08, "209": 22.68, "210": 24.48, "211": 25.16, "212": 24.08, "213": 22.16, "214": 24.56, "215": 23.64, "216": 22.84, "217": 22.76, "218": 24.44, "219": 24.04, "220": 25.92, "221": 22.96, "222": 23.28, "223": 25.72, "224": 22.88, "225": 23.16, "226": 23.84, "227": 23.64, "228": 23.08, "229": 21.76, "230": 23.84, "231": 22.28, "232": 23.92, "233": 23.24, "234": 20.8, "235": 24.92, "236": 23.16, "237": 22.72, "238": 25.52, "239": 25.16, "240": 21.76, "241": 24.08, "242": 23.04, "243": 25.4, "244": 23.16, "245": 19.88, "246": 25.52, "247": 23.6, "248": 22.32, "249": 25.92, "250": 20.12, "251": 23.44, "252": 25.84, "253": 24.44, "254": 24.36, "255": 23.24, "256": 25.44, "257": 21.88, "258": 25.12, "259": 24.0, "260": 22.44, "261": 23.12, "262": 23.88, "263": 20.88, "264": 23.0, "265": 24.96, "266": 24.36, "267": 19.64, "268": 24.6, "269": 21.56, "270": 22.64, "271": 24.32, "272": 23.0, "273": 22.56, "274": 24.4, "275": 21.52, "276": 24.8, "277": 22.52, "278": 21.76, "279": 25.8, "280": 24.96, "281": 22.8, "282": 22.16, "283": 23.92, "284": 22.12, "285": 24.16, "286": 22.12, "287": 21.92, "288": 25.04, "289": 25.52, "290": 23.36, "291": 23.72, "292": 25.36, "293": 22.92, "294": 25.0, "295": 25.72, "296": 26.4, "297": 24.16, "298": 23.8, "299": 21.76, "300": 24.8, "301": 22.8, "302": 23.2, "303": 21.88, "304": 24.16, "305": 24.24, "306": 24.88, "307": 21.28, "308": 21.96, "309": 21.44, "310": 23.88, "311": 23.24, "312": 19.88, "313": 22.76, "314": 21.4, "315": 25.32, "316": 22.72, "317": 25.28, "318": 22.32, "319": 23.76, "320": 23.36, "321": 22.8, "322": 22.08, "323": 19.96, "324": 25.96, "325": 23.32, "326": 22.4, "327": 24.2, "328": 26.64, "329": 22.36, "330": 24.32, "331": 23.04, "332": 25.52, "333": 25.08, "334": 25.28, "335": 22.68, "336": 25.92, "337": 26.08, "338": 22.92, "339": 27.08, "340": 23.96, "341": 28.08, "342": 23.84, "343": 24.28, "344": 26.0, "345": 22.96, "346": 26.12, "347": 26.72, "348": 25.28, "349": 22.32, "350": 27.6, "351": 21.48, "352": 25.84, "353": 22.2, "354": 23.36, "355": 25.88, "356": 25.2, "357": 23.84, "358": 24.28, "359": 27.88, "360": 23.6, "361": 23.32, "362": 24.0, "363": 24.84, "364": 25.44, "365": 26.6, "366": 26.08, "367": 25.56, "368": 23.6, "369": 26.0, "370": 24.44, "371": 23.32, "372": 24.04, "373": 22.88, "374": 23.56, "375": 24.0, "376": 22.56, "377": 21.48, "378": 25.24, "379": 26.24, "380": 25.16, "381": 23.08, "382": 26.28, "383": 22.52, "384": 21.24, "385": 21.04, "386": 22.32, "387": 22.36, "388": 23.84, "389": 24.4, "390": 23.0, "391": 23.44, "392": 23.4, "393": 24.12, "394": 25.0, "395": 22.32, "396": 20.84, "397": 22.68, "398": 24.28, "399": 20.44, "400": 26.24, "401": 23.48, "402": 26.04, "403": 24.32, "404": 25.36, "405": 24.44, "406": 22.92, "407": 24.0, "408": 23.24, "409": 25.4, "410": 26.44, "411": 23.96, "412": 25.04, "413": 25.04, "414": 26.6, "415": 24.88, "416": 24.0, "417": 23.4, "418": 25.08, "419": 24.04, "420": 22.12, "421": 25.32, "422": 25.24, "423": 21.64, "424": 23.48, "425": 22.68, "426": 23.52, "427": 24.48, "428": 20.6, "429": 21.48, "430": 25.36, "431": 24.4, "432": 23.48, "433": 23.32, "434": 23.84, "435": 21.4, "436": 24.0, "437": 21.72, "438": 22.12, "439": 23.6, "440": 22.6, "441": 22.64, "442": 20.88, "443": 23.76, "444": 20.84, "445": 22.76, "446": 22.56, "447": 28.36, "448": 25.84, "449": 24.0, "450": 26.16, "451": 22.12, "452": 25.4, "453": 25.76, "454": 21.56, "455": 23.08, "456": 23.56, "457": 24.08, "458": 23.92, "459": 22.24, "460": 24.2, "461": 21.2, "462": 23.2, "463": 21.64, "464": 21.68, "465": 23.04, "466": 22.8, "467": 21.88, "468": 22.6, "469": 21.16, "470": 22.68, "471": 21.52, "472": 22.44, "473": 19.84, "474": 22.04, "475": 23.12, "476": 21.6, "477": 23.6, "478": 23.96, "479": 22.6, "480": 23.72, "481": 22.08, "482": 21.28, "483": 19.44, "484": 23.84, "485": 22.36, "486": 22.92, "487": 18.8, "488": 21.24, "489": 23.32, "490": 23.24, "491": 24.6, "492": 21.48, "493": 22.28, "494": 23.72, "495": 22.24, "496": 23.0, "497": 24.36, "498": 26.4, "499": 23.16}, "ave_reward": {"0": -55.38, "1": -60.0, "2": -45.28, "3": -41.0, "4": -41.76, "5": -46.1, "6": -49.96, "7": -47.14, "8": -50.16, "9": -44.02, "10": -41.9, "11": -42.32, "12": -42.48, "13": -42.12, "14": -43.94, "15": -43.42, "16": -43.76, "17": -43.84, "18": -44.56, "19": -45.78, "20": -54.26, "21": -51.08, "22": -47.72, "23": -57.46, "24": -48.16, "25": -46.52, "26": -53.16, "27": -49.04, "28": -51.5, "29": -55.24, "30": -56.3, "31": -58.5, "32": -56.1, "33": -53.1, "34": -54.0, "35": -58.6, "36": -58.6, "37": -58.6, "38": -55.16, "39": -54.66, "40": -54.4, "41": -41.82, "42": -44.3, "43": -49.54, "44": -57.24, "45": -56.08, "46": -51.14, "47": -58.04, "48": -5.5, "49": -33.4, "50": -13.98, "51": -41.58, "52": -26.02, "53": -33.96, "54": -31.16, "55": -38.94, "56": -51.86, "57": -60.0, "58": -52.02, "59": -54.68, "60": -27.5, "61": -28.74, "62": -17.12, "63": -33.96, "64": -44.56, "65": -29.06, "66": -54.34, "67": -26.36, "68": -51.76, "69": -39.12, "70": -44.52, "71": -54.48, "72": -46.6, "73": -26.26, "74": -33.62, "75": -54.86, "76": -57.9, "77": -53.4, "78": -51.14, "79": -16.36, "80": -36.06, "81": -52.12, "82": -44.62, "83": -0.12, "84": -33.48, "85": -32.9, "86": -17.98, "87": -32.84, "88": -33.4, "89": -29.98, "90": -28.4, "91": -30.56, "92": -30.48, "93": -43.66, "94": -54.68, "95": -39.18, "96": -30.58, "97": -33.62, "98": -38.46, "99": -44.04, "100": -36.06, "101": -30.22, "102": -9.84, "103": -12.34, "104": -38.64, "105": -12.36, "106": -20.32, "107": -29.04, "108": -13.0, "109": -5.52, "110": -10.58, "111": -10.08, "112": -18.94, "113": -26.08, "114": -7.12, "115": -4.98, "116": -15.72, "117": -12.4, "118": -4.4, "119": -4.92, "120": -30.14, "121": -2.8, "122": -8.84, "123": -34.5, "124": -14.9, "125": -0.16, "126": -2.36, "127": 0.76, "128": 20.9, "129": -14.88, "130": 4.14, "131": 3.38, "132": -12.38, "133": -1.42, "134": -2.58, "135": -4.28, "136": 11.12, "137": 29.08, "138": 21.04, "139": 8.34, "140": 3.62, "141": -11.66, "142": 4.2, "143": -1.62, "144": -1.5, "145": 4.76, "146": 3.46, "147": 3.5, "148": -1.26, "149": 0.74, "150": -1.14, "151": -2.18, "152": 0.34, "153": -0.34, "154": -22.48, "155": 6.0, "156": 6.96, "157": 11.32, "158": 3.74, "159": 1.5, "160": -12.2, "161": -14.04, "162": 3.56, "163": 11.94, "164": 15.56, "165": 24.02, "166": 32.56, "167": 30.04, "168": 21.5, "169": 7.44, "170": 14.04, "171": 18.92, "172": 13.48, "173": -1.86, "174": 15.86, "175": 8.32, "176": 3.86, "177": 26.12, "178": 26.68, "179": 16.94, "180": 29.3, "181": 27.4, "182": 19.26, "183": 23.68, "184": 35.06, "185": 29.88, "186": 17.28, "187": 20.4, "188": 11.48, "189": 16.28, "190": 29.8, "191": 29.18, "192": 16.28, "193": 24.54, "194": 26.18, "195": 14.46, "196": 14.76, "197": 14.38, "198": 31.66, "199": 35.68, "200": 31.66, "201": 14.56, "202": 18.64, "203": 12.58, "204": 10.44, "205": 16.04, "206": 39.3, "207": 28.58, "208": 13.76, "209": 38.46, "210": 30.36, "211": 39.62, "212": 25.76, "213": 29.12, "214": 15.92, "215": 30.78, "216": 35.98, "217": 31.22, "218": 15.98, "219": 28.18, "220": 20.04, "221": 19.12, "222": 26.16, "223": 20.14, "224": 28.76, "225": 23.82, "226": 33.08, "227": 28.38, "228": 19.06, "229": 22.12, "230": 33.08, "231": 36.26, "232": 18.64, "233": 9.38, "234": 39.4, "235": 25.34, "236": 31.02, "237": 28.84, "238": 17.84, "239": 27.62, "240": 26.92, "241": 25.76, "242": 21.48, "243": 22.7, "244": 31.02, "245": 47.06, "246": 20.24, "247": 42.8, "248": 38.64, "249": 27.24, "250": 51.74, "251": 26.08, "252": 20.08, "253": 20.78, "254": 13.62, "255": 35.78, "256": 13.08, "257": 34.06, "258": 27.64, "259": 23.4, "260": 28.98, "261": 28.64, "262": 33.06, "263": 41.76, "264": 35.9, "265": 27.72, "266": 25.62, "267": 39.98, "268": 18.3, "269": 24.62, "270": 24.08, "271": 13.64, "272": 31.1, "273": 33.72, "274": 11.2, "275": 24.64, "276": 20.6, "277": 16.94, "278": 36.52, "279": 3.3, "280": 13.32, "281": 31.2, "282": 29.12, "283": 25.84, "284": 33.94, "285": 13.72, "286": 26.74, "287": 31.64, "288": 18.08, "289": 17.84, "290": 33.32, "291": 33.14, "292": 15.52, "293": 40.74, "294": 30.1, "295": 17.74, "296": 22.2, "297": 23.32, "298": 25.9, "299": 31.72, "300": 18.2, "301": 33.6, "302": 21.4, "303": 41.26, "304": 28.12, "305": 37.68, "306": 25.36, "307": 51.16, "308": 34.02, "309": 36.68, "310": 35.46, "311": 26.18, "312": 42.26, "313": 36.02, "314": 39.1, "315": 17.94, "316": 38.44, "317": 20.36, "318": 38.64, "319": 25.92, "320": 26.12, "321": 24.0, "322": 31.56, "323": 37.42, "324": 29.62, "325": 38.14, "326": 36.2, "327": 23.3, "328": 12.48, "329": 31.42, "330": 20.84, "331": 23.88, "332": 22.64, "333": 15.66, "334": 5.96, "335": 33.66, "336": 17.64, "337": 17.56, "338": 21.54, "339": 12.26, "340": 30.62, "341": 9.36, "342": 28.28, "343": 23.26, "344": 15.2, "345": 31.12, "346": 17.54, "347": 14.84, "348": 17.96, "349": 36.24, "350": 4.8, "351": 39.06, "352": 15.28, "353": 33.9, "354": 30.92, "355": 27.26, "356": 22.8, "357": 35.48, "358": 30.46, "359": 7.06, "360": 28.4, "361": 33.34, "362": 35.4, "363": 25.38, "364": 13.08, "365": 12.5, "366": 17.56, "367": 13.02, "368": 30.8, "369": 17.6, "370": 30.38, "371": 38.14, "372": 37.78, "373": 38.36, "374": 30.82, "375": 30.6, "376": 33.72, "377": 43.86, "378": 22.78, "379": 31.88, "380": 22.82, "381": 45.46, "382": 17.46, "383": 33.74, "384": 41.58, "385": 44.08, "386": 38.64, "387": 33.82, "388": 30.68, "389": 32.8, "390": 26.3, "391": 4.48, "392": 33.3, "393": 23.34, "394": 30.1, "395": 36.24, "396": 39.38, "397": 31.26, "398": 30.46, "399": 41.98, "400": 34.28, "401": 45.26, "402": 27.18, "403": 25.64, "404": 34.72, "405": 25.58, "406": 28.74, "407": 42.6, "408": 47.78, "409": 27.5, "410": 12.58, "411": 28.22, "412": 18.08, "413": 22.88, "414": 19.7, "415": 32.56, "416": 21.0, "417": 33.3, "418": 34.86, "419": 23.38, "420": 41.14, "421": 25.14, "422": 27.58, "423": 41.38, "424": 23.66, "425": 31.26, "426": 33.24, "427": 27.96, "428": 32.3, "429": 48.66, "430": 20.32, "431": 23.2, "432": 21.26, "433": 26.14, "434": 25.88, "435": 31.9, "436": 23.4, "437": 31.74, "438": 41.14, "439": 16.4, "440": 21.7, "441": 40.88, "442": 44.16, "443": 30.72, "444": 36.98, "445": 38.42, "446": 21.72, "447": 4.42, "448": 10.48, "449": 21.0, "450": 10.32, "451": 31.54, "452": 17.9, "453": 5.72, "454": 34.22, "455": 33.46, "456": 30.82, "457": 28.16, "458": 25.84, "459": 29.08, "460": 23.3, "461": 41.6, "462": 33.4, "463": 36.58, "464": 38.96, "465": 28.68, "466": 38.4, "467": 34.06, "468": 26.5, "469": 34.42, "470": 26.46, "471": 34.24, "472": 28.98, "473": 42.28, "474": 31.58, "475": 19.04, "476": 29.4, "477": 30.8, "478": 18.62, "479": 33.7, "480": 21.14, "481": 33.96, "482": 31.96, "483": 35.28, "484": 25.88, "485": 43.42, "486": 33.54, "487": 40.4, "488": 34.38, "489": 28.54, "490": 33.38, "491": 20.7, "492": 34.26, "493": 29.06, "494": 28.34, "495": 31.48, "496": 31.1, "497": 37.62, "498": 7.8, "499": 28.62}, "success_rate": {"0": 0.0, "1": 0.0, "2": 0.0, "3": 0.0, "4": 0.0, "5": 0.0, "6": 0.0, "7": 0.0, "8": 0.0, "9": 0.0, "10": 0.0, "11": 0.0, "12": 0.0, "13": 0.0, "14": 0.0, "15": 0.0, "16": 0.0, "17": 0.0, "18": 0.0, "19": 0.0, "20": 0.0, "21": 0.0, "22": 0.0, "23": 0.0, "24": 0.0, "25": 0.0, "26": 0.0, "27": 0.0, "28": 0.0, "29": 0.0, "30": 0.0, "31": 0.0, "32": 0.0, "33": 0.0, "34": 0.0, "35": 0.0, "36": 0.0, "37": 0.0, "38": 0.0, "39": 0.0, "40": 0.0, "41": 0.12, "42": 0.1, "43": 0.08, "44": 0.0, "45": 0.0, "46": 0.06, "47": 0.0, "48": 0.42, "49": 0.2, "50": 0.36, "51": 0.14, "52": 0.26, "53": 0.2, "54": 0.22, "55": 0.16, "56": 0.06, "57": 0.0, "58": 0.06, "59": 0.04, "60": 0.26, "61": 0.24, "62": 0.34, "63": 0.2, "64": 0.12, "65": 0.24, "66": 0.04, "67": 0.26, "68": 0.06, "69": 0.16, "70": 0.12, "71": 0.04, "72": 0.1, "73": 0.26, "74": 0.2, "75": 0.04, "76": 0.0, "77": 0.04, "78": 0.06, "79": 0.34, "80": 0.18, "81": 0.04, "82": 0.1, "83": 0.46, "84": 0.2, "85": 0.2, "86": 0.32, "87": 0.2, "88": 0.2, "89": 0.22, "90": 0.22, "91": 0.22, "92": 0.22, "93": 0.12, "94": 0.04, "95": 0.16, "96": 0.22, "97": 0.2, "98": 0.16, "99": 0.12, "100": 0.18, "101": 0.22, "102": 0.38, "103": 0.36, "104": 0.16, "105": 0.36, "106": 0.3, "107": 0.24, "108": 0.36, "109": 0.42, "110": 0.38, "111": 0.38, "112": 0.32, "113": 0.26, "114": 0.4, "115": 0.42, "116": 0.34, "117": 0.38, "118": 0.44, "119": 0.42, "120": 0.24, "121": 0.44, "122": 0.42, "123": 0.2, "124": 0.34, "125": 0.46, "126": 0.44, "127": 0.46, "128": 0.62, "129": 0.34, "130": 0.48, "131": 0.48, "132": 0.36, "133": 0.44, "134": 0.44, "135": 0.42, "136": 0.54, "137": 0.68, "138": 0.62, "139": 0.52, "140": 0.48, "141": 0.36, "142": 0.48, "143": 0.44, "144": 0.44, "145": 0.5, "146": 0.48, "147": 0.48, "148": 0.44, "149": 0.46, "150": 0.44, "151": 0.44, "152": 0.46, "153": 0.44, "154": 0.28, "155": 0.5, "156": 0.5, "157": 0.54, "158": 0.48, "159": 0.46, "160": 0.36, "161": 0.34, "162": 0.48, "163": 0.56, "164": 0.58, "165": 0.64, "166": 0.72, "167": 0.7, "168": 0.62, "169": 0.52, "170": 0.56, "171": 0.6, "172": 0.56, "173": 0.44, "174": 0.58, "175": 0.52, "176": 0.48, "177": 0.66, "178": 0.66, "179": 0.58, "180": 0.68, "181": 0.66, "182": 0.6, "183": 0.62, "184": 0.72, "185": 0.68, "186": 0.58, "187": 0.6, "188": 0.54, "189": 0.58, "190": 0.68, "191": 0.66, "192": 0.56, "193": 0.64, "194": 0.64, "195": 0.56, "196": 0.56, "197": 0.56, "198": 0.68, "199": 0.72, "200": 0.68, "201": 0.54, "202": 0.58, "203": 0.54, "204": 0.52, "205": 0.56, "206": 0.74, "207": 0.66, "208": 0.54, "209": 0.74, "210": 0.68, "211": 0.76, "212": 0.64, "213": 0.66, "214": 0.56, "215": 0.68, "216": 0.72, "217": 0.68, "218": 0.56, "219": 0.66, "220": 0.6, "221": 0.58, "222": 0.64, "223": 0.6, "224": 0.66, "225": 0.62, "226": 0.7, "227": 0.66, "228": 0.58, "229": 0.6, "230": 0.7, "231": 0.72, "232": 0.58, "233": 0.5, "234": 0.74, "235": 0.64, "236": 0.68, "237": 0.66, "238": 0.58, "239": 0.66, "240": 0.64, "241": 0.64, "242": 0.6, "243": 0.62, "244": 0.68, "245": 0.8, "246": 0.6, "247": 0.78, "248": 0.74, "249": 0.66, "250": 0.84, "251": 0.64, "252": 0.6, "253": 0.6, "254": 0.54, "255": 0.72, "256": 0.54, "257": 0.7, "258": 0.66, "259": 0.62, "260": 0.66, "261": 0.66, "262": 0.7, "263": 0.76, "264": 0.72, "265": 0.66, "266": 0.64, "267": 0.74, "268": 0.58, "269": 0.62, "270": 0.62, "271": 0.54, "272": 0.68, "273": 0.7, "274": 0.52, "275": 0.62, "276": 0.6, "277": 0.56, "278": 0.72, "279": 0.46, "280": 0.54, "281": 0.68, "282": 0.66, "283": 0.64, "284": 0.7, "285": 0.54, "286": 0.64, "287": 0.68, "288": 0.58, "289": 0.58, "290": 0.7, "291": 0.7, "292": 0.56, "293": 0.76, "294": 0.68, "295": 0.58, "296": 0.62, "297": 0.62, "298": 0.64, "299": 0.68, "300": 0.58, "301": 0.7, "302": 0.6, "303": 0.76, "304": 0.66, "305": 0.74, "306": 0.64, "307": 0.84, "308": 0.7, "309": 0.72, "310": 0.72, "311": 0.64, "312": 0.76, "313": 0.72, "314": 0.74, "315": 0.58, "316": 0.74, "317": 0.6, "318": 0.74, "319": 0.64, "320": 0.64, "321": 0.62, "322": 0.68, "323": 0.72, "324": 0.68, "325": 0.74, "326": 0.72, "327": 0.62, "328": 0.54, "329": 0.68, "330": 0.6, "331": 0.62, "332": 0.62, "333": 0.56, "334": 0.48, "335": 0.7, "336": 0.58, "337": 0.58, "338": 0.6, "339": 0.54, "340": 0.68, "341": 0.52, "342": 0.66, "343": 0.62, "344": 0.56, "345": 0.68, "346": 0.58, "347": 0.56, "348": 0.58, "349": 0.72, "350": 0.48, "351": 0.74, "352": 0.56, "353": 0.7, "354": 0.68, "355": 0.66, "356": 0.62, "357": 0.72, "358": 0.68, "359": 0.5, "360": 0.66, "361": 0.7, "362": 0.72, "363": 0.64, "364": 0.54, "365": 0.54, "366": 0.58, "367": 0.54, "368": 0.68, "369": 0.58, "370": 0.68, "371": 0.74, "372": 0.74, "373": 0.74, "374": 0.68, "375": 0.68, "376": 0.7, "377": 0.78, "378": 0.62, "379": 0.7, "380": 0.62, "381": 0.8, "382": 0.58, "383": 0.7, "384": 0.76, "385": 0.78, "386": 0.74, "387": 0.7, "388": 0.68, "389": 0.7, "390": 0.64, "391": 0.46, "392": 0.7, "393": 0.62, "394": 0.68, "395": 0.72, "396": 0.74, "397": 0.68, "398": 0.68, "399": 0.76, "400": 0.72, "401": 0.8, "402": 0.66, "403": 0.64, "404": 0.72, "405": 0.64, "406": 0.66, "407": 0.78, "408": 0.82, "409": 0.66, "410": 0.54, "411": 0.66, "412": 0.58, "413": 0.62, "414": 0.6, "415": 0.7, "416": 0.6, "417": 0.7, "418": 0.72, "419": 0.62, "420": 0.76, "421": 0.64, "422": 0.66, "423": 0.76, "424": 0.62, "425": 0.68, "426": 0.7, "427": 0.66, "428": 0.68, "429": 0.82, "430": 0.6, "431": 0.62, "432": 0.6, "433": 0.64, "434": 0.64, "435": 0.68, "436": 0.62, "437": 0.68, "438": 0.76, "439": 0.56, "440": 0.6, "441": 0.76, "442": 0.78, "443": 0.68, "444": 0.72, "445": 0.74, "446": 0.6, "447": 0.48, "448": 0.52, "449": 0.6, "450": 0.52, "451": 0.68, "452": 0.58, "453": 0.48, "454": 0.7, "455": 0.7, "456": 0.68, "457": 0.66, "458": 0.64, "459": 0.66, "460": 0.62, "461": 0.76, "462": 0.7, "463": 0.72, "464": 0.74, "465": 0.66, "466": 0.74, "467": 0.7, "468": 0.64, "469": 0.7, "470": 0.64, "471": 0.7, "472": 0.66, "473": 0.76, "474": 0.68, "475": 0.58, "476": 0.66, "477": 0.68, "478": 0.58, "479": 0.7, "480": 0.6, "481": 0.7, "482": 0.68, "483": 0.7, "484": 0.64, "485": 0.78, "486": 0.7, "487": 0.74, "488": 0.7, "489": 0.66, "490": 0.7, "491": 0.6, "492": 0.7, "493": 0.66, "494": 0.66, "495": 0.68, "496": 0.68, "497": 0.74, "498": 0.5, "499": 0.66}}

================================================
FILE: src/deep_dialog/checkpoints/temp_run2/agt_9_performance_records.json
================================================
{"ave_turns": {"0": 42.0, "1": 18.28, "2": 9.08, "3": 12.24, "4": 15.64, "5": 8.96, "6": 15.28, "7": 8.4, "8": 3.04, "9": 3.36, "10": 4.36, "11": 4.68, "12": 4.4, "13": 3.96, "14": 5.32, "15": 6.0, "16": 7.08, "17": 7.0, "18": 6.64, "19": 7.2, "20": 15.36, "21": 13.56, "22": 18.4, "23": 21.28, "24": 17.16, "25": 24.2, "26": 24.32, "27": 32.88, "28": 29.08, "29": 40.08, "30": 42.0, "31": 42.0, "32": 42.0, "33": 42.0, "34": 42.0, "35": 39.44, "36": 23.92, "37": 26.16, "38": 27.92, "39": 42.0, "40": 42.0, "41": 42.0, "42": 38.8, "43": 36.88, "44": 37.52, "45": 36.88, "46": 38.8, "47": 39.44, "48": 39.44, "49": 40.72, "50": 40.08, "51": 39.44, "52": 38.8, "53": 40.08, "54": 36.24, "55": 38.8, "56": 42.0, "57": 41.68, "58": 32.96, "59": 36.76, "60": 38.72, "61": 39.8, "62": 40.4, "63": 39.72, "64": 34.84, "65": 34.0, "66": 35.56, "67": 34.04, "68": 35.64, "69": 34.8, "70": 31.36, "71": 27.76, "72": 29.72, "73": 30.48, "74": 28.24, "75": 29.48, "76": 30.2, "77": 31.76, "78": 27.24, "79": 30.72, "80": 29.16, "81": 31.72, "82": 31.08, "83": 32.84, "84": 32.96, "85": 31.6, "86": 31.8, "87": 29.8, "88": 33.28, "89": 30.32, "90": 34.24, "91": 31.52, "92": 37.36, "93": 35.04, "94": 30.2, "95": 29.76, "96": 32.64, "97": 28.8, "98": 30.68, "99": 26.48, "100": 29.4, "101": 30.28, "102": 27.04, "103": 28.28, "104": 28.68, "105": 28.64, "106": 25.4, "107": 27.04, "108": 26.48, "109": 29.68, "110": 26.84, "111": 31.28, "112": 27.04, "113": 28.36, "114": 26.52, "115": 25.08, "116": 29.56, "117": 27.92, "118": 26.92, "119": 27.04, "120": 29.12, "121": 26.88, "122": 29.0, "123": 29.36, "124": 27.32, "125": 28.2, "126": 26.24, "127": 30.52, "128": 27.36, "129": 26.72, "130": 27.08, "131": 24.36, "132": 30.24, "133": 25.52, "134": 27.04, "135": 24.76, "136": 30.08, "137": 26.6, "138": 27.6, "139": 23.32, "140": 27.92, "141": 29.16, "142": 28.36, "143": 28.12, "144": 28.36, "145": 27.32, "146": 25.24, "147": 27.0, "148": 24.8, "149": 23.44, "150": 27.24, "151": 28.16, "152": 25.44, "153": 28.36, "154": 22.96, "155": 24.28, "156": 24.72, "157": 25.36, "158": 25.96, "159": 21.6, "160": 25.28, "161": 23.04, "162": 23.12, "163": 25.0, "164": 20.04, "165": 19.96, "166": 22.24, "167": 21.08, "168": 21.6, "169": 19.48, "170": 22.32, "171": 22.28, "172": 22.72, "173": 22.32, "174": 20.24, "175": 23.8, "176": 22.04, "177": 17.2, "178": 17.64, "179": 21.4, "180": 19.84, "181": 18.32, "182": 18.76, "183": 22.48, "184": 22.96, "185": 19.92, "186": 18.04, "187": 17.96, "188": 19.36, "189": 19.28, "190": 18.84, "191": 17.4, "192": 18.56, "193": 15.16, "194": 14.84, "195": 19.44, "196": 15.52, "197": 16.36, "198": 14.92, "199": 15.44, "200": 18.2, "201": 16.64, "202": 16.0, "203": 17.72, "204": 15.96, "205": 17.24, "206": 15.64, "207": 17.44, "208": 16.88, "209": 15.92, "210": 15.64, "211": 16.52, "212": 22.6, "213": 18.2, "214": 15.44, "215": 16.24, "216": 14.64, "217": 16.32, "218": 17.0, "219": 15.24, "220": 16.16, "221": 16.68, "222": 16.52, "223": 15.56, "224": 17.92, "225": 15.28, "226": 16.72, "227": 17.36, "228": 15.68, "229": 16.48, "230": 16.04, "231": 15.24, "232": 16.16, "233": 16.72, "234": 15.6, "235": 14.8, "236": 15.6, "237": 15.28, "238": 14.84, "239": 19.76, "240": 16.52, "241": 14.08, "242": 19.08, "243": 16.28, "244": 18.52, "245": 15.52, "246": 14.76, "247": 13.72, "248": 15.32, "249": 18.16, "250": 14.64, "251": 15.4, "252": 15.4, "253": 14.24, "254": 13.84, "255": 14.04, "256": 14.56, "257": 14.56, "258": 19.36, "259": 17.56, "260": 14.36, "261": 15.0, "262": 14.72}, "ave_reward": {"0": -60.0, "1": -48.14, "2": -43.54, "3": -45.12, "4": -46.82, "5": -43.48, "6": -46.64, "7": -43.2, "8": -40.52, "9": -40.68, "10": -41.18, "11": -41.34, "12": -41.2, "13": -40.98, "14": -41.66, "15": -42.0, "16": -42.54, "17": -42.5, "18": -42.32, "19": -42.6, "20": -46.68, "21": -45.78, "22": -48.2, "23": -49.64, "24": -47.58, "25": -51.1, "26": -51.16, "27": -55.44, "28": -53.54, "29": -59.04, "30": -60.0, "31": -60.0, "32": -60.0, "33": -60.0, "34": -60.0, "35": -58.72, "36": -50.96, "37": -52.08, "38": -52.96, "39": -60.0, "40": -60.0, "41": -60.0, "42": -58.4, "43": -57.44, "44": -57.76, "45": -57.44, "46": -58.4, "47": -58.72, "48": -58.72, "49": -59.36, "50": -59.04, "51": -58.72, "52": -58.4, "53": -59.04, "54": -57.12, "55": -58.4, "56": -60.0, "57": -59.84, "58": -19.48, "59": -40.58, "60": -53.56, "61": -51.7, "62": -47.2, "63": -49.26, "64": -10.82, "65": -3.2, "66": -13.58, "67": 1.58, "68": -18.42, "69": -18.0, "70": -1.88, "71": 9.52, "72": -3.46, "73": -6.24, "74": 18.88, "75": -12.94, "76": -1.3, "77": -9.28, "78": 24.18, "79": -3.96, "80": 13.62, "81": 17.14, "82": 17.46, "83": 4.58, "84": -5.08, "85": 2.8, "86": 5.1, "87": 22.9, "88": -7.64, "89": 8.24, "90": -3.32, "91": 7.64, "92": 7.12, "93": 5.88, "94": 22.7, "95": 27.72, "96": -7.32, "97": 11.4, "98": 5.66, "99": 24.56, "100": 1.5, "101": 3.46, "102": 19.48, "103": 14.06, "104": 6.66, "105": 9.08, "106": 22.7, "107": 19.48, "108": 22.16, "109": 3.76, "110": 17.18, "111": -9.04, "112": 19.48, "113": 11.62, "114": 26.94, "115": 27.66, "116": 3.82, "117": 16.64, "118": 21.94, "119": 21.88, "120": 6.44, "121": 14.76, "122": 4.1, "123": 3.92, "124": 21.74, "125": 11.7, "126": 22.28, "127": -1.46, "128": 14.52, "129": 19.64, "130": 12.26, "131": 30.42, "132": -1.32, "133": 20.24, "134": 14.68, "135": 23.02, "136": -3.64, "137": 14.9, "138": 14.4, "139": 35.74, "140": 14.24, "141": 4.02, "142": 6.82, "143": 6.94, "144": 4.42, "145": 19.34, "146": 37.18, "147": 21.9, "148": 27.8, "149": 33.28, "150": 16.98, "151": 14.12, "152": 25.08, "153": 18.82, "154": 33.52, "155": 40.06, "156": 11.04, "157": 15.52, "158": 20.02, "159": 27.0, "160": 13.16, "161": 26.28, "162": 35.84, "163": 22.9, "164": 27.78, "165": 30.22, "166": 29.08, "167": 22.46, "168": 36.6, "169": 30.46, "170": 17.04, "171": 24.26, "172": 31.24, "173": 26.64, "174": 34.88, "175": 21.1, "176": 33.98, "177": 55.6, "178": 45.78, "179": 31.9, "180": 37.48, "181": 43.04, "182": 38.02, "183": 28.96, "184": 26.32, "185": 35.04, "186": 45.58, "187": 38.42, "188": 42.52, "189": 37.76, "190": 40.38, "191": 48.3, "192": 47.72, "193": 56.62, "194": 61.58, "195": 42.48, "196": 51.64, "197": 48.82, "198": 49.54, "199": 58.88, "200": 43.1, "201": 43.88, "202": 56.2, "203": 38.54, "204": 56.22, "205": 53.18, "206": 53.98, "207": 48.28, "208": 46.16, "209": 51.44, "210": 49.18, "211": 58.34, "212": 40.9, "213": 40.7, "214": 46.88, "215": 46.48, "216": 61.68, "217": 41.64, "218": 46.1, "219": 58.98, "220": 53.72, "221": 63.06, "222": 51.14, "223": 51.62, "224": 48.04, "225": 54.16, "226": 43.84, "227": 53.12, "228": 56.36, "229": 48.76, "230": 56.18, "231": 56.58, "232": 60.92, "233": 63.04, "234": 56.4, "235": 56.8, "236": 56.4, "237": 58.96, "238": 37.58, "239": 54.32, "240": 53.54, "241": 54.76, "242": 54.66, "243": 46.46, "244": 54.94, "245": 54.04, "246": 49.62, "247": 59.74, "248": 58.94, "249": 47.92, "250": 56.88, "251": 54.1, "252": 61.3, "253": 61.88, "254": 52.48, "255": 57.18, "256": 52.12, "257": 56.92, "258": 47.32, "259": 53.02, "260": 61.82, "261": 63.9, "262": 61.64}, "success_rate": {"0": 0.0, "1": 0.0, "2": 0.0, "3": 0.0, "4": 0.0, "5": 0.0, "6": 0.0, "7": 0.0, "8": 0.0, "9": 0.0, "10": 0.0, "11": 0.0, "12": 0.0, "13": 0.0, "14": 0.0, "15": 0.0, "16": 0.0, "17": 0.0, "18": 0.0, "19": 0.0, "20": 0.0, "21": 0.0, "22": 0.0, "23": 0.0, "24": 0.0, "25": 0.0, "26": 0.0, "27": 0.0, "28": 0.0, "29": 0.0, "30": 0.0, "31": 0.0, "32": 0.0, "33": 0.0, "34": 0.0, "35": 0.0, "36": 0.0, "37": 0.0, "38": 0.0, "39": 0.0, "40": 0.0, "41": 0.0, "42": 0.0, "43": 0.0, "44": 0.0, "45": 0.0, "46": 0.0, "47": 0.0, "48": 0.0, "49": 0.0, "50": 0.0, "51": 0.0, "52": 0.0, "53": 0.0, "54": 0.0, "55": 0.0, "56": 0.0, "57": 0.0, "58": 0.3, "59": 0.14, "60": 0.04, "61": 0.06, "62": 0.1, "63": 0.08, "64": 0.38, "65": 0.44, "66": 0.36, "67": 0.48, "68": 0.32, "69": 0.32, "70": 0.44, "71": 0.52, "72": 0.42, "73": 0.4, "74": 0.6, "75": 0.34, "76": 0.44, "77": 0.38, "78": 0.64, "79": 0.42, "80": 0.56, "81": 0.6, "82": 0.6, "83": 0.5, "84": 0.42, "85": 0.48, "86": 0.5, "87": 0.64, "88": 0.4, "89": 0.52, "90": 0.44, "91": 0.52, "92": 0.54, "93": 0.52, "94": 0.64, "95": 0.68, "96": 0.4, "97": 0.54, "98": 0.5, "99": 0.64, "100": 0.46, "101": 0.48, "102": 0.6, "103": 0.56, "104": 0.5, "105": 0.52, "106": 0.62, "107": 0.6, "108": 0.62, "109": 0.48, "110": 0.58, "111": 0.38, "112": 0.6, "113": 0.54, "114": 0.66, "115": 0.66, "116": 0.48, "117": 0.58, "118": 0.62, "119": 0.62, "120": 0.5, "121": 0.56, "122": 0.48, "123": 0.48, "124": 0.62, "125": 0.54, "126": 0.62, "127": 0.44, "128": 0.56, "129": 0.6, "130": 0.54, "131": 0.68, "132": 0.44, "133": 0.6, "134": 0.56, "135": 0.62, "136": 0.42, "137": 0.56, "138": 0.56, "139": 0.72, "140": 0.56, "141": 0.48, "142": 0.5, "143": 0.5, "144": 0.48, "145": 0.6, "146": 0.74, "147": 0.62, "148": 0.66, "149": 0.7, "150": 0.58, "151": 0.56, "152": 0.64, "153": 0.6, "154": 0.7, "155": 0.76, "156": 0.52, "157": 0.56, "158": 0.6, "159": 0.64, "160": 0.54, "161": 0.64, "162": 0.72, "163": 0.62, "164": 0.64, "165": 0.66, "166": 0.66, "167": 0.6, "168": 0.72, "169": 0.66, "170": 0.56, "171": 0.62, "172": 0.68, "173": 0.64, "174": 0.7, "175": 0.6, "176": 0.7, "177": 0.86, "178": 0.78, "179": 0.68, "180": 0.72, "181": 0.76, "182": 0.72, "183": 0.66, "184": 0.64, "185": 0.7, "186": 0.78, "187": 0.72, "188": 0.76, "189": 0.72, "190": 0.74, "191": 0.8, "192": 0.8, "193": 0.86, "194": 0.9, "195": 0.76, "196": 0.82, "197": 0.8, "198": 0.8, "199": 0.88, "200": 0.76, "201": 0.76, "202": 0.86, "203": 0.72, "204": 0.86, "205": 0.84, "206": 0.84, "207": 0.8, "208": 0.78, "209": 0.82, "210": 0.8, "211": 0.88, "212": 0.76, "213": 0.74, "214": 0.78, "215": 0.78, "216": 0.9, "217": 0.74, "218": 0.78, "219": 0.88, "220": 0.84, "221": 0.92, "222": 0.82, "223": 0.82, "224": 0.8, "225": 0.84, "226": 0.76, "227": 0.84, "228": 0.86, "229": 0.8, "230": 0.86, "231": 0.86, "232": 0.9, "233": 0.92, "234": 0.86, "235": 0.86, "236": 0.86, "237": 0.88, "238": 0.7, "239": 0.86, "240": 0.84, "241": 0.84, "242": 0.86, "243": 0.78, "244": 0.86, "245": 0.84, "246": 0.8, "247": 0.88, "248": 0.88, "249": 0.8, "250": 0.86, "251": 0.84, "252": 0.9, "253": 0.9, "254": 0.82, "255": 0.86, "256": 0.82, "257": 0.86, "258": 0.8, "259": 0.84, "260": 0.9, "261": 0.92, "262": 0.9}}

================================================
FILE: src/deep_dialog/data/count_uniq_slots.py
================================================
import json, cPickle
goals = cPickle.load(open('user_goals_first_turn_template.part.movie.v1.p'))

slots = []
for i in goals:
	for j in i['inform_slots'].keys():
		slots.append(j)
	for j in i['request_slots'].keys():
		slots.append(j)

print slots

================================================
FILE: src/deep_dialog/data/dia_act_nl_pairs.v6.json
================================================
{
  "dia_acts": {
    "inform": [
      {
        "request_slots": [], 
        "nl": {
          "agt": "$moviename$ is available.", 
          "usr": "I want to watch $moviename$."
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "yes, please", 
          "usr": "yes"
        }, 
        "inform_slots": [
          "ticket"
        ]
      },
      {
        "request_slots": [], 
        "nl": {
          "agt": "$starttime$ is available.", 
          "usr": "I want to watch at $starttime$."
        }, 
        "inform_slots": [
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$city$ is available.", 
          "usr": "I want to watch at $city$."
        }, 
        "inform_slots": [
          "city"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$state$ is available.", 
          "usr": "I want to watch at $state$."
        }, 
        "inform_slots": [
          "state"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$date$ is available.", 
          "usr": "I want to set it up $date$"
        }, 
        "inform_slots": [
          "date"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$numberofpeople$ tickets", 
          "usr": "I want $numberofpeople$ tickets please!"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$theater$ is available.", 
          "usr": "I want to watch at $theater$."
        }, 
        "inform_slots": [
          "theater"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$actor$", 
          "usr": "$actor$"
        }, 
        "inform_slots": [
          "actor"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$actress$", 
          "usr": "$actress$"
        }, 
        "inform_slots": [
          "actress"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$numberofpeople$ tickets at $city$ $state$.", 
          "usr": "I need $numberofpeople$ tickets at $city$ $state$."
        }, 
        "inform_slots": [
          "city", 
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$numberofpeople$ tickets at $starttime$.", 
          "usr": "I need $numberofpeople$ tickets at $starttime$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$starttime$ on $date$ is available.", 
          "usr": "I want to watch at $starttime$ on $date$."
        }, 
        "inform_slots": [
          "date", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$moviename$ at $starttime$ is available.", 
          "usr": "I want to watch $moviename$ at $starttime$."
        }, 
        "inform_slots": [
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$critic_rating$", 
          "usr": "$critic_rating$"
        }, 
        "inform_slots": [
          "critic_rating"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$distanceconstraints$", 
          "usr": "$distanceconstraints$"
        }, 
        "inform_slots": [
          "distanceconstraints"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$description$", 
          "usr": "$description$"
        }, 
        "inform_slots": [
          "description"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$genre$ is available", 
          "usr": "I want to watch a $genre$ movie."
        }, 
        "inform_slots": [
          "genre"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$mpaa_rating$", 
          "usr": "$mpaa_rating$"
        }, 
        "inform_slots": [
          "mpaa_rating"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$video_format$", 
          "usr": "$video_format$"
        }, 
        "inform_slots": [
          "video_format"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$price$", 
          "usr": "$price$"
        }, 
        "inform_slots": [
          "price"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$zip$", 
          "usr": "$zip$"
        }, 
        "inform_slots": [
          "zip"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$numberofkids$", 
          "usr": "$numberofkids$"
        }, 
        "inform_slots": [
          "numberofkids"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$movie_series$", 
          "usr": "$movie_series$"
        }, 
        "inform_slots": [
          "movie_series"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$theater_chain$", 
          "usr": "$theater_chain$"
        }, 
        "inform_slots": [
          "theater_chain"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$starttime$ at $city$ is available.", 
          "usr": "I want to watch at $starttime$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "taskcomplete"
        ], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ $distanceconstraints$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ $distanceconstraints$."
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$video_format$ $distanceconstraints$", 
          "usr": "$video_format$ $distanceconstraints$"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "video_format"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$numberofpeople$ tickets at $theater$.", 
          "usr": "$numberofpeople$ tickets at $theater$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$moviename$ is playing at $starttime$ in $city$.", 
          "usr": "$moviename$ is playing at $starttime$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$moviename$ is playing at $theater$.", 
          "usr": "I want to watch $moviename$ at $theater$."
        }, 
        "inform_slots": [
          "theater", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$numberofpeople$ tickets at $starttime$ $date$.", 
          "usr": "$numberofpeople$ tickets at $starttime$ $date$."
        }, 
        "inform_slots": [
          "date", 
          "numberofpeople", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "taskcomplete"
        ], 
        "nl": {
          "agt": "Okay, your tickets is booked.", 
          "usr": "Okay, your tickets is booked."
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$other$", 
          "usr": "$other$"
        }, 
        "inform_slots": [
          "other"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ on $date$.", 
          "usr": "Okay, I have booked the tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ on $date$."
        }, 
        "inform_slots": [
          "theater_chain", 
          "theater", 
          "video_format", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ on $date$."
        }, 
        "inform_slots": [
          "theater_chain", 
          "numberofpeople", 
          "theater", 
          "video_format", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ at $theater$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ at $theater$ on $date$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename", 
          "closing"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ at $theater$ in $city$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ at $theater$ in $city$ on $date$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "theater_chain", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename", 
          "closing"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I was able to book $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $state$.", 
          "usr": "Okay, I was able to book $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $state$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "distanceconstraints", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I was able to book $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$.", 
          "usr": "Okay, I was able to book $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "distanceconstraints", 
          "video_format", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I was able to book $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $state$.", 
          "usr": "Okay, I was able to book $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $state$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater", 
          "distanceconstraints", 
          "video_format", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I was able to book $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$.", 
          "usr": "Okay, I was able to book $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "distanceconstraints", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ starting at $starttime$ at $theater$ in $city$ on $date$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ starting at $starttime$ at $theater$ in $city$ on $date$."
        }, 
        "inform_slots": [
          "city", 
          "theater", 
          "theater_chain", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ in $city$ on $date$.", 
          "usr": "Okay, I have booked the tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ in $city$ on $date$."
        }, 
        "inform_slots": [
          "city", 
          "theater", 
          "video_format", 
          "theater_chain", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename", 
          "closing"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $state$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $state$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $zip$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $zip$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "zip", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ $distanceconstraints$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ $distanceconstraints$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater", 
          "distanceconstraints", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in zipcode $zip$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in zipcode $zip$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater", 
          "zip", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$.", 
          "usr": "Okay, I have booked $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "video_format", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $state$.", 
          "usr": "Okay, I have booked $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$ $state$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "video_format", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ $distanceconstraints$ in $city$ $state$.", 
          "usr": "Okay, I have booked $numberofpeople$ $video_format$ tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ $distanceconstraints$ in $city$ $state$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "distanceconstraints", 
          "video_format", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $video_format$ $moviename$ starting at $starttime$ at $theater$ on $date$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater", 
          "video_format", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ for you.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ for you."
        }, 
        "inform_slots": [
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $starttime$ $date$ for you.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $starttime$ $date$ for you."
        }, 
        "inform_slots": [
          "date", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ $distanceconstraints$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ $distanceconstraints$."
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $starttime$ at $theater$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $starttime$ at $theater$."
        }, 
        "inform_slots": [
          "taskcomplete", 
          "numberofpeople", 
          "theater", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ at $starttime$ $date$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ at $starttime$ $date$."
        }, 
        "inform_slots": [
          "date", 
          "taskcomplete", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets at $starttime$ $date$ at $theater$ in $city$.", 
          "usr": "Okay, I have booked the tickets at $starttime$ $date$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "$city$ at $state$ is available", 
          "usr": "$city$ at $state$"
        }, 
        "inform_slots": [
          "city", 
          "state"
        ]
      }, 
      {
        "request_slots": [
          "taskcomplete"
        ], 
        "nl": {
          "agt": "Okay, I have book the tickets for $moviename$ at $theater$ for you.", 
          "usr": "Okay, I have book the tickets for $moviename$ at $theater$ for you."
        }, 
        "inform_slots": [
          "theater", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $theater$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $theater$."
        }, 
        "inform_slots": [
          "theater", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $starttime$ at $theater$ in $city$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $starttime$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ $distanceconstraints$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ $distanceconstraints$."
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ on $date$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ on $date$."
        }, 
        "inform_slots": [
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ $distanceconstraints$ in $city$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$ $distanceconstraints$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "distanceconstraints", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ on $date$."
        }, 
        "inform_slots": [
          "date", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename", 
          "other"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $city$ $state$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $city$ $state$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "state", 
          "other", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$."
        }, 
        "inform_slots": [
          "taskcomplete", 
          "numberofpeople", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ $distanceconstraints$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ $distanceconstraints$."
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename", 
          "other"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ $date$."
        }, 
        "inform_slots": [
          "date", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ at $theater$ in $city$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "taskcomplete", 
          "moviename", 
          "theater"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ at $starttime$ on $date$ in $city$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ at $starttime$ on $date$ in $city$."
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "taskcomplete", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$.", 
          "usr": "Okay, I have booked the tickets for $moviename$ starting at $starttime$ on $date$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets for $moviename$ for you.", 
          "usr": "Okay, I have booked the tickets for $moviename$ for you."
        }, 
        "inform_slots": [
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ on $date$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "other", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $theater$ $theater_chain$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $theater$ $theater_chain$ on $date$."
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater", 
          "date", 
          "theater_chain", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ at $theater$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ starting at $starttime$ at $theater$ on $date$."
        }, 
        "inform_slots": [
          "date", 
          "theater", 
          "taskcomplete", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Yes, I have booked $numberofpeople$ tickets for you.", 
          "usr": "Yes, I have booked $numberofpeople$ tickets for you."
        }, 
        "inform_slots": [
          "taskcomplete", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $theater$ on $date$.", 
          "usr": "Okay, I have booked $numberofpeople$ tickets for $moviename$ at $theater$ on $date$."
        }, 
        "inform_slots": [
          "date", 
          "theater", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I have booked the tickets at $theater$ in $city$.", 
          "usr": "Okay, I have booked the tickets at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "taskcomplete", 
          "theater"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Thank you, I was able to purchase $numberofpeople$ tickets for you to see $moviename$ with $video_format$ $date$ at $city$ $distanceconstraints$ at $starttime$.", 
          "usr": "Thank you, I was able to purchase $numberofpeople$ tickets for you to see $moviename$ with $video_format$ $date$ at $city$ $distanceconstraints$ at $starttime$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "distanceconstraints", 
          "video_format", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ at $starttime$ $date$.", 
          "usr": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ at $starttime$ $date$."
        }, 
        "inform_slots": [ 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename",
          "ticket"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ at $starttime$ $date$.", 
          "usr": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ at $starttime$ $date$."
        }, 
        "inform_slots": [ 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename",
          "ticket",
          "closing"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ in $city$ at $starttime$ $date$.", 
          "usr": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ in $city$ at $starttime$ $date$."
        }, 
        "inform_slots": [ 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename",
          "ticket",
          "closing",
          "city"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ at $starttime$ $date$.", 
          "usr": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ at $starttime$ $date$."
        }, 
        "inform_slots": [ 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      },
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ in $city$ at $starttime$ $date$.", 
          "usr": "Okay - I was able to book $numberofpeople$ tickets for you to see $moviename$ at $theater$ in $city$ at $starttime$ $date$."
        }, 
        "inform_slots": [ 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename",
          "ticket",
          "city"
        ]
      },
      {
        "request_slots": [], 
        "nl": {
          "agt": "Thank you, I was able to purchase $numberofpeople$ tickets for you to see $moviename$ at $theater$, $theater_chain$ at $city$ at $starttime$ on $date$.", 
          "usr": "Thank you, I was able to purchase $numberofpeople$ tickets for you to see $moviename$ at $theater$, $theater_chain$ at $city$ at $starttime$ on $date$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "theater_chain", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay your purchase of $numberofpeople$ tickets for $moviename$ at $city$ is confirmed.", 
          "usr": "Okay your purchase of $numberofpeople$ tickets for $moviename$ at $city$ is confirmed."
        }, 
        "inform_slots": [
          "city", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Great - I was able to purchase $numberofpeople$ tickets for you to see $moviename$ $date$ at $theater$ theater in $city$ at $starttime$.", 
          "usr": "Great - I was able to purchase $numberofpeople$ tickets for you to see $moviename$ $date$ at $theater$ theater in $city$ at $starttime$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, your purchase of $numberofpeople$ for $moviename$ at $city$ $distanceconstraints$ is confirmed!", 
          "usr": "Okay, your purchase of $numberofpeople$ for $moviename$ at $city$ $distanceconstraints$ is confirmed!"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "city", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, I purchased $numberofpeople$ tickets for $moviename$ at $city$ on $date$.", 
          "usr": "Okay, I purchased $numberofpeople$ tickets for $moviename$ at $city$ on $date$."
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "I have booked you $numberofpeople$ tickets for moviename at $city$, $zip$.", 
          "usr": "I have booked you $numberofpeople$ tickets for moviename at $city$, $zip$."
        }, 
        "inform_slots": [
          "city", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename", 
          "zip"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Great - I was able to purchase $numberofpeople$ tickets for you to watch $moviename$ at $theater$ in $city$ at $starttime$, $date$.", 
          "usr": "Great - I was able to purchase $numberofpeople$ tickets for you to watch $moviename$ at $theater$ in $city$ at $starttime$, $date$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay your purchase $numberofpeople$ tickets for $moviename$ at $city$, $state$ is confirmed!", 
          "usr": "Okay your purchase $numberofpeople$ tickets for $moviename$ at $city$, $state$ is confirmed!"
        }, 
        "inform_slots": [
          "city", 
          "state", 
          "numberofpeople", 
          "moviename", 
          "taskcomplete"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay your purchase of $numberofpeople$ tickets for $moviename$ at $starttime$ in $city$ is confimed!", 
          "usr": "Okay your purchase of $numberofpeople$ tickets for $moviename$ at $starttime$ in $city$ is confimed!"
        }, 
        "inform_slots": [
          "city", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Great, I was able to purchase $numberofpeople$ tickets for you to watch $moviename$ $date$ at $theater$ in $city$.", 
          "usr": "Great, I was able to purchase $numberofpeople$ tickets for you to watch $moviename$ $date$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, your purchase of $numberofpeople$ tickets for $moviename$ at $starttime$ in $city$, $state$ is confirmed!", 
          "usr": "Okay, your purchase of $numberofpeople$ tickets for $moviename$ at $starttime$ in $city$, $state$ is confirmed!"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "state", 
          "starttime", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Excellent - I have booked $numberofpeople$ tickets for you to watch $moviename$ at $starttime$ $date$ at $theater$ in $city$ $state$, $distanceconstraints$.", 
          "usr": "Excellent - I have booked $numberofpeople$ tickets for you to watch $moviename$ at $starttime$ $date$ at $theater$ in $city$ $state$, $distanceconstraints$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "distanceconstraints", 
          "video_format", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "I have successfully purchased $numberofpeople$ tickets to see $moviename$ $date$ at $city$ $zip$.", 
          "usr": "I have successfully purchased $numberofpeople$ tickets to see $moviename$ $date$ at $city$ $zip$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "zip", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay, your purchase of $numberofpeople$ tickets for $moviename$ at $theater$ in $city$.", 
          "usr": "Okay, your purchase of $numberofpeople$ tickets for $moviename$ at $theater$ in $city$."
        }, 
        "inform_slots": [
          "theater", 
          "taskcomplete", 
          "numberofpeople", 
          "moviename", 
          "city"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Great, I was able to purchase $numberofpeople$ tickets to $moviename$ for $date$ at $starttime$ at $theater$ in $city$, $state$.", 
          "usr": "Great, I was able to purchase $numberofpeople$ tickets to $moviename$ for $date$ at $starttime$ at $theater$ in $city$, $state$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Great - I was able to purchase $numberofpeople$ tickets for you to see $moviename$ $date$ at $theater$ in $city$ $state$ at $starttime$.", 
          "usr": "Great - I was able to purchase $numberofpeople$ tickets for you to see $moviename$ $date$ at $theater$ in $city$ $state$ at $starttime$."
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "state", 
          "starttime", 
          "date", 
          "taskcomplete", 
          "moviename"
        ]
      }
    ], 
    "deny": [
      {
        "request_slots": [], 
        "nl": {
          "agt": "Oh, sorry! Something wrong with the service, there is no ticket available!", 
          "usr": "Oh, sorry! This is the wrong ticket!"
        }, 
        "inform_slots": []
      }
    ], 
    "request": [
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater you prefer for the $moviename$ showing at $starttime$?", 
          "usr": "Which theater will play the $moviename$ at $starttime$?"
        }, 
        "inform_slots": [
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want some tickets for $moviename$ at $theater_chain$?", 
          "usr": "I need some tickets for $moviename$ at $theater_chain$."
        }, 
        "inform_slots": [
          "theater_chain", 
          "moviename"
        ]
      }, 
       {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets $starttime$?", 
          "usr": "I need some tickets $starttime$."
        }, 
        "inform_slots": [
          "startime"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you like for $moviename$ at $starttime$ in $city$?", 
          "usr": "Which theater is playing $moviename$ at $starttime$ in $city$?"
        }, 
        "inform_slots": [
          "city", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you like at $city$?", 
          "usr": "Which theater is it playing at $city$?"
        }, 
        "inform_slots": [
          "city"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want $numberofpeople$ tickets for $video_format$ at $starttime$?", 
          "usr": "I need $numberofpeople$ tickets for $video_format$ at $starttime$."
        }, 
        "inform_slots": [
          "video_format", 
          "numberofpeople", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and what start time do you want on $date$?", 
          "usr": "Which theater and start time are available on $date$?"
        }, 
        "inform_slots": [
          "date"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want to book $numberofpeople$ tickets?", 
          "usr": "What date and start time are availble to book $numberofpeople$ tickets?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "moviename"
        ], 
        "nl": {
          "agt": "What movie do you want to watch at $starttime$ $date$ in $city$?", 
          "usr": "What movie is playing at $starttime$ $date$ in $city$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you want to book $numberofpeople$ tickets at $city$?", 
          "usr": "Which theater and start time are available to book $numberofpeople$ tickets at $city$?"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time would you like for $numberofpeople$ tickets in $city$ $zip$?", 
          "usr": "What theater and start time are available to book $numberofpeople$ tickets in $city$ $zip$?"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like for $numberofpeople$ tickets at $theater$?", 
          "usr": "What date and start time are available to book $numberofpeople$ tickets at $theater$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time would you like at $city$ on $date$?", 
          "usr": "What theater and start time are available at $city$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "ticket", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like for some tickets?", 
          "usr": "What date and start time are available for some tickets?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like $distanceconstraints$?", 
          "usr": "What date and start time are available $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like for $numberofpeople$ tickets at $theater$ in $city$?", 
          "usr": "What date and start time are available to book $numberofpeople$ tickets at $theater$ in $city$?"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like for $numberofpeople$ tickets in $city$ $state$?", 
          "usr": "What date and start time are available to book $numberofpeople$ tickets in $city$ $state$?"
        }, 
        "inform_slots": [
          "city", 
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like in zipcode $zip$?", 
          "usr": "What date and start time are available in zipcode $zip$?"
        }, 
        "inform_slots": [
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time would you like at $state$?", 
          "usr": "What theater and start time are available at $state$?"
        }, 
        "inform_slots": [
          "state"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you want to book $numberofpeople$ tickets at $city$ $state$?", 
          "usr": "Which theater and start time do you want to book $numberofpeople$ tickets at $city$ $state$?"
        }, 
        "inform_slots": [
          "city", 
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want $video_format$ tickets?", 
          "usr": "Is there $video_format$ tickets available?"
        }, 
        "inform_slots": [
          "video_format"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets $distanceconstraints$?", 
          "usr": "Is there any ticket available $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want to book at $city$ $state$?", 
          "usr": "What date and start time are available at $city$ $state$?"
        }, 
        "inform_slots": [
          "city", 
          "state"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you want to watch $moviename$ at $starttime$ $date$?", 
          "usr": "Which theater is $moviename$ playing at $starttime$ $date$?"
        }, 
        "inform_slots": [
          "date", 
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want at $theater$ in $city$?", 
          "usr": "What date and start time are available at $theater$ in $city$?"
        }, 
        "inform_slots": [
          "city", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time do you want to book $numberofpeople$ tickets $distanceconstraints$?", 
          "usr": "What theater and start time are available for $numberofpeople$ tickets $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time do you want to book $numberofpeople$ tickets at $city$ on $date$?", 
          "usr": "What theater and start time are available for $numberofpeople$ tickets at $city$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want to book $numberofpeople$ tickets at $city$?", 
          "usr": "What date and start time are available for $numberofpeople$ tickets at $city$?"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time do you want to book $numberofpeople$ tickets at $state$?", 
          "usr": "What theater and start time are available for $numberofpeople$ tickets at $state$?"
        }, 
        "inform_slots": [
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like for $numberofpeople$ tickets $distanceconstraints$?", 
          "usr": "What date and start time are available to book $numberofpeople$ tickets $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time would you like in $city$ $zip$ on $date$?", 
          "usr": "What theater and start time are available in $city$ $zip$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What theater and start time would you like for $numberofpeople$ tickets in $zip$?", 
          "usr": "What theater and start time are available to book $numberofpeople$ tickets in $zip$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you want $distanceconstraints$?", 
          "usr": "Which theater and start time are available $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want to book $numberofpeople$ tickets in zipcode $zip$?", 
          "usr": "What date and start time are available for $numberofpeople$ tickets in zipcode $zip$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets at $theater$?", 
          "usr": "I want some tickets at $theater$."
        }, 
        "inform_slots": [
          "theater", 
          "greeting"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets at $theater$?", 
          "usr": "I want some tickets at $theater$."
        }, 
        "inform_slots": [
          "greeting"
        ]
      }, 
      {
        "request_slots": [
          "other"
        ], 
        "nl": {
          "agt": "Do you need anything else?", 
          "usr": "Anything else about the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "price"
        ], 
        "nl": {
          "agt": "Do you have any constraint for the price?", 
          "usr": "What is the price?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "moviename"
        ], 
        "nl": {
          "agt": "What movie do you want for $numberofpeople$ tickets on $date$?", 
          "usr": "Which movie is available on $date$ for $numberofpeople$ tickets?"
        }, 
        "inform_slots": [
          "date", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you want?", 
          "usr": "Which theater and start time are available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you want to book for $numberofpeople$ tickets on $date$?", 
          "usr": "Which theater and start time are available for $numberofpeople$ tickets on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you want at $city$?", 
          "usr": "Which theater and start time are available at $city$?"
        }, 
        "inform_slots": [
          "city"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want to book $numberofpeople$ tickets at $state$?", 
          "usr": "What date and start time are available to book $numberofpeople$ tickets at $state$?"
        }, 
        "inform_slots": [
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you need tickets at $state$?", 
          "usr": "I need tickets at $state$."
        }, 
        "inform_slots": [
          "state"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you need in $city$ $state$?", 
          "usr": "Which theater and start time are available at $city$ $state$?"
        }, 
        "inform_slots": [
          "city", 
          "state"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you need $numberofpeople$ tickets in $city$ $zip$ on $date$?", 
          "usr": "Which theater and start time are available for $numberofpeople$ tickets in $city$ $zip$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want the tickets on $date$?", 
          "usr": "Can I get the tickets for $date$?"
        }, 
        "inform_slots": [
          "date"
        ]
      }, 
      {
        "request_slots": [
          "moviename"
        ], 
        "nl": {
          "agt": "Which movie do you want to watch at $city$?", 
          "usr": "What movie is showing at $city$?"
        }, 
        "inform_slots": [
          "city"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you want to watch $moviename$?", 
          "usr": "Which theater is playing $moviename$?"
        }, 
        "inform_slots": [
          "other", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you want at $theater_chain$?", 
          "usr": "What start time is it playing at $theater_chain$?"
        }, 
        "inform_slots": [
          "theater_chain"
        ]
      }, 
      {
        "request_slots": [
          "moviename"
        ], 
        "nl": {
          "agt": "What movie do you want to watch $distanceconstraints$?", 
          "usr": "What movie is playing $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints"
        ]
      }, 
      {
        "request_slots": [
          "moviename"
        ], 
        "nl": {
          "agt": "what movie do you want to watch at $theater$?", 
          "usr": "what movie is playing at $theater$?"
        }, 
        "inform_slots": [
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you want at $starttime$?", 
          "usr": "Which theater is it playing at $starttime$?"
        }, 
        "inform_slots": [
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "moviename"
        ], 
        "nl": {
          "agt": "What movie do you want $data$?", 
          "usr": "What movie is playing on $date$?"
        }, 
        "inform_slots": [
          "date"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater $distanceconstraints$ do you like?", 
          "usr": "Which theater $distanceconstraints$ is available?"
        }, 
        "inform_slots": [
          "distanceconstraints"
        ]
      }, 
      {
        "request_slots": [
          "description"
        ], 
        "nl": {
          "agt": "Do you have any other description requirement for the $moviename$?", 
          "usr": "Is there any other description for the $moviename$?"
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want some tickets at $city$?", 
          "usr": "I want some tickets at $city$."
        }, 
        "inform_slots": [
          "city"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want to book the tickets?", 
          "usr": "Could you help me to book the tickets?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Any preference for the start time of $moviename$?", 
          "usr": "What is the start time for $moviename$?"
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you want to book $numberofpeople$ tickets for $moviename$?", 
          "usr": "Which theater can I book $numberofpeople$ tickets for $moviename$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want $numberofpeople$ tickets for $moviename$?", 
          "usr": "Can I get $numberofpeople$ tickets for $moviename$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets for $moviename$ on $date$?", 
          "usr": "Can I get tickets for $moviename$ $date$?"
        }, 
        "inform_slots": [
          "date", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets for $moviename$ at $starttime$?", 
          "usr": "I want tickets for $moviename$ at $starttime$."
        }, 
        "inform_slots": [
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets for $moviename$ at $city$?", 
          "usr": "Can I buy tickets for $moviename$ at $city$?"
        }, 
        "inform_slots": [
          "city", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Any preference for the start time for $moviename$ $distanceconstraints$?", 
          "usr": "What is the start time for $moviename$ $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Any preference for the start time for $moviename$ at zipcode $zip$?", 
          "usr": "What is the start time for $moviename$ at zipcode $zip$?"
        }, 
        "inform_slots": [
          "moviename", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets for $moviename$?", 
          "usr": "Can I get some tickets for $moviename$?"
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want $numberofpeople$ tickets?", 
          "usr": "Can I get $numberofpeople$ tickets?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date do you want to book $numberofpeople$ tickets for $moviename$?", 
          "usr": "What date can I book $numberofpeople$ tickets for $moviename$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want tickets for $moviename$ at $theater$?", 
          "usr": "Can I get tickets for $moviename$ at $theater$?"
        }, 
        "inform_slots": [
          "moviename", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater you want to watch $moviename$?", 
          "usr": "Which theater is $moviename$ playing?"
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater you want to watch $moviename$ on $date$?", 
          "usr": "Which theater will $moviename$ play $date$?"
        }, 
        "inform_slots": [
          "date", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you want to book $numberofpeople$ tickets for $moviename$?", 
          "usr": "What start time can I book $numberofpeople$ tickets for $moviename$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date do you want to book $moviename$ tickets at $starttime$?", 
          "usr": "Which day $moviename$ will be showing at $starttime$?"
        }, 
        "inform_slots": [
          "moviename", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you want to book $moviename$ tickets on $date$?", 
          "usr": "What is the start time for $moviename$ $date$?"
        }, 
        "inform_slots": [
          "date", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater at $city$ you prefer to watch $moviename$?", 
          "usr": "Which theater is playing $moviename$ at $city$?"
        }, 
        "inform_slots": [
          "city", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What is the date for $moviename$?", 
          "usr": "When is $moviename$ playing?"
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What is the date you want for $moviename$ at $city$?", 
          "usr": "What date is $moviename$ playing at $city$?"
        }, 
        "inform_slots": [
          "city", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you need some tickets for $moviename$ in $state$?", 
          "usr": "Hi, I'd like to buy tickets for $moviename$ in $state$."
        }, 
        "inform_slots": [
          "state", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater $distanceconstraints$ you prefer for $moviename$?", 
          "usr": "Which theater is $moviename$ playing $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Any requirement for the start time for $moviename$ in $state$?", 
          "usr": "What is the start time for $moviename$ in $state$?"
        }, 
        "inform_slots": [
          "state", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater you like to watch $moviename$ in $state$?", 
          "usr": "Which theater is $moviename$ playing in $state$?"
        }, 
        "inform_slots": [
          "state", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date do you want to watch $moviename$ in $state$?", 
          "usr": "When is $moviename$ playing in $state$?"
        }, 
        "inform_slots": [
          "state", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date you want to watch $moviename$ at zipcode $zip$?", 
          "usr": "What date is $moviename$ playing at zipcode $zip$?"
        }, 
        "inform_slots": [
          "moviename", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you want to watch $moviename$ at $city$?", 
          "usr": "When is $moviename$ playing at $city$?"
        }, 
        "inform_slots": [
          "city", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you want to watch $video_format$ $moviename$?", 
          "usr": "Which theater is playing $video_format$ $moviename$?"
        }, 
        "inform_slots": [
          "video_format", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date do you want to watch $moviename$ at $theater$?", 
          "usr": "Which day is $moviename$ playing at $theater$?"
        }, 
        "inform_slots": [
          "moviename", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What time do you want to watch $moviename$ at $theater$?", 
          "usr": "What is the start time for $moviename$ at $theater$?"
        }, 
        "inform_slots": [
          "moviename", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you want to watch $moviename$ at zipcode $zip$?", 
          "usr": "Which theater near zipcode $zip$ is playing $moviename$?"
        }, 
        "inform_slots": [
          "moviename", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date do you want to watch $moviename$ $distanceconstraints$?", 
          "usr": "When is $moviename$ playing $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "moviename"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater $distanceconstraints$ do you want to order $numberofpeople$ tickets for $video_format$ movie?", 
          "usr": "Which theater $distanceconstraints$ can I book $numberofpeople$ $video_format$ tickets?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "video_format", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time for $numberofpeople$ tickets?", 
          "usr": "What is the start time available for $numberofpeople$ tickets?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like?", 
          "usr": "What date and start time are available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "date", 
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time would you like? And which theater you prefer?", 
          "usr": "Can you tell me the available theater and date, start time?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What time would you like to see it?", 
          "usr": "What start time is available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What time you prefer on $date$ for $numberofpeople$ tickets?", 
          "usr": "What time is it playing $date$? I need $numberofpeople$ tickets."
        }, 
        "inform_slots": [
          "date", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater would you like?", 
          "usr": "Which theater is available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you like at $city$ for $numberofpeople$ tickets?", 
          "usr": "What start time can I book $numberofpeople$ tickets at $city$?"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date would you like to watch it?", 
          "usr": "What date is available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "date", 
          "theater"
        ], 
        "nl": {
          "agt": "What date you prefer, and which theater would you like to go?", 
          "usr": "Can you tell me the available theater and date?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you prefer for $numberofpeople$ tickets $distanceconstraints$?", 
          "usr": "What start time can I book $numberofpeople$ tickets $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Can you tell me which theater you want for $numberofpeople$ tickets?", 
          "usr": "Where I can purchase $numberofpeople$ tickets?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you like at $city$, $state$?", 
          "usr": "When it will play at $city$ $state$?"
        }, 
        "inform_slots": [
          "city", 
          "state"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date for 4 tickets?", 
          "usr": "What date is available for $numberofpeople$ tickets?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you prefer for $numberofpeople$ tickets at $theater$ in $city$?", 
          "usr": "I want to purchase $numberofpeople$ tickets. What time is that movie playing at $theater$ in $city$?"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date do you prefer for $numberofpeople$ tickets at $state$?", 
          "usr": "I need to get $numberofpeople$ tickets. What date is playing at $state$?"
        }, 
        "inform_slots": [
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater you would prefer in $state$ $distanceconstraints$ for $video_format$?", 
          "usr": "Which theater $distanceconstraints$ is available in $state$ for $video_format$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "video_format", 
          "state"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you want on $date$ near zipcode $zip$ for $numberofpeople$ tickets?", 
          "usr": "I want to purchase $numberofpeople$ tickets. What time is playing on $date$, in zipcode $zip$?"
        }, 
        "inform_slots": [
          "date", 
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you want at $theater$ on $date$ for $numberofpeople$ tickets?", 
          "usr": "I need $numberofpeople$ tickets. What time is the movie playing at $theater$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "numberofpeople", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you prefer at $city$ $zip$ for $numberofpeople$ tickets?", 
          "usr": "I want to purchase $numberofpeople$ tickets. What time is playing at $city$, and zipcode is $zip$?"
        }, 
        "inform_slots": [
          "city", 
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Can you tell me the the start time you prefer $distanceconstraints$?", 
          "usr": "What is the start time for that movie $distanceconstraints$?"
        }, 
        "inform_slots": [
          "distanceconstraints"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Can you tell me the start time you like at $theater$?", 
          "usr": "What time is playing at $theater$?"
        }, 
        "inform_slots": [
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Can you tell me the start time you like on $date$ at $city$ $zip$?", 
          "usr": "What time is playing at $city$ $zip$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Can you tell me what start time you like at $city$?", 
          "usr": "What time is playing at $city$?"
        }, 
        "inform_slots": [
          "city"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "Can you tell me what start time you like on $date$?", 
          "usr": "What time would you like on $date$?"
        }, 
        "inform_slots": [
          "date"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What time do you prefer at $state$ for $numberofpeople$ tickets?", 
          "usr": "I would like $numberofpeople$ tickets for that movie. What time is it playing at $state$?"
        }, 
        "inform_slots": [
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you prefer in zipcode $zip$ for $numberofpeople$ tickets?", 
          "usr": "I need $numberofpeople$ tickets. What is the start time in the area of zipcode $zip$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you prefer at $state$ for $numberofpeople$ tickets?", 
          "usr": "Which theater can I book $numberofpeople$ tickets at $state$?"
        }, 
        "inform_slots": [
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you prefer at $city$, $state$ for $numberofpeople$ tickets?", 
          "usr": "I want to get $numberofpeople$ tickets. What time is it playing at $city$ $state$?"
        }, 
        "inform_slots": [
          "city", 
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you like at $theater$ in $city$?", 
          "usr": "What time is playing at $theater$ in $city$?"
        }, 
        "inform_slots": [
          "city", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you like in $city$ on $date$?", 
          "usr": "What time is playing at $theater$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What start time do you want at $theater$ in $city$ on $date$?", 
          "usr": "What time is playing at $theater$ in $city$ on $date$? "
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater $distanceconstraints$ do you prefer in $state$ for $numberofpeople$ $video_format$ tickets?", 
          "usr": "I need $numberofpeople$ tickets. Which theater $distanceconstraints$ offers $video_format$ in $state$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "video_format", 
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you prefer for $numberofpeople$ $video_format$ tickets?", 
          "usr": "I need $numberofpeople$ tickets. Which theater offers $video_format$?"
        }, 
        "inform_slots": [
          "video_format", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater $distanceconstraints$ for $numberofpeople$ tickets?", 
          "usr": "I need $numberofpeople$ tickets. Which theater $distanceconstraints$ is playing?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you like at $state$?", 
          "usr": "What time is playing at $state$?"
        }, 
        "inform_slots": [
          "state"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you like at $city$ on $date$ for $numberofpeople$ tickets?", 
          "usr": "I want to purchase $numberofpeople$ tickets. What time is it playing at $city$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you prefer at $theater$ for $numberofpeople$ tickets?", 
          "usr": "What start time can I book $numberofpeople$ tickets at $theater$?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater $distanceconstraints$ you like for $video_format$ movies?", 
          "usr": "Which theater $distanceconstraints$ offers $video_format$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "video_format"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you like in $city$ near zipcode $zip$ on $date$ for $numberofpeople$ tickets?", 
          "usr": "I want to get $numberofpeople$ tickets. What is the start time at $city$ $zip$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "numberofpeople", 
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you prefer near zipcode $zip$?", 
          "usr": "What time is playing in zipcode $zip$?"
        }, 
        "inform_slots": [
          "zip"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What is the start time you prefer at $theater$ in $city$ on $date$ for $numberofpeople$ tickets?", 
          "usr": "I want $numberofpeople$ tickets. What is the start time at $theater$ in $city$ on $date$?"
        }, 
        "inform_slots": [
          "date", 
          "city", 
          "numberofpeople", 
          "theater"
        ]
      }, 
      {
        "request_slots": [
          "date"
        ], 
        "nl": {
          "agt": "What date do you prefer at $state$?", 
          "usr": "What date is playing at $state$?"
        }, 
        "inform_slots": [
          "state"
        ]
      }, 
      {
        "request_slots": [
          "starttime"
        ], 
        "nl": {
          "agt": "What time do you like at $city$ on $date$?", 
          "usr": "What time is playing in $city$ on $date$"
        }, 
        "inform_slots": [
          "date", 
          "city"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater $distanceconstraints$ do you prefer in $state$ for $numberofpeople$ tickets?", 
          "usr": "I need $numberofpeople$ tickets. Which theater $distanceconstraints$ at $state$?"
        }, 
        "inform_slots": [
          "distanceconstraints", 
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater do you prefer in $state$ for $numberofpeople$ $video_format$ tickets?", 
          "usr": "I need $numberofpeople$ tickets. Which theater offers $video_format$ at $state$?"
        }, 
        "inform_slots": [
          "video_format", 
          "state", 
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want at $state$?", 
          "usr": "What date and start time are available at $state$?"
        }, 
        "inform_slots": [
          "state"
        ]
      }, 
      {
        "request_slots": [
          "date", 
          "starttime"
        ], 
        "nl": {
          "agt": "What date and start time do you want at $city$?", 
          "usr": "What date and start time do you want at $city$?"
        }, 
        "inform_slots": [
          "city"
        ]
      }, 
      {
        "request_slots": [
          "theater", 
          "starttime"
        ], 
        "nl": {
          "agt": "Which theater and start time do you want to book $numberofpeople$ tickets?", 
          "usr": "What theater and start time are available to book $numberofpeople$ tickets?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [
          "theater"
        ], 
        "nl": {
          "agt": "Which theater you prefer at $state$?", 
          "usr": "What theater is playing at $state$?"
        }, 
        "inform_slots": [
          "state"
        ]
      }, 
      {
        "request_slots": [
          "moviename"
        ], 
        "nl": {
          "agt": "What movie are you interested in?", 
          "usr": "What movie is available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "city"
        ], 
        "nl": {
          "agt": "Which city would you like?", 
          "usr": "Which city is available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "numberofpeople"
        ], 
        "nl": {
          "agt": "How many tickets do you need?", 
          "usr": "How many tickets are available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "actor"
        ], 
        "nl": {
          "agt": "Which actor you like?", 
          "usr": "What actor is in the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "actress"
        ], 
        "nl": {
          "agt": "Which actress you like?", 
          "usr": "What actress is in the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "critic_rating"
        ], 
        "nl": {
          "agt": "What critic_rating do you like?", 
          "usr": "What is the critic_rating for the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "distanceconstraints"
        ], 
        "nl": {
          "agt": "Do you have any distanceconstraint constraint?", 
          "usr": "What is the distanceconstraints for the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "description"
        ], 
        "nl": {
          "agt": "Do you have any description constraint?", 
          "usr": "What is the description for the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "genre"
        ], 
        "nl": {
          "agt": "What genre do you like?", 
          "usr": "What is the genre for the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "mpaa_rating"
        ], 
        "nl": {
          "agt": "What mpaa_rating do you like?", 
          "usr": "What is the mpaa_rating for the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "mpaa_rating"
        ], 
        "nl": {
          "agt": "Do you have any constraint for the price?", 
          "usr": "What is the price for the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "video_format"
        ], 
        "nl": {
          "agt": "What video format do you want?", 
          "usr": "What is the video format for the movie?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "numberofkids"
        ], 
        "nl": {
          "agt": "How many kid tickets do you want?", 
          "usr": "How many kid tickets are available?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "zip"
        ], 
        "nl": {
          "agt": "What zip do you want to search?", 
          "usr": "What is the zip?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "theater_chain"
        ], 
        "nl": {
          "agt": "Which theater_chain do you want?", 
          "usr": "Which theater_chain is it playing?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "state"
        ], 
        "nl": {
          "agt": "Which state do you want?", 
          "usr": "Which state is availble?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "movie_series"
        ], 
        "nl": {
          "agt": "What movie series do you like?", 
          "usr": "What is the movie series?"
        }, 
        "inform_slots": []
      }
    ], 
    "thanks": [
      {
        "request_slots": [], 
        "nl": {
          "agt": "Thank you", 
          "usr": "Thank you"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Thank you, bye", 
          "usr": "Thank you, goodbye"
        }, 
        "inform_slots": [
          "closing"
        ]
      }
    ],
    "confirm_question": [
      {
        "request_slots": [], 
        "nl": {
          "agt": "Do you want to purchase the tickets?", 
          "usr": "Could you help me to purchase the tickets?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [
          "ticket"
        ], 
        "nl": {
          "agt": "Do you want to purchase the tickets?", 
          "usr": "Could you help me to book the tickets?"
        }, 
        "inform_slots": []
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Do you want to watch that movie?", 
          "usr": "Could you help me to book that movie ticket?"
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Do you want to book the tickets?", 
          "usr": "Could you help me to book the tickets?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Do you want to book the tickets for that movie?", 
          "usr": "Could you help me to book the tickets for that movie?"
        }, 
        "inform_slots": [
          "numberofpeople", 
          "moviename"
        ]
      }
    ], 
    "greeting": [
      {
        "request_slots": [], 
        "nl": {
          "agt": "Hi", 
          "usr": "Hi"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }
    ], 
    "multiple_choice": [
      {
        "request_slots": [], 
        "nl": {
          "agt": "How many tickets do you need?", 
          "usr": "How many tickets are available?"
        }, 
        "inform_slots": [
          "numberofpeople"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Which movie do you want to watch?", 
          "usr": "Which movie is showing?"
        }, 
        "inform_slots": [
          "moviename"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "Which date and start time would you like?", 
          "usr": "Which date and start time are available?"
        }, 
        "inform_slots": [
          "date", 
          "starttime"
        ]
      }, 
      {
        "request_slots": [], 
        "nl": {
          "agt": "How many tickets do you need?", 
          "usr": "How many tickets are available for that day?"
        }, 
        "inform_slots": [
          "date", 
          "numberofpeople"
        ]
      }
    ],
    "confirm_answer": [
      {
        "request_slots": [], 
        "nl": {
          "agt": "Okay", 
          "usr": "Yes"
        }, 
        "inform_slots": []
      }
    ]
  }
}

================================================
FILE: src/deep_dialog/data/dia_acts.txt
================================================
request
inform
confirm_question
confirm_answer
greeting
closing
multiple_choice
thanks
welcome
deny
not_sure

================================================
FILE: src/deep_dialog/data/dicts.v3.json
================================================
(dp1
S'city'
p2
(lp3
S'hamilton'
p4
aS'manville'
p5
aS'bridgewater'
p6
aS'seattle'
p7
aS'bellevue'
p8
aS'birmingham'
p9
aS'san francisco'
p10
aS'portland'
p11
aS'royal oak'
p12
aS'Royal Oak'
p13
aS'madison heights'
p14
aS'detroit'
p15
aS'des moines'
p16
aS'johnstown'
p17
aS'boston'
p18
aS'carbondale'
p19
aS'los angeles'
p20
aS'stony brook'
p21
aS'94952'
p22
aS'tampa'
p23
aS'hoover'
p24
aS'dramas'
p25
aS'Sacramento'
p26
aS'nashville'
p27
aS'Seattle'
p28
aS'st louis'
p29
aS'whittier village stadium cinemas'
p30
aS'southeast portland'
p31
aS'miami'
p32
aS'chicago'
p33
aS'nyc'
p34
aS'sacramento'
p35
aS'pittsburgh'
p36
aS'atlanta'
p37
aS'south barrington'
p38
aS'over seattle'
p39
aS'dallas'
p40
aS'st'
p41
aS'louis park'
p42
aS'Portland'
p43
aS'Monroe'
p44
aS'cary'
p45
aS'whittier'
p46
aS'sparta'
p47
aS'Shiloh'
p48
aS'Belleville'
p49
aS"o'fallon"
p50
aS'fairview heights'
p51
aS'springfield'
p52
aS'albany'
p53
aS'houma'
p54
aS'la'
p55
aS'evanston'
p56
aS'Southfield'
p57
aS'monroe'
p58
aS'Long Island'
p59
aS'northern san francisco'
p60
aS'94109'
p61
aS'louis'
p62
aS'sappington'
p63
aS'norfolk'
p64
aS'Los Angeles CA 90015'
p65
aS'campcreek area'
p66
aS'regency'
p67
aS'arlington'
p68
aS'philadelphia'
p69
aS'princeton'
p70
aS'buford'
p71
aS'las vegas'
p72
aS'waynesboro'
p73
aS'Clear Lake'
p74
aS'du quoin'
p75
aS'Du Quoin'
p76
aS'altoona'
p77
aS'orlando'
p78
aS'regency academy 6 theater'
p79
aS'baltimore'
p80
aS'knoxville'
p81
aS'chico'
p82
aS'wilmington'
p83
aS'lansing'
p84
aS'bayou vista'
p85
aS'manchester stadium 16'
p86
aS'Houma'
p87
aS'tulare'
p88
aS'shiloh'
p89
aS'belleville'
p90
aS'Springfield'
p91
aS'du Quoin'
p92
asS'numberofpeople'
p93
(lp94
S'2'
aS'5'
aS'two'
p95
aS'9'
aS'three'
p96
aS'4'
aS'3'
aS'6'
aS'1'
aS'four'
p97
aS'2 adult'
p98
aS'one'
p99
aS'7'
aS' 2'
p100
aS'single'
p101
aS'8'
asS'theater'
p102
(lp103
S'manville 12 plex'
p104
aS'amc dine-in theatres bridgewater 7'
p105
aS'bridgewater'
p106
aS'every single theatre'
p107
aS'bellevue lincoln square cinemas'
p108
aS'regal meridian 16'
p109
aS'regal meridian'
p110
aS'carmike summit 16'
p111
aS'carmike summit'
p112
aS'century centre 9'
p113
aS'Redwood City 20'
p114
aS'many'
p115
aS'amc pacific place 11 theater'
p116
aS'regal lloyd center 10'
p117
aS'carmike 16'
p118
aS'river east 21'
p119
aS'emagine theater'
p120
aS'emagine'
p121
aS'different'
p122
aS'amc star john r 15'
p123
aS'any'
p124
aS'FLIX BREWHOUSE DES MOINES'
p125
aS'CARMIKE COBBLESTONE 9'
p126
aS'cinemas'
p127
aS'regal visalia stadium 10'
p128
aS'amc pacific place 11'
p129
aS'amc loews boston common 19'
p130
aS'amc showplace carbondale 8'
p131
aS'amc lowes oak tree'
p132
aS'amc lowes oak tree 6'
p133
aS'royal oak emagine theater'
p134
aS'Regal LA LIVE Stadium 14'
p135
aS'regal la live stadium'
p136
aS'Big Picture'
p137
aS'Cinerama'
p138
aS'Central Cinema'
p139
aS'century rowland plaza'
p140
aS'the century rowland plaza'
p141
aS'regency commerce 14'
p142
aS'bellevue lincoln square'
p143
aS'amc west shore 14 210 Westshore Plaza'
p144
aS'pacific science center imax theaters'
p145
aS'carmike patton creek'
p146
aS'regal meridian sundance cinemas'
p147
aS'regal thornton place'
p148
aS'REGAL NATOMAS MARKETPLACE STADIUM 16 & RPX'
p149
aS'Regal Natomas Marketplace'
p150
aS'amc hamilton 24'
p151
aS'regal meridan 16'
p152
aS'elmwood palace 20'
p153
aS'regal hollywood stadium 27'
p154
aS'chase park plaza cinemas'
p155
aS'regal lloyd center century eastport 16'
p156
aS'regal movies on tv stadium 16'
p157
aS'regal lloyd'
p158
aS'Regal South Beach'
p159
aS'Cinepolis USA'
p160
aS'Cobb Dolphin Cinemas'
p161
aS'cobb dolphin cinemas'
p162
aS'amc southcenter 16'
p163
aS'ua kaufman astoria stadium 14'
p164
aS'regal theater'
p165
aS'the Holiday 6'
p166
aS' the Stadium 5'
p167
aS'the Natomas Marketplace Stadium'
p168
aS'Natomas Marketplace Stadium'
p169
aS'regal natomas marketplace stadium'
p170
aS'richland cinemas'
p171
aS'this theater'
p172
aS'amc loews waterfront 22'
p173
aS'amc phipps plaza 14'
p174
aS'south barrington'
p175
aS'regal la live stadium 14'
p176
aS'pacific theatres at the grove'
p177
aS'regal la stadium 14'
p178
aS'regal la'
p179
aS'varsity theater'
p180
aS'theaters all over'
p181
aS'alamo draft house'
p182
aS'alamo drafthouse dallas'
p183
aS'century Eastport 16'
p184
aS'regal pioneer place'
p185
aS'regal lloyd center 10 & IMAX'
p186
aS'CENTURY 16 EASTPORT PLAZA'
p187
aS'century 16 EASTPORT PLAZA'
p188
aS'century 16'
p189
aS'regal barkley village stadium 16'
p190
aS'amc loews cascade mall'
p191
aS'regal marysville 14'
p192
aS'park west 14'
p193
aS'fangandgo'
p194
aS'Frank Theatres Parkside Town Commons Stadium 11'
p195
aS'Frank Theatres'
p196
aS'whittier village stadium cinemas'
p197
aS'cinemar downey'
p198
aS'amc theaters puente hills'
p199
aS"wehrenberg o'fallon 15 cine"
p200
aS'wehrenberg st clair 10 cine'
p201
aS'WEHRENBERG CAMPBELL 16'
p202
aS'pacific place 11'
p203
aS'regal clifton park stadium'
p204
aS'century eastport 16'
p205
aS'amc houma palace 10'
p206
aS'olympic blvd'
p207
aS'Regal Meridan 16 Bellevue Lincoln Square Cinemas'
p208
aS'Pacific Science Center IMAX Theaters'
p209
aS'box office window'
p210
aS'amc showplace carbondale'
p211
aS'Main Street Carbondale'
p212
aS'AMC UNIVERSITY PLACE 8'
p213
aS'amc pacific place 11 600 pine s'
p214
aS'loews stony brook 17'
p215
aS'amc loews stony brook'
p216
aS'regal fox tower stadium'
p217
aS'flix brewhouse des moines'
p218
aS'carmike cobblestone 9'
p219
aS'amc van ness 14'
p220
aS'AMC Van Ness'
p221
aS'amc van ness'
p222
aS'SIFF Cinema Uptown'
p223
aS'Ark Lodge Cinemas'
p224
aS'Regal Crossroads'
p225
aS'cinema uptown'
p226
aS'regal crossroad'
p227
aS'regal crossroads'
p228
aS'pacific place 11 theater'
p229
aS'wehrenberg ronnies 20'
p230
aS'imax 5320'
p231
aS'blvd'
p232
aS'big picture seattle'
p233
aS'regal macarthur center stadium 18 & RPX CINEMARK 18'
p234
aS'regal'
p235
aS'regal macarthur center stadium 18'
p236
aS'chase park plaza'
p237
aS'regal live stadium 14'
p238
aS'IMAX Century Eastport 16'
p239
aS'Century Clackmas Town Center'
p240
aS'XD'
p241
aS'theaters all across seattle'
p242
aS'Regal Meridian 16'
p243
aS'Pacific Science Center'
p244
aS'Admiral Theater'
p245
aS'pacific science center'
p246
aS'pacific science theater'
p247
aS'Regal meridian 16'
p248
aS'regal thornton place stadium'
p249
aS'amc star fairlane 21'
p250
aS'regency academy 6'
p251
aS'Regal LA Live Stadium 14'
p252
aS'cinemark tinseltown 9'
p253
aS'AMC LOEWS OAK TREE 6 10006 aurora'
p254
aS'theatre avenue north'
p255
aS'amc marketfair 10'
p256
aS'amc university place'
p257
aS'amc pacific place'
p258
aS'mall of georgia movie'
p259
aS'current'
p260
aS'Visalia'
p261
aS'regal colonnade 14'
p262
aS'zeus'
p263
aS'confirmed'
p264
aS'creed'
p265
aS'pacific sherman oaks 5'
p266
aS'amc la mirada 7'
p267
aS'AMC La Mirada'
p268
aS'amc'
p269
aS'15'
p270
aS'buford georgia'
p271
aS'whisky foxtrot tango'
p272
aS'mall of georgia'
p273
aS''
aS'finding dory'
p274
aS'carmike the summit 16'
p275
aS'lake theater'
p276
aS'Mason city IA cinema west'
p277
aS'cinema west'
p278
aS'carmike 12'
p279
aS'Living Room Theaters Century Eastport 16'
p280
aS'Century Clackamas Town Center'
p281
aS'XD among others in your area'
p282
aS'Living Room Theaters'
p283
aS'amc west oaks 14'
p284
aS'regency academy'
p285
aS'cinemakr egyptian 24'
p286
aS'pacific theatres'
p287
aS'pacific theater'
p288
aS'Richland Cinemas'
p289
aS'living room theaters'
p290
aS'...'
p291
aS'shelby township'
p292
aS'the pearl theatre'
p293
aS'century 20 daly city'
p294
aS'carmike 10'
p295
aS'please'
p296
aS'mesa grand 24'
p297
aS'mesa grand'
p298
aS'boyou vista la'
p299
aS'bayou vista'
p300
aS'fairview cinema work'
p301
aS'fairview'
p302
aS'regal south beach'
p303
aS'amc sunset place 24'
p304
aS'regency norwalk 8'
p305
aS'amc la 7'
p306
aS'amc la mirada'
p307
aS'amc la'
p308
aS'wehrenberg ronnies 20 cine and imax'
p309
aS'all'
p310
aS'paradise cinema 7'
p311
aS'tinseltown'
p312
aS'cinemark 14'
p313
aS' paradisa cinema 7'
p314
aS'beaver creek stadium 12'
p315
aS'varsity theatre'
p316
aS'regal mayfaire stadium 16 imax'
p317
aS'regal lloyd center century 16'
p318
aS'ncg eastwood cinemas'
p319
aS'regal cinemas'
p320
aS'cinema lansing'
p321
aS'big picture'
p322
aS'cinerama'
p323
aS'central cinema'
p324
aS'amc elmwood palace 20'
p325
aS'fairview cinema'
p326
aS'shields ave'
p327
aS'maya fresno 16'
p328
aS'campus pointe dr'
p329
aS'Regal Pioneer Place Stadium'
p330
aS'Regal Lloyd Center 10'
p331
aS'Bagdad Theatre'
p332
aS'regal pioneer place stadium'
p333
aS'wehrenberg campbell 16 cine moviename'
p334
aS'Big Picture Sundance Cinemas'
p335
aS'southpoint casino'
p336
aS'cinemark lincoln square cinemas'
p337
aS'regal meridian 16 theater'
p338
aS'amc river east 21'
p339
aS'cinpolis coconut grove'
p340
aS'COBB DOLPHIN 19'
p341
aS'cinepolis coconut grove'
p342
aS'cinepolis'
p343
aS'cCENTURY 16 SOUTH POINT AND XD'
p344
aS'Las Vegas NV 89183'
p345
aS'Century 16 South Point'
p346
asS'description'
p347
(lp348
S'is still playing in theaters'
p349
aS'violence'
p350
aS'violent'
p351
aS'good intelligent'
p352
aS'The critics consensus is that it is Fast funny and gleefully profane the fourth-wall-busting Deadpool subverts superhero film formula with wildly entertaining -- and decidedly non-family-friendly -- results'
p353
aS'disney'
p354
aS'A woman (Mary Elizabeth Winstead) discovers the horrifying truth about the outside world while living in an underground shelter with two men (John Goodman John Gallagher Jr)'
p355
aS'highest rated pizza'
p356
aS"Mortal hero Bek teams with the god Horus in an alliance against Set the merciless god of darkness who has usurped Egypt's throne plunging the once peaceful and prosperous empire into chaos and conflict"
p357
aS'scary'
p358
asS'zip'
p359
(lp360
S'08835'
p361
aS'08807'
p362
aS'98004'
p363
aS'98101'
p364
aS'98109'
p365
aS'35243'
p366
aS'35244'
p367
aS'70070'
p368
aS'90601'
p369
aS'10035'
p370
aS'30326'
p371
aS'90015'
p372
aS'90036'
p373
aS'97232'
p374
aS'97266'
p375
aS'98272'
p376
aS'90602'
p377
aS'62269'
p378
aS'62208'
p379
aS'32289'
p380
aS'48071'
p381
aS'63126'
p382
aS'98121'
p383
aS'19101'
p384
aS'19121'
p385
aS'62901'
p386
aS'98126'
p387
aS'98119'
p388
aS'35246'
p389
aS'35242'
p390
aS'85249'
p391
aS'60201'
p392
aS'94952'
p393
aS'65807'
p394
aS'33133'
p395
aS'33172'
p396
asS'numberofkids'
p397
(lp398
S'two'
p399
aS'2'
aS'1'
aS'no'
p400
asS'distanceconstraints'
p401
(lp402
S'closest'
p403
aS'visalia'
p404
aS'near the space needle'
p405
aS'area'
p406
aS'nearest'
p407
aS'near 98119'
p408
aS'closest time'
p409
aS'space needle'
p410
aS'east side'
p411
aS'downtown'
p412
aS'close to 95833'
p413
aS'near space needle'
p414
aS'south beach'
p415
aS'near'
p416
aS'south barrington'
p417
aS'near me'
p418
aS'south side'
p419
aS'local theater'
p420
aS'closest theater to you'
p421
aS'12 miles'
p422
aS' seattle area'
p423
aS'northern part of the city'
p424
aS'near here'
p425
aS'near my location'
p426
aS'safeco field'
p427
aS'near you:'
p428
aS'north side'
p429
aS'vicinity'
p430
aS'around the city'
p431
aS'far away from disney'
p432
aS'near you'
p433
aS'near safeco field'
p434
aS'in your area'
p435
aS'your area'
p436
aS'ave'
p437
aS'general'
p438
asS'critic_rating'
p439
(lp440
S'good'
p441
aS'84 percent'
p442
aS'93 of audience'
p443
aS'best'
p444
aS'good place'
p445
aS'top rated'
p446
aS'most scene'
p447
aS'number 1'
p448
aS'4.5/5'
p449
aS'top 4'
p450
aS'lowly 26% on rotten tomatoes but 64% of the audience seemed to like it'
p451
aS'great reviews all around with a 84 percent on rotten tomatoes and 93 of audience members recommending it'
p452
aS'6'
aS'5'
aS'nice'
p453
aS'4 5/5 star rating'
p454
aS'26%'
p455
aS'popular'
p456
aS'most seen'
p457
aS'4 5/5 stars'
p458
aS'8%'
p459
aS'top'
p460
asS'price'
p461
(lp462
S'$20'
p463
aS'$10'
p464
aS'cheapest'
p465
aS'adult price is 8'
p466
aS'32'
p467
asS'greeting'
p468
(lp469
S'hey'
p470
aS'hello'
p471
aS'good morning'
p472
aS'hi'
p473
aS'there'
p474
aS'hello there'
p475
aS'happy to'
p476
aS'good evening'
p477
aS'hi welcome'
p478
aS'hey there'
p479
aS'hi there'
p480
asS'actor'
p481
(lp482
S'ryan reynolds'
p483
aS'tina fey'
p484
asS'theater_chain'
p485
(lp486
S'regal meridian'
p487
aS'amc'
p488
aS'amc loews stony brook 17'
p489
aS'amc hamilton 24'
p490
aS'amc pacific place 11'
p491
aS'regency'
p492
aS'amc loews waterfront 22'
p493
aS'century'
p494
aS'amc star john r 15'
p495
aS'amc star southfield'
p496
aS'amc lowes oak tree 6'
p497
aS'amc loews oak tree 6'
p498
aS'amc showplace carbondale 8'
p499
aS'century eastport 16'
p500
aS'amc theater'
p501
aS'amc ahwatukee 24'
p502
aS' amc mesa grand 24'
p503
aS'amc showplace carbondale'
p504
asS'state'
p505
(lp506
S'nj'
p507
aS'washington'
p508
aS'wa'
p509
aS'al'
p510
aS'oregon'
p511
aS'mi'
p512
aS'iowa'
p513
aS'pennsylvania'
p514
aS'california'
p515
aS'ma'
p516
aS'illinois'
p517
aS'ny'
p518
aS'fl'
p519
aS'ca'
p520
aS'tn'
p521
aS'florida'
p522
aS'il'
p523
aS'pa'
p524
aS'ga'
p525
aS'mn'
p526
aS'OR'
p527
aS'north carolina'
p528
aS'mo'
p529
aS'alabama'
p530
aS'louisiana'
p531
aS'WA'
p532
aS'NY'
p533
aS'virginia'
p534
aS'texas'
p535
aS'ne'
p536
aS'georgia'
p537
aS'va'
p538
aS'IA'
p539
aS'maryland'
p540
aS'nc'
p541
aS'or'
p542
aS'michigan'
p543
aS'la'
p544
aS'LA'
p545
aS'nv'
p546
asS'other'
p547
(lp548
S'not available'
p549
aS'movie assistant number'
p550
aS'movie booking service'
p551
aS'search theater'
p552
aS'cannot book'
p553
aS'servicing tickets'
p554
aS'rotten tomatoes'
p555
aS'pub serves good burgers'
p556
aS'serves seafood'
p557
aS'date'
p558
aS'scary'
p559
aS'restaurant'
p560
aS'beer'
p561
aS'mexican restaurant'
p562
aS'best restaurant'
p563
aS'japanese restaurant'
p564
aS"that's odd"
p565
aS'crossed'
p566
aS'little late'
p567
aS'pub'
p568
aS'number 1'
p569
aS'switch cities'
p570
aS'name'
p571
aS'unable to book movies'
p572
aS'I cannot understand your reply'
p573
aS'purchase tickets'
p574
aS'look up date'
p575
aS'increased functionality'
p576
aS'functionality'
p577
aS'Master User'
p578
aS'master user'
p579
aS'two'
p580
aS'another preference'
p581
aS'no'
p582
aS'check again'
p583
aS'new release'
p584
aS'new releases'
p585
aS'place that serves seafood'
p586
aS'favorite part'
p587
aS'worth watching'
p588
aS'subtitiles'
p589
aS'subtitles'
p590
aS'many many theaters'
p591
aS'different selection of movies'
p592
aS'search for a theater'
p593
aS'latest showing'
p594
aS'Italian restaurant'
p595
aS'restaurant booking service'
p596
aS'online ticketing'
p597
aS"I can't remember"
p598
aS"can't think of"
p599
aS'search theaters'
p600
aS'cheapest'
p601
aS'do not know'
p602
aS'date night'
p603
aS'disney'
p604
aS'search by movie or movie theater'
p605
aS'indian restaurant'
p606
aS' movie purchasing service'
p607
aS'movie ticket buying service'
p608
aS'early in the day'
p609
aS'safeco field'
p610
aS'many'
p611
aS'pizza place'
p612
aS'restaurant reservations'
p613
aS'pizza restaurant'
p614
aS'restaurant service'
p615
aS'laughable'
p616
aS'english and chinese subtitles'
p617
aS'matinee'
p618
aS' matinee'
p619
aS'good restaurant'
p620
aS'currently'
p621
aS'george on the riverwak'
p622
aS'purchase'
p623
aS'odd'
p624
aS'got crossed'
p625
aS'29 movies'
p626
aS'I can bring my cat to'
p627
aS'I can order beer in'
p628
aS"don't know"
p629
aS'closed'
p630
aS'serve alcohol'
p631
aS"I don't know"
p632
aS"I'm not from around here"
p633
aS'restaurants'
p634
aS'book movie tickets'
p635
aS'before dinner'
p636
asS'mpaa_rating'
p637
(lp638
S'pg'
p639
aS'rated pg'
p640
aS'pg13'
p641
aS'best'
p642
aS'appropriate for the whole family'
p643
aS'r'
asS'starttime'
p644
(lp645
S'10:30am'
p646
aS'11:10am'
p647
aS'1:10pm'
p648
aS'1:50pm'
p649
aS'3:45pm'
p650
aS'4:30pm'
p651
aS'5:20pm'
p652
aS'6:30pm'
p653
aS'7:15pm'
p654
aS'9:10pm'
p655
aS'10:30pm'
p656
aS'12:30pm'
p657
aS'9:30pm'
p658
aS'9:30'
p659
aS'8:40pm'
p660
aS'7:00pm'
p661
aS'9:50pm'
p662
aS'none'
p663
aS'before 4pm'
p664
aS'12:00'
p665
aS'1:10'
p666
aS'2:40'
p667
aS'3:50'
p668
aS'around 2pm'
p669
aS'1:30'
Download .txt
gitextract_ubqsackx/

├── Bash_figure_4.sh
├── Bash_figure_5.sh
├── LICENSE
├── README.md
└── src/
    ├── deep_dialog/
    │   ├── __init__.py
    │   ├── agents/
    │   │   ├── __init__.py
    │   │   ├── agent.py
    │   │   ├── agent_baselines.py
    │   │   ├── agent_cmd.py
    │   │   └── agent_dqn.py
    │   ├── checkpoints/
    │   │   ├── temp_run1/
    │   │   │   └── agt_9_performance_records.json
    │   │   └── temp_run2/
    │   │       └── agt_9_performance_records.json
    │   ├── data/
    │   │   ├── count_uniq_slots.py
    │   │   ├── dia_act_nl_pairs.v6.json
    │   │   ├── dia_acts.txt
    │   │   ├── dicts.v3.json
    │   │   ├── dicts.v3.p
    │   │   ├── human_huamn_data_framed.json
    │   │   ├── human_huamn_data_framed_agent_first_turn.json
    │   │   ├── movie_kb.1k.json
    │   │   ├── movie_kb.1k.p
    │   │   ├── movie_kb.v2.json
    │   │   ├── movie_kb.v2.p
    │   │   ├── slot_set.txt
    │   │   ├── slot_set_small.txt
    │   │   ├── user_goals.json
    │   │   ├── user_goals_all_turns_template.p
    │   │   ├── user_goals_first_turn_template.part.movie.v1.p
    │   │   ├── user_goals_first_turn_template.v2.p
    │   │   └── user_goals_ids.json
    │   ├── dialog_config.py
    │   ├── dialog_system/
    │   │   ├── __init__.py
    │   │   ├── dialog_manager.py
    │   │   ├── dict_reader.py
    │   │   ├── kb_helper.py
    │   │   ├── state_tracker.py
    │   │   └── utils.py
    │   ├── models/
    │   │   ├── nlg/
    │   │   │   ├── convert.py
    │   │   │   ├── lstm_tanh_relu_[1468202263.38]_2_0.610.p
    │   │   │   └── model.nlg
    │   │   └── nlu/
    │   │       ├── convert.py
    │   │       └── lstm_[1468447442.91]_39_80_0.921.p
    │   ├── nlg/
    │   │   ├── __init__.py
    │   │   ├── decoder.py
    │   │   ├── lstm_decoder_tanh.py
    │   │   ├── nlg.py
    │   │   └── utils.py
    │   ├── nlu/
    │   │   ├── __init__.py
    │   │   ├── bi_lstm.py
    │   │   ├── lstm.py
    │   │   ├── nlu.py
    │   │   ├── seq_seq.py
    │   │   └── utils.py
    │   ├── qlearning/
    │   │   ├── __init__.py
    │   │   ├── dqn.py
    │   │   ├── dqn_torch.py
    │   │   └── utils.py
    │   └── usersims/
    │       ├── __init__.py
    │       ├── user_model.py
    │       ├── usersim.py
    │       ├── usersim_model.py
    │       └── usersim_rule.py
    ├── draw_learning_curve.py
    └── run.py
Download .txt
SYMBOL INDEX (204 symbols across 27 files)

FILE: src/deep_dialog/agents/agent.py
  class Agent (line 9) | class Agent:
    method __init__ (line 12) | def __init__(self, movie_dict=None, act_set=None, slot_set=None, param...
    method initialize_episode (line 31) | def initialize_episode(self):
    method state_to_action (line 39) | def state_to_action(self, state, available_actions):
    method register_experience_replay_tuple (line 59) | def register_experience_replay_tuple(self, s_t, a_t, reward, s_tplus1,...
    method set_nlg_model (line 75) | def set_nlg_model(self, nlg_model):
    method set_nlu_model (line 78) | def set_nlu_model(self, nlu_model):
    method add_nl_to_action (line 82) | def add_nl_to_action(self, agent_action):

FILE: src/deep_dialog/agents/agent_baselines.py
  class InformAgent (line 12) | class InformAgent(Agent):
    method initialize_episode (line 15) | def initialize_episode(self):
    method state_to_action (line 23) | def state_to_action(self, state):
  class RequestAllAgent (line 42) | class RequestAllAgent(Agent):
    method initialize_episode (line 45) | def initialize_episode(self):
    method state_to_action (line 53) | def state_to_action(self, state):
  class RandomAgent (line 72) | class RandomAgent(Agent):
    method initialize_episode (line 75) | def initialize_episode(self):
    method state_to_action (line 83) | def state_to_action(self, state):
  class EchoAgent (line 93) | class EchoAgent(Agent):
    method initialize_episode (line 96) | def initialize_episode(self):
    method state_to_action (line 104) | def state_to_action(self, state):
  class RequestBasicsAgent (line 128) | class RequestBasicsAgent(Agent):
    method initialize_episode (line 131) | def initialize_episode(self):
    method state_to_action (line 141) | def state_to_action(self, state):

FILE: src/deep_dialog/agents/agent_cmd.py
  class AgentCmd (line 10) | class AgentCmd(Agent):
    method __init__ (line 12) | def __init__(self, movie_dict=None, act_set=None, slot_set=None, param...
    method state_to_action (line 26) | def state_to_action(self, state):
    method parse_str_to_diaact (line 41) | def parse_str_to_diaact(self, string):
    method generate_diaact_from_nl (line 112) | def generate_diaact_from_nl(self, string):
    method add_nl_to_action (line 126) | def add_nl_to_action(self, agent_action):

FILE: src/deep_dialog/agents/agent_dqn.py
  class AgentDQN (line 30) | class AgentDQN(Agent):
    method __init__ (line 31) | def __init__(self, movie_dict=None, act_set=None, slot_set=None, param...
    method initialize_episode (line 75) | def initialize_episode(self):
    method state_to_action (line 82) | def state_to_action(self, state):
    method prepare_state_representation (line 94) | def prepare_state_representation(self, state):
    method run_policy (line 189) | def run_policy(self, representation):
    method rule_policy (line 202) | def rule_policy(self):
    method DQN_policy (line 224) | def DQN_policy(self, state_representation):
    method action_index (line 231) | def action_index(self, act_slot_response):
    method register_experience_replay_tuple (line 241) | def register_experience_replay_tuple(self, s_t, a_t, reward, s_tplus1,...
    method sample_from_buffer (line 260) | def sample_from_buffer(self, batch_size):
    method train (line 274) | def train(self, batch_size=1, num_batches=100):
    method save_experience_replay_to_file (line 354) | def save_experience_replay_to_file(self, path):
    method load_experience_replay_from_file (line 364) | def load_experience_replay_from_file(self, path):
    method load_trained_DQN (line 369) | def load_trained_DQN(self, path):
    method set_user_planning (line 377) | def set_user_planning(self, user_planning):
    method save (line 380) | def save(self, filename):
    method load (line 383) | def load(self, filename):
    method reset_dqn_target (line 386) | def reset_dqn_target(self):

FILE: src/deep_dialog/dialog_system/dialog_manager.py
  class DialogManager (line 13) | class DialogManager:
    method __init__ (line 16) | def __init__(self, agent, user, world_model, act_set, slot_set, movie_...
    method initialize_episode (line 31) | def initialize_episode(self, use_environment=False):
    method next_turn (line 62) | def next_turn(self, record_training_data=True, record_training_data_fo...
    method reward_function (line 121) | def reward_function(self, dialog_status):
    method reward_function_without_penalty (line 131) | def reward_function_without_penalty(self, dialog_status):
    method print_function (line 141) | def print_function(self, agent_action=None, user_action=None):

FILE: src/deep_dialog/dialog_system/dict_reader.py
  function text_to_dict (line 8) | def text_to_dict(path):

FILE: src/deep_dialog/dialog_system/kb_helper.py
  class KBHelper (line 11) | class KBHelper:
    method __init__ (line 14) | def __init__(self, movie_dictionary):
    method fill_inform_slots (line 22) | def fill_inform_slots(self, inform_slots_to_be_filled, current_slots):
    method available_slot_values (line 69) | def available_slot_values(self, slot, kb_results):
    method available_results_from_kb (line 81) | def available_results_from_kb(self, current_slots):
    method available_results_from_kb_for_slots (line 136) | def available_results_from_kb_for_slots(self, inform_slots):
    method database_results_for_agent (line 168) | def database_results_for_agent(self, current_slots):
    method suggest_slot_values (line 175) | def suggest_slot_values(self, request_slots, current_slots):

FILE: src/deep_dialog/dialog_system/state_tracker.py
  class StateTracker (line 14) | class StateTracker:
    method __init__ (line 17) | def __init__(self, act_set, slot_set, movie_dictionary):
    method initialize_episode (line 44) | def initialize_episode(self):
    method dialog_history_vectors (line 59) | def dialog_history_vectors(self):
    method dialog_history_dictionaries (line 64) | def dialog_history_dictionaries(self):
    method kb_results_for_state (line 69) | def kb_results_for_state(self):
    method get_state_for_agent (line 80) | def get_state_for_agent(self):
    method get_state_for_user (line 88) | def get_state_for_user(self):
    method get_suggest_slots_values (line 96) | def get_suggest_slots_values(self, request_slots):
    method get_current_kb_results (line 105) | def get_current_kb_results(self):
    method update (line 111) | def update(self, agent_action=None, user_action=None):

FILE: src/deep_dialog/dialog_system/utils.py
  function unique_states (line 12) | def unique_states(training_data):
  function contains (line 21) | def contains(unique, candidate_state):

FILE: src/deep_dialog/nlg/decoder.py
  class decoder (line 10) | class decoder:
    method __init__ (line 11) | def __init__(self, input_size, hidden_size, output_size):
    method get_struct (line 14) | def get_struct(self):
    method fwdPass (line 19) | def fwdPass(self, Xs, params, **kwargs):
    method bwdPass (line 22) | def bwdPass(self, dY, cache):
    method batchForward (line 27) | def batchForward(self, ds, batch, params, predict_mode = False):
    method batchBackward (line 42) | def batchBackward(self, dY, cache):
    method costFunc (line 54) | def costFunc(self, ds, batch, params):
    method singleBatch (line 104) | def singleBatch(self, ds, batch, params):
    method eval (line 152) | def eval(self, ds, split, params):
    method predict (line 203) | def predict(self, ds, split, params):
    method post_process (line 219) | def post_process(self, pred_template, slot_val_dict, slot_dict):

FILE: src/deep_dialog/nlg/lstm_decoder_tanh.py
  class lstm_decoder_tanh (line 13) | class lstm_decoder_tanh(decoder):
    method __init__ (line 14) | def __init__(self, diaact_input_size, input_size, hidden_size, output_...
    method fwdPass (line 32) | def fwdPass(self, Xs, params, **kwargs):
    method forward (line 105) | def forward(self, dict, Xs, params, **kwargs):
    method beam_forward (line 199) | def beam_forward(self, dict, Xs, params, **kwargs):
    method bwdPass (line 313) | def bwdPass(self, dY, cache):
    method prepare_input_rep (line 383) | def prepare_input_rep(self, ds, batch, params):

FILE: src/deep_dialog/nlg/nlg.py
  class nlg (line 18) | class nlg:
    method __init__ (line 19) | def __init__(self):
    method post_process (line 22) | def post_process(self, pred_template, slot_val_dict, slot_dict):
    method convert_diaact_to_nl (line 50) | def convert_diaact_to_nl(self, dia_act, turn_msg):
    method translate_diaact (line 76) | def translate_diaact(self, dia_act):
    method load_nlg_model (line 135) | def load_nlg_model(self, model_path):
    method diaact_to_nl_slot_filling (line 160) | def diaact_to_nl_slot_filling(self, dia_act, template_sentence):
    method load_predefine_act_nl_pairs (line 183) | def load_predefine_act_nl_pairs(self, path):
  function main (line 194) | def main(params):

FILE: src/deep_dialog/nlg/utils.py
  function initWeights (line 11) | def initWeights(n,d):
  function mergeDicts (line 17) | def mergeDicts(d0, d1):

FILE: src/deep_dialog/nlu/bi_lstm.py
  class biLSTM (line 13) | class biLSTM(SeqToSeq):
    method __init__ (line 14) | def __init__(self, input_size, hidden_size, output_size):
    method fwdPass (line 34) | def fwdPass(self, Xs, params, **kwargs):
    method bwdPass (line 130) | def bwdPass(self, dY, cache):

FILE: src/deep_dialog/nlu/lstm.py
  class lstm (line 13) | class lstm(SeqToSeq):
    method __init__ (line 14) | def __init__(self, input_size, hidden_size, output_size):
    method fwdPass (line 28) | def fwdPass(self, Xs, params, **kwargs):
    method bwdPass (line 83) | def bwdPass(self, dY, cache):

FILE: src/deep_dialog/nlu/nlu.py
  class nlu (line 15) | class nlu:
    method __init__ (line 16) | def __init__(self):
    method generate_dia_act (line 19) | def generate_dia_act(self, annot):
    method load_nlu_model (line 47) | def load_nlu_model(self, model_path):
    method parse_str_to_vector (line 74) | def parse_str_to_vector(self, string):
    method parse_nlu_to_diaact (line 92) | def parse_nlu_to_diaact(self, nlu_vector, string):
    method refine_diaact_by_rules (line 160) | def refine_diaact_by_rules(self, diaact):
    method diaact_penny_string (line 177) | def diaact_penny_string(self, dia_act):

FILE: src/deep_dialog/nlu/seq_seq.py
  class SeqToSeq (line 11) | class SeqToSeq:
    method __init__ (line 12) | def __init__(self, input_size, hidden_size, output_size):
    method get_struct (line 15) | def get_struct(self):
    method fwdPass (line 20) | def fwdPass(self, Xs, params, **kwargs):
    method bwdPass (line 23) | def bwdPass(self, dY, cache):
    method batchForward (line 28) | def batchForward(self, ds, batch, params, predict_mode = False):
    method batchBackward (line 43) | def batchBackward(self, dY, cache):
    method costFunc (line 55) | def costFunc(self, ds, batch, params):
    method singleBatch (line 105) | def singleBatch(self, ds, batch, params):
    method eval (line 153) | def eval(self, ds, split, params):

FILE: src/deep_dialog/nlu/utils.py
  function initWeights (line 11) | def initWeights(n,d):
  function mergeDicts (line 17) | def mergeDicts(d0, d1):

FILE: src/deep_dialog/qlearning/dqn.py
  class DQN (line 10) | class DQN:
    method __init__ (line 12) | def __init__(self, input_size, hidden_size, output_size):
    method getStruct (line 28) | def getStruct(self):
    method fwdPass (line 33) | def fwdPass(self, Xs, params, **kwargs):
    method bwdPass (line 76) | def bwdPass(self, dY, cache):
    method batchForward (line 115) | def batchForward(self, batch, params, predict_mode = False):
    method batchDoubleForward (line 132) | def batchDoubleForward(self, batch, params, clone_dqn, predict_mode = ...
    method batchBackward (line 155) | def batchBackward(self, dY, cache):
    method costFunc (line 168) | def costFunc(self, batch, params, clone_dqn):
    method singleBatch (line 231) | def singleBatch(self, batch, params, clone_dqn):
    method predict (line 280) | def predict(self, Xs, params, **kwargs):

FILE: src/deep_dialog/qlearning/dqn_torch.py
  class DQN (line 9) | class DQN(nn.Module):
    method __init__ (line 10) | def __init__(self, input_size, hidden_size, output_size):
    method forward (line 20) | def forward(self, x):
    method predict (line 25) | def predict(self, x):

FILE: src/deep_dialog/qlearning/utils.py
  function initWeight (line 11) | def initWeight(n,d):
  function mergeDicts (line 17) | def mergeDicts(d0, d1):

FILE: src/deep_dialog/usersims/user_model.py
  class SimulatorModel (line 9) | class SimulatorModel(nn.Module):
    method __init__ (line 10) | def __init__(self,
    method forward (line 25) | def forward(self, s, a):
    method predict (line 36) | def predict(self, s, a):

FILE: src/deep_dialog/usersims/usersim.py
  class UserSimulator (line 12) | class UserSimulator:
    method __init__ (line 15) | def __init__(self, movie_dict=None, act_set=None, slot_set=None, start...
    method initialize_episode (line 28) | def initialize_episode(self):
    method next (line 38) | def next(self, system_action, *argv):
    method set_nlg_model (line 41) | def set_nlg_model(self, nlg_model):
    method set_nlu_model (line 44) | def set_nlu_model(self, nlu_model):
    method add_nl_to_action (line 47) | def add_nl_to_action(self, user_action):

FILE: src/deep_dialog/usersims/usersim_model.py
  class ModelBasedSimulator (line 15) | class ModelBasedSimulator(UserSimulator):
    method __init__ (line 18) | def __init__(self, movie_dict=None, act_set=None, slot_set=None, start...
    method initialize_episode (line 55) | def initialize_episode(self):
    method _sample_action (line 78) | def _sample_action(self):
    method _sample_goal (line 123) | def _sample_goal(self, goal_set):
    method prepare_user_goal_representation (line 129) | def prepare_user_goal_representation(self, user_goal):
    method sample_from_buffer (line 144) | def sample_from_buffer(self, batch_size):
    method train (line 158) | def train(self, batch_size=1, num_batches=1):
    method train_by_iter (line 191) | def train_by_iter(self, batch_size=1, num_batches=1):
    method next (line 221) | def next(self, s, a):
    method predict (line 273) | def predict(self, s, a):
    method register_user_goal (line 276) | def register_user_goal(self, goal):
    method action_index (line 279) | def action_index(self, act_slot_response):
    method register_experience_replay_tuple (line 300) | def register_experience_replay_tuple(self, s_t, agent_a_t, s_tplus1, r...
    method prepare_state_representation (line 326) | def prepare_state_representation(self, state):

FILE: src/deep_dialog/usersims/usersim_rule.py
  class RuleSimulator (line 20) | class RuleSimulator(UserSimulator):
    method __init__ (line 23) | def __init__(self, movie_dict=None, act_set=None, slot_set=None, start...
    method initialize_episode (line 41) | def initialize_episode(self):
    method _sample_action (line 70) | def _sample_action(self):
    method _sample_goal (line 113) | def _sample_goal(self, goal_set):
    method get_goal (line 119) | def get_goal(self):
    method corrupt (line 123) | def corrupt(self, user_action):
    method debug_falk_goal (line 152) | def debug_falk_goal(self):
    method next (line 169) | def next(self, system_action):
    method response_confirm_answer (line 222) | def response_confirm_answer(self, system_action):
    method response_thanks (line 243) | def response_thanks(self, system_action):
    method response_request (line 273) | def response_request(self, system_action):
    method response_multiple_choice (line 324) | def response_multiple_choice(self, system_action):
    method response_inform (line 337) | def response_inform(self, system_action):
  function main (line 451) | def main(params):

FILE: src/draw_learning_curve.py
  function read_performance_records (line 13) | def read_performance_records(path):
  function load_performance_file (line 22) | def load_performance_file(path):
  function draw_learning_curve (line 38) | def draw_learning_curve(numbers):
  function main (line 51) | def main(params):

FILE: src/run.py
  function save_model (line 304) | def save_model(path, agt, success_rate, agent, best_epoch, cur_epoch):
  function save_performance_records (line 318) | def save_performance_records(path, agt, records):
  function simulation_epoch (line 332) | def simulation_epoch(simulation_epoch_size):
  function simulation_epoch_for_training (line 360) | def simulation_epoch_for_training(simulation_epoch_size, grounded_for_mo...
  function warm_start_simulation (line 398) | def warm_start_simulation():
  function warm_start_simulation_preload (line 438) | def warm_start_simulation_preload():
  function run_episodes (line 449) | def run_episodes(count, status):
Condensed preview — 64 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,942K chars).
[
  {
    "path": "Bash_figure_4.sh",
    "chars": 3075,
    "preview": "#Below is the script used for figure 4\nfor ((i=1; i<= 5; i++));do\nlet \"seed=$i*100\"\npython run.py --agt 9 \\\n--usr 1 --ma"
  },
  {
    "path": "Bash_figure_5.sh",
    "chars": 2581,
    "preview": "#Below is the script used for figure 5\n\n##DQN 10, upper bound\nfor ((i=1; i<= 5; i++));do\nlet \"seed=$i*100\"\npython run.py"
  },
  {
    "path": "LICENSE",
    "chars": 1116,
    "preview": "MIT License\r\n\r\nCopyright (c) 2018 WISELab, MiuLab and Microsoft Research\r\n\r\nPermission is hereby granted, free of charge"
  },
  {
    "path": "README.md",
    "chars": 5640,
    "preview": "# Deep Dyna-Q: Integrating Planning for Task-Completion Dialogue Policy Learning\n*An implementation of the  \n[Deep Dyna-"
  },
  {
    "path": "src/deep_dialog/__init__.py",
    "chars": 1,
    "preview": "#"
  },
  {
    "path": "src/deep_dialog/agents/__init__.py",
    "chars": 82,
    "preview": "from .agent_cmd import *\r\nfrom .agent_baselines import *\r\nfrom .agent_dqn import *"
  },
  {
    "path": "src/deep_dialog/agents/agent.py",
    "chars": 4846,
    "preview": "\"\"\"\r\nCreated on May 17, 2016\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\nfrom deep_dialog import dialog_config\r\n\r\nclass Agent:\r\n "
  },
  {
    "path": "src/deep_dialog/agents/agent_baselines.py",
    "chars": 6445,
    "preview": "\"\"\"\r\nCreated on May 25, 2016\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\nimport copy, random\r\nfrom deep_dialog import dialog_conf"
  },
  {
    "path": "src/deep_dialog/agents/agent_cmd.py",
    "chars": 6197,
    "preview": "\"\"\"\r\nCreated on May 17, 2016\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\n\r\nfrom agent import Agent\r\n\r\nclass AgentCmd(Agent):\r\n   "
  },
  {
    "path": "src/deep_dialog/agents/agent_dqn.py",
    "chars": 17956,
    "preview": "'''\r\nCreated on Oct 30, 2017\r\n\r\nAn DQN Agent modified for DDQ Agent\r\n\r\nSome methods are not consistent with super class "
  },
  {
    "path": "src/deep_dialog/checkpoints/temp_run1/agt_9_performance_records.json",
    "chars": 19963,
    "preview": "{\"ave_turns\": {\"0\": 32.76, \"1\": 42.0, \"2\": 12.56, \"3\": 4.0, \"4\": 5.52, \"5\": 14.2, \"6\": 21.92, \"7\": 16.28, \"8\": 22.32, \"9"
  },
  {
    "path": "src/deep_dialog/checkpoints/temp_run2/agt_9_performance_records.json",
    "chars": 10312,
    "preview": "{\"ave_turns\": {\"0\": 42.0, \"1\": 18.28, \"2\": 9.08, \"3\": 12.24, \"4\": 15.64, \"5\": 8.96, \"6\": 15.28, \"7\": 8.4, \"8\": 3.04, \"9\""
  },
  {
    "path": "src/deep_dialog/data/count_uniq_slots.py",
    "chars": 257,
    "preview": "import json, cPickle\r\ngoals = cPickle.load(open('user_goals_first_turn_template.part.movie.v1.p'))\r\n\r\nslots = []\r\nfor i "
  },
  {
    "path": "src/deep_dialog/data/dia_act_nl_pairs.v6.json",
    "chars": 101947,
    "preview": "{\r\n  \"dia_acts\": {\r\n    \"inform\": [\r\n      {\r\n        \"request_slots\": [], \r\n        \"nl\": {\r\n          \"agt\": \"$moviena"
  },
  {
    "path": "src/deep_dialog/data/dia_acts.txt",
    "chars": 118,
    "preview": "request\r\ninform\r\nconfirm_question\r\nconfirm_answer\r\ngreeting\r\nclosing\r\nmultiple_choice\r\nthanks\r\nwelcome\r\ndeny\r\nnot_sure"
  },
  {
    "path": "src/deep_dialog/data/dicts.v3.json",
    "chars": 28937,
    "preview": "(dp1\r\nS'city'\r\np2\r\n(lp3\r\nS'hamilton'\r\np4\r\naS'manville'\r\np5\r\naS'bridgewater'\r\np6\r\naS'seattle'\r\np7\r\naS'bellevue'\r\np8\r\naS'b"
  },
  {
    "path": "src/deep_dialog/data/dicts.v3.p",
    "chars": 28937,
    "preview": "(dp1\r\nS'city'\r\np2\r\n(lp3\r\nS'hamilton'\r\np4\r\naS'manville'\r\np5\r\naS'bridgewater'\r\np6\r\naS'seattle'\r\np7\r\naS'bellevue'\r\np8\r\naS'b"
  },
  {
    "path": "src/deep_dialog/data/human_huamn_data_framed.json",
    "chars": 607903,
    "preview": "{\r\n  \"6cdda7d7-5f47-4e1a-9ac7-062df28eb09e\": {\r\n    \"0\": {\r\n      \"message\": [\r\n        [\r\n          \"request\", \r\n      "
  },
  {
    "path": "src/deep_dialog/data/human_huamn_data_framed_agent_first_turn.json",
    "chars": 661929,
    "preview": "{\r\n  \"bde2a4ed-00a5-45db-8fd5-dd78548944a2\": {\r\n    \"1\": {\r\n      \"message\": [\r\n        [\r\n          \"inform\", \r\n       "
  },
  {
    "path": "src/deep_dialog/data/movie_kb.1k.json",
    "chars": 173485,
    "preview": "(dp1\r\nI0\r\n(dp2\r\nS'city'\r\np3\r\nS'hamilton'\r\np4\r\nsS'theater'\r\np5\r\nS'manville 12 plex'\r\np6\r\nsS'zip'\r\np7\r\nS'08835'\r\np8\r\nsS'cr"
  },
  {
    "path": "src/deep_dialog/data/movie_kb.1k.p",
    "chars": 173485,
    "preview": "(dp1\r\nI0\r\n(dp2\r\nS'city'\r\np3\r\nS'hamilton'\r\np4\r\nsS'theater'\r\np5\r\nS'manville 12 plex'\r\np6\r\nsS'zip'\r\np7\r\nS'08835'\r\np8\r\nsS'cr"
  },
  {
    "path": "src/deep_dialog/data/movie_kb.v2.json",
    "chars": 122971,
    "preview": "(dp1\r\nI1\r\n(dp2\r\nS'city'\r\np3\r\nS'tulare'\r\np4\r\nsS'theater'\r\np5\r\nS'regal visalia stadium 10'\r\np6\r\nsS'starttime_real'\r\np7\r\nS'"
  },
  {
    "path": "src/deep_dialog/data/movie_kb.v2.p",
    "chars": 122902,
    "preview": "(dp1\r\nI1\r\n(dp2\r\nS'city'\r\np3\r\nS'tulare'\r\np4\r\nsS'theater'\r\np5\r\nS'regal visalia stadium 10'\r\np6\r\nsS'moviename'\r\np7\r\nS'10 cl"
  },
  {
    "path": "src/deep_dialog/data/slot_set.txt",
    "chars": 308,
    "preview": "actor\r\nactress\r\ncity\r\nclosing\r\ncritic_rating\r\ndate\r\ndescription\r\ndistanceconstraints\r\ngenre\r\ngreeting\r\nimplicit_value\r\nm"
  },
  {
    "path": "src/deep_dialog/data/slot_set_small.txt",
    "chars": 167,
    "preview": "city\r\nclosing\r\ndate\r\ndistanceconstraints\r\ngreeting\r\nmoviename\r\nnumberofpeople\r\ntaskcomplete\r\nprice\r\nstarttime\r\nstate\r\nth"
  },
  {
    "path": "src/deep_dialog/data/user_goals.json",
    "chars": 55367,
    "preview": "[\r\n  {\r\n    \"request_slots\": {\r\n      \"ticket\": \"UNK\", \r\n      \"moviename\": \"UNK\"\r\n    }, \r\n    \"inform_slots\": {\r\n     "
  },
  {
    "path": "src/deep_dialog/data/user_goals_all_turns_template.p",
    "chars": 87734,
    "preview": "(lp1\r\n(dp2\r\nS'request_slots'\r\np3\r\n(dp4\r\nS'moviename'\r\np5\r\nS'UNK'\r\np6\r\nssS'diaact'\r\np7\r\nS'request'\r\np8\r\nsS'inform_slots'\r"
  },
  {
    "path": "src/deep_dialog/data/user_goals_first_turn_template.part.movie.v1.p",
    "chars": 30273,
    "preview": "(lp1\r\n(dp2\r\nS'request_slots'\r\np3\r\n(dp4\r\nsS'diaact'\r\np5\r\nS'request'\r\np6\r\nsS'inform_slots'\r\np7\r\n(dp8\r\nS'city'\r\np9\r\nS'birmi"
  },
  {
    "path": "src/deep_dialog/data/user_goals_first_turn_template.v2.p",
    "chars": 44031,
    "preview": "(lp1\r\n(dp2\r\nS'request_slots'\r\np3\r\n(dp4\r\nS'date'\r\np5\r\nS'UNK'\r\np6\r\nsS'theater'\r\np7\r\ng6\r\nsS'moviename'\r\np8\r\ng6\r\nsS'starttim"
  },
  {
    "path": "src/deep_dialog/data/user_goals_ids.json",
    "chars": 8802,
    "preview": "[\r\n  \"6cdda7d7-5f47-4e1a-9ac7-062df28eb09e\", \r\n  \"07e18f3d-812d-4148-acca-88b3c0c0661d\", \r\n  \"8e94d520-5209-4e9a-8f24-44"
  },
  {
    "path": "src/deep_dialog/dialog_config.py",
    "chars": 7392,
    "preview": "'''\r\nCreated on May 17, 2016\r\n\r\n@author: xiul, t-zalipt\r\n'''\r\n\r\nsys_inform_slots_for_user = ['city', 'closing', 'date', "
  },
  {
    "path": "src/deep_dialog/dialog_system/__init__.py",
    "chars": 135,
    "preview": "from .kb_helper import *\r\nfrom .state_tracker import *\r\nfrom .dialog_manager import *\r\nfrom .dict_reader import *\r\nfrom "
  },
  {
    "path": "src/deep_dialog/dialog_system/dialog_manager.py",
    "chars": 9276,
    "preview": "\"\"\"\r\nCreated on May 17, 2016\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\nimport json\r\nfrom . import StateTracker\r\nfrom deep_dialo"
  },
  {
    "path": "src/deep_dialog/dialog_system/dict_reader.py",
    "chars": 413,
    "preview": "\"\"\"\r\nCreated on May 18, 2016\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\n\r\ndef text_to_dict(path):\r\n    \"\"\" Read in a text file a"
  },
  {
    "path": "src/deep_dialog/dialog_system/kb_helper.py",
    "chars": 8886,
    "preview": "\"\"\"\r\nCreated on May 18, 2016\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\nimport copy\r\nfrom collections import defaultdict\r\nfrom d"
  },
  {
    "path": "src/deep_dialog/dialog_system/state_tracker.py",
    "chars": 10703,
    "preview": "\"\"\"\r\nCreated on May 20, 2016\r\n\r\nstate tracker\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\nfrom . import KBHelper\r\nimport numpy as"
  },
  {
    "path": "src/deep_dialog/dialog_system/utils.py",
    "chars": 694,
    "preview": "\"\"\"\r\nCreated on May 25, 2016\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\nimport numpy as np\r\n####################################"
  },
  {
    "path": "src/deep_dialog/models/nlg/convert.py",
    "chars": 132,
    "preview": "import cPickle\r\nmodel=cPickle.load(open('lstm_tanh_relu_[1468202263.38]_2_0.610.p'))\r\ncPickle.dump(model,open('model.bin"
  },
  {
    "path": "src/deep_dialog/models/nlu/convert.py",
    "chars": 126,
    "preview": "import cPickle\r\nmodel=cPickle.load(open('lstm_[1468447442.91]_39_80_0.921.p'))\r\ncPickle.dump(model,open('model.bin.nlu',"
  },
  {
    "path": "src/deep_dialog/nlg/__init__.py",
    "chars": 40,
    "preview": "from .utils import *\r\nfrom .nlg import *"
  },
  {
    "path": "src/deep_dialog/nlg/decoder.py",
    "chars": 9081,
    "preview": "'''\r\nCreated on Jun 13, 2016\r\n\r\n@author: xiul\r\n'''\r\n\r\nfrom .utils import *\r\n\r\n\r\nclass decoder:\r\n    def __init__(self, i"
  },
  {
    "path": "src/deep_dialog/nlg/lstm_decoder_tanh.py",
    "chars": 15229,
    "preview": "'''\r\nCreated on Jun 13, 2016\r\n\r\nAn LSTM decoder - add tanh after cell before output gate\r\n\r\n@author: xiul\r\n'''\r\n\r\nfrom ."
  },
  {
    "path": "src/deep_dialog/nlg/nlg.py",
    "chars": 8616,
    "preview": "'''\r\nCreated on Oct 17, 2016\r\n\r\n--dia_act_nl_pairs.v6.json: agt and usr have their own NL.\r\n\r\n\r\n@author: xiul\r\n'''\r\n\r\nim"
  },
  {
    "path": "src/deep_dialog/nlg/utils.py",
    "chars": 467,
    "preview": "'''\r\nCreated on Jun 13, 2016\r\n\r\n@author: xiul\r\n'''\r\n\r\nimport math\r\nimport numpy as np\r\n\r\n\r\ndef initWeights(n,d):\r\n    \"\""
  },
  {
    "path": "src/deep_dialog/nlu/__init__.py",
    "chars": 73,
    "preview": "from .nlu import nlu\r\nfrom .bi_lstm import biLSTM\r\nfrom .lstm import lstm"
  },
  {
    "path": "src/deep_dialog/nlu/bi_lstm.py",
    "chars": 8249,
    "preview": "'''\r\nCreated on Jun 13, 2016\r\n\r\nAn Bidirectional LSTM Seq2Seq model\r\n\r\n@author: xiul\r\n'''\r\n\r\nfrom .seq_seq import SeqToS"
  },
  {
    "path": "src/deep_dialog/nlu/lstm.py",
    "chars": 4543,
    "preview": "'''\r\nCreated on Jun 13, 2016\r\n\r\nAn LSTM decoder - add tanh after cell before output gate\r\n\r\n@author: xiul\r\n'''\r\n\r\nfrom s"
  },
  {
    "path": "src/deep_dialog/nlu/nlu.py",
    "chars": 7805,
    "preview": "'''\r\nCreated on Jul 13, 2016\r\n\r\n@author: xiul\r\n'''\r\n\r\nimport cPickle as pickle\r\nimport copy\r\nimport numpy as np\r\n\r\nfrom "
  },
  {
    "path": "src/deep_dialog/nlu/seq_seq.py",
    "chars": 7153,
    "preview": "'''\r\nCreated on Jun 13, 2016\r\n\r\n@author: xiul\r\n'''\r\n\r\nfrom .utils import *\r\nimport time, os\r\n\r\n\r\nclass SeqToSeq:\r\n    de"
  },
  {
    "path": "src/deep_dialog/nlu/utils.py",
    "chars": 467,
    "preview": "'''\r\nCreated on Jun 13, 2016\r\n\r\n@author: xiul\r\n'''\r\n\r\nimport math\r\nimport numpy as np\r\n\r\n\r\ndef initWeights(n,d):\r\n    \"\""
  },
  {
    "path": "src/deep_dialog/qlearning/__init__.py",
    "chars": 46,
    "preview": "from .utils import *\r\nfrom .dqn_torch import *"
  },
  {
    "path": "src/deep_dialog/qlearning/dqn.py",
    "chars": 9329,
    "preview": "'''\r\nCreated on Jun 18, 2016\r\n\r\n@author: xiul\r\n'''\r\n\r\nfrom .utils import *\r\n\r\n\r\nclass DQN:\r\n    \r\n    def __init__(self,"
  },
  {
    "path": "src/deep_dialog/qlearning/dqn_torch.py",
    "chars": 718,
    "preview": "import torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torch.nn.functional as F\n\nfrom torch.autograd impo"
  },
  {
    "path": "src/deep_dialog/qlearning/utils.py",
    "chars": 451,
    "preview": "'''\r\nCreated on Jun 18, 2016\r\n\r\n@author: xiul\r\n'''\r\n\r\nimport numpy as np\r\nimport math\r\n\r\n\r\ndef initWeight(n,d):\r\n    sca"
  },
  {
    "path": "src/deep_dialog/usersims/__init__.py",
    "chars": 57,
    "preview": "from .usersim_rule import *\r\nfrom .usersim_model import *"
  },
  {
    "path": "src/deep_dialog/usersims/user_model.py",
    "chars": 1382,
    "preview": "import torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torch.nn.functional as F\n\nfrom torch.autograd impo"
  },
  {
    "path": "src/deep_dialog/usersims/usersim.py",
    "chars": 1874,
    "preview": "\"\"\"\r\nCreated on June 7, 2016\r\n\r\na rule-based user simulator\r\n\r\n@author: xiul, t-zalipt\r\n\"\"\"\r\n\r\nimport random\r\n\r\n\r\nclass "
  },
  {
    "path": "src/deep_dialog/usersims/usersim_model.py",
    "chars": 18386,
    "preview": "from .usersim import UserSimulator\r\nimport argparse, json, random, copy, sys\r\nimport numpy as np\r\nfrom user_model import"
  },
  {
    "path": "src/deep_dialog/usersims/usersim_rule.py",
    "chars": 23853,
    "preview": "\"\"\"\r\nCreated on May 14, 2016\r\n\r\na rule-based user simulator\r\n\r\n-- user_goals_first_turn_template.revised.v1.p: all goals"
  },
  {
    "path": "src/draw_learning_curve.py",
    "chars": 2159,
    "preview": "'''\r\nCreated on Nov 3, 2016\r\n\r\ndraw a learning curve\r\n\r\n@author: xiul\r\n'''\r\n\r\nimport argparse, json\r\nimport matplotlib.p"
  },
  {
    "path": "src/run.py",
    "chars": 23648,
    "preview": "\"\"\"\nCreated on May 22, 2016\n\nThis should be a simple minimalist run file. It's only responsibility should be to parse th"
  }
]

// ... and 3 more files (download for full content)

About this extraction

This page contains the full source code of the MiuLab/DDQ GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 64 files (55.7 MB), approximately 630.6k tokens, and a symbol index with 204 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!