Hi-ToM_Dataset / actions.py
umwyf's picture
Upload 14 files
acad479
raw
history blame
6.67 kB
import numpy as np
class Action(object):
def __init__(self, templates):
self.templates = templates
def render_declarative(self, *args):
assert 'declarative' in self.templates and \
len(self.templates['declarative']) > 0
return np.random.choice(self.templates['declarative']) % args
def render_interrogative(self, *args):
assert 'interrogative' in self.templates and \
len(self.templates['interrogative']) > 0, str(self.templates)
return np.random.choice(self.templates['interrogative']) % args
class ExistBeginning(Action):
def __init__(self):
templates = {
'interrogative': [
'Where was the %s at the beginning?\t%s',
'Where was the %s before?\t%s',
]
}
super().__init__(templates)
class Exist(Action):
def __init__(self):
templates = {
'interrogative': [
'Where is the %s?\t%s',
'Where is the %s located?\t%s',
]
}
super().__init__(templates)
class PlaceAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s placed the %s in the %s.',
'%s put the %s in the %s.',
],
'interrogative': [
'Where did %s place the %s?\t%s',
'Where did %s put the %s?\t%s',
]
}
super().__init__(templates)
class SearchAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s searched for the %s in the %s.',
'%s looked for the %s in the %s.',
],
'interrogative': [
'Where did %s search for the %s?\t%s',
'Where did %s look for the %s?\t%s',
],
}
super().__init__(templates)
class TransportAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s shifted the %s from the %s to the %s.',
],
}
super().__init__(templates)
class EnterAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s entered the %s.',
'%s came into the %s.',
],
}
super().__init__(templates)
class ExitAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s exited the %s.',
'%s left the %s.',
'%s went out of the %s.',
],
}
super().__init__(templates)
class BelieveLocationAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s thinks the %s is in the %s.',
'%s believes the %s is in the %s.',
],
'interrogative': [
'Where does %s think the %s is?\t%s',
'Where does %s believe the %s is?\t%s',
],
}
super().__init__(templates)
class BelieveAgentBelieveLocationAction(Action):
def __init__(self):
templates = {
'interrogative': [
'Where does %s think that %s believes the %s is?\t%s',
'Where does %s believe that %s believes the %s is?\t%s',
'Where does %s think that %s thinks the %s is?\t%s',
'Where does %s believe that %s thinks the %s is?\t%s',
],
}
super().__init__(templates)
class BelieveAgentSearchLocationAction(Action):
def __init__(self):
templates = {
'interrogative': [
'Where does %s think that %s looks for the %s?\t%s',
'Where does %s believe that %s looks for the %s?\t%s',
'Where does %s think that %s searches for the %s?\t%s',
'Where does %s believe that %s search for the %s?\t%s',
],
}
super().__init__(templates)
class InformLocationAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s told %s that the %s is in the %s.',
'%s informed %s that the %s is in the %s.',
],
}
super().__init__(templates)
####################################################
####### Deterministic Actions for New Task #######
####################################################
class FirstQ(Action):
def __init__(self):
templates = {
'interrogative': [
'Where will %s look for the %s?\t%s',
]
}
super().__init__(templates)
class SecondQ(Action):
def __init__(self):
templates = {
'interrogative': [
'Where does %s think that %s searches for the %s?\t%s',
]
}
super().__init__(templates)
class ZeroQ(Action):
def __init__(self):
templates = {
'interrogative': [
'Where is the %s really?\t%s',
]
}
super().__init__(templates)
class MemoryAction(Action):
def __init__(self):
templates = {
'interrogative': [
'Where was the %s at the beginning?\t%s',
]
}
super().__init__(templates)
class LocationAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s and %s are in the %s.',
]
}
super().__init__(templates)
class ObjectLocAction(Action):
def __init__(self):
templates = {
'declarative': [
'The %s is in the %s.',
]
}
super().__init__(templates)
class ExitedAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s exited the %s.',
]
}
super().__init__(templates)
class MoveAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s moved the %s to the %s.',
]
}
super().__init__(templates)
class TellAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s told %s where the %s is.',
]
}
super().__init__(templates)
class EnterAction(Action):
def __init__(self):
templates = {
'declarative': [
'%s entered the %s.',
]
}
super().__init__(templates)