diff --git a/convlab/policy/mle/loader.py b/convlab/policy/mle/loader.py index 9c10d2a7a3841efb55ba418e5cf56708e4e94b7d..5af5ddf34c7be5504b5a714e0fdc3dc7b07acf3d 100755 --- a/convlab/policy/mle/loader.py +++ b/convlab/policy/mle/loader.py @@ -105,7 +105,8 @@ class PolicyDataVectorizer: state['terminated'] = data_point['terminated'] if self.dst is not None and state['terminated']: self.dst.init_session() - state['booked'] = data_point['booked'] + if "booked" in data_point: + state['booked'] = data_point['booked'] dialogue_act = flatten_acts(data_point['dialogue_acts']) vectorized_state, mask = self.vector.state_vectorize(state) diff --git a/convlab/policy/vector/vector_binary.py b/convlab/policy/vector/vector_binary.py index c6b02a1122adac3002ad1e32dd1f495046d0e6be..e444dec262cc8c8bd39307c09ca9d0600ee8728b 100755 --- a/convlab/policy/vector/vector_binary.py +++ b/convlab/policy/vector/vector_binary.py @@ -47,8 +47,15 @@ class VectorBinary(VectorBase): opp_act_vec = self.vectorize_user_act(state) last_act_vec = self.vectorize_system_act(state) belief_state, domain_active_dict = self.vectorize_belief_state(state, domain_active_dict) - book = self.vectorize_booked(state) - degree, number_entities_dict = self.pointer() + if "booked" in state: + book = self.vectorize_booked(state) + else: + book = [] + if self.db is not None: + degree, number_entities_dict = self.pointer() + else: + degree = [] + number_entities_dict = {} final = 1. if state['terminated'] else 0. state_vec = np.r_[opp_act_vec, last_act_vec, @@ -82,13 +89,14 @@ class VectorBinary(VectorBase): belief_state = np.zeros(self.belief_state_dim) i = 0 for domain in self.belief_domains: - for slot, value in state['belief_state'][domain].items(): - if value: - belief_state[i] = 1. - i += 1 - - if [slot for slot, value in state['belief_state'][domain].items() if value]: - domain_active_dict[domain] = True + if domain in state['belief_state']: + for slot, value in state['belief_state'][domain].items(): + if value: + belief_state[i] = 1. + i += 1 + + if [slot for slot, value in state['belief_state'][domain].items() if value]: + domain_active_dict[domain] = True return belief_state, domain_active_dict def vectorize_system_act(self, state): diff --git a/convlab/util/analysis_tool/analyzer.py b/convlab/util/analysis_tool/analyzer.py index 5163bee1e151b3d8855a481222d753a862f1f783..82284ec85d87033648e0a30017b71cb8cf5921c0 100755 --- a/convlab/util/analysis_tool/analyzer.py +++ b/convlab/util/analysis_tool/analyzer.py @@ -156,7 +156,7 @@ class Analyzer: break task_success = sess.evaluator.task_success() - task_complete = sess.user_agent.policy.policy.goal.task_complete() + task_complete = sess.evaluator.complete book_rate = sess.evaluator.book_rate() stats = sess.evaluator.inform_F1()