in E2E_TOD/reader.py [0:0]
def aspan_to_act_list(self, aspan):
aspan = aspan.split() if isinstance(aspan, str) else aspan
acts = []
domain = None
conslen = len(aspan)
for idx, cons in enumerate(aspan):
cons = self.vocab.decode(cons) if type(cons) is not str else cons
if cons == '<eos_a>':
break
if '[' in cons and cons[1:-1] in ontology.dialog_acts:
domain = cons[1:-1]
elif '[' in cons and cons[1:-1] in ontology.dialog_act_params:
if domain is None:
continue
vidx = idx+1
if vidx == conslen:
acts.append(domain+'-'+cons[1:-1]+'-none')
break
vt = aspan[vidx]
vt = self.vocab.decode(vt) if type(vt) is not str else vt
no_param_act = True
while vidx < conslen and vt != '<eos_a>' and '[' not in vt:
no_param_act = False
acts.append(domain+'-'+cons[1:-1]+'-'+vt)
vidx += 1
if vidx == conslen:
break
vt = aspan[vidx]
vt = self.vocab.decode(vt) if type(vt) is not str else vt
if no_param_act:
acts.append(domain+'-'+cons[1:-1]+'-none')
return acts