def init_affordable_attributes()

in agent/affordance_extractors/lm_affordance_extractor.py [0:0]


    def init_affordable_attributes(self):
        # Create the affordable attributes, and load their detection verbs.
        attribute_detection_verbs = open(ATTR_DET_VERBS_PATH, encoding='utf-8-sig')
        lines = attribute_detection_verbs.readlines()
        attribute_detection_verbs.close()
        for line in lines:
            fields = line[:-1].split(',')
            affordable_attribute = AffordableAttribute(fields[0], fields[1:])
            self.affordable_attributes.append(affordable_attribute)
            self.affordable_attributes_by_name[affordable_attribute.attribute_name] = affordable_attribute

        # Cache more attribute information.
        affordable_attribute = self.affordable_attributes_by_name["portable"]
        affordable_attribute.known_actions_to_try = [Take]
        affordable_attribute.unknown_actions_to_exclude = ["take", "drop", "give", "put", "place", "set", "get", "leave"]
        affordable_attribute.known_action_extraction_threshold = 0.  # LmAffordanceExtractor thinks everything should be taken.

        affordable_attribute = self.affordable_attributes_by_name["edible"]
        affordable_attribute.known_actions_to_try = [Eat, Drink]
        affordable_attribute.unknown_actions_to_exclude = ["eat", "drink", "swallow", "consume"]

        affordable_attribute = self.affordable_attributes_by_name["moveable"]
        affordable_attribute.known_actions_to_try = [Move, Push, Pull, Lift]
        affordable_attribute.unknown_actions_to_exclude = ["move", "push", "pull", "drag", "lift"]

        affordable_attribute = self.affordable_attributes_by_name["switchable"]
        affordable_attribute.known_actions_to_try = [TurnOn]
        affordable_attribute.unknown_actions_to_exclude = ["turn on", "switch on", "turn off", "switch off", "start", "stop"]

        affordable_attribute = self.affordable_attributes_by_name["flammable"]
        affordable_attribute.known_actions_to_try = [Light]
        affordable_attribute.unknown_actions_to_exclude = ["light", "ignite", "extinguish"]

        affordable_attribute = self.affordable_attributes_by_name["openable"]
        affordable_attribute.known_actions_to_try = [Open]
        affordable_attribute.unknown_actions_to_exclude = ["open", "close", "shut"]

        affordable_attribute = self.affordable_attributes_by_name["lockable"]
        affordable_attribute.known_actions_to_try = [Unlock]
        affordable_attribute.unknown_actions_to_exclude = ["lock", "unlock"]

        affordable_attribute = self.affordable_attributes_by_name["container"]
        affordable_attribute.known_actions_to_try = [Search]
        affordable_attribute.unknown_actions_to_exclude = ["look in", "search", "search in", "empty", "fill", "fill up"]

        affordable_attribute = self.affordable_attributes_by_name["person"]
        affordable_attribute.known_actions_to_try = [Talk]
        affordable_attribute.unknown_actions_to_exclude = ["ask", "talk to", "help", "hug", "kiss", "bribe", "pay"]

        affordable_attribute = self.affordable_attributes_by_name["enemy"]
        affordable_attribute.known_actions_to_try = [Attack, Kill]
        affordable_attribute.unknown_actions_to_exclude = ["attack", "hit", "kill", "stab", "slay", "strangle", "fight", "strike", "shoot"]

        # Prepare the set of unknown actions to promote.
        self.unknown_actions_to_promote = {}
        for affordable_attribute in self.affordable_attributes:
            for unknown_action in affordable_attribute.unknown_actions_to_exclude:
                if unknown_action not in self.unknown_actions_to_promote:
                    self.unknown_actions_to_promote[unknown_action] = affordable_attribute.known_actions_to_try