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