diff --git a/convlab2/util/multiwoz/lexicalize.py b/convlab2/util/multiwoz/lexicalize.py index 14227b8c66745163e40c32876ea9ea13914a0a49..f57cd6080ac573e641da1809bb89e8e24d9c5433 100755 --- a/convlab2/util/multiwoz/lexicalize.py +++ b/convlab2/util/multiwoz/lexicalize.py @@ -48,17 +48,28 @@ def lexicalize_da(meta, entities, state, requestable, cur_domain=None): for pair in v: pair[1] = '?' elif intent.lower() in ['nooffer', 'nobook']: + booking = False if domain.lower() in ['booking']: if cur_domain and cur_domain in entities: domain = cur_domain + booking = True else: continue for pair in v: - slot = REF_SYS_DA[domain][pair[0]] - if slot in state[domain.lower()]['semi']: - pair[1] = state[domain.lower()]['semi'][slot] + if not booking: + if pair[0] in REF_SYS_DA[domain]: + slot = REF_SYS_DA[domain][pair[0]] + if slot in state[domain.lower()]['semi']: + pair[1] = state[domain.lower()]['semi'][slot] + else: + pair[1] = 'none' else: - pair[1] = 'none' + if pair[0] in REF_SYS_DA['Booking']: + slot = REF_SYS_DA['Booking'][pair[0]] + if slot in state[domain.lower()]['book']: + pair[1] = state[domain.lower()]['book'][slot] + else: + pair[1] = 'none' else: if domain.lower() in ['booking']: if cur_domain and cur_domain in entities: