def initialize(self, args=None):
        """
        Initialize the Slot Filling dialogue State (e.g. at the start of a
        dialogue). Reset filled slots, slot queries, entropies, and other
        structures.

        :param args:
        :return:
        """
        self.slots_filled = dict.fromkeys(self.slots)
        self.slot_queries = {}
        self.system_requestable_slot_entropies = {}
        self.requested_slot = ''

        self.user_acts = None
        self.is_terminal_state = False
        self.system_made_offer = False

        # TODO: Have a list of past items in focus - e.g. current and 2 past
        # items
        # If the agent is a user, then this structure will store information
        # that the system has provided.
        self.item_in_focus = None
        self.db_result = None

        self.db_matches_ratio = 1.0
        self.last_sys_acts = None
        self.turn = 0
        self.num_dontcare = 0

        # NOTE: This is ONLY used if an agent plays the role of the user
        if args and 'goal' in args:
            self.user_goal = deepcopy(args['goal'])
        else:
            self.user_goal = None

        Initialize the Slot Filling dialogue State (e.g. at the start of a
        dialogue). Reset filled slots, slot queries, entropies, and other
        structures.

        :param args:
        :return:
        
plato/dialogue/state.py