def _parse_userPref(self, chktree): if self.vb: print "Called _parse_userPref(chktree):- EntitySet" ## what will be returned: entSet = EntitySet("userPreference", self.vb) entSet = self._parse_entity_pairs(chktree, entSet) if entSet.count_entities() == 0: ## If there aren't any entity pairs ## Then perhaps this isn't a userPref utterance. ## Return Unknown for the DM. entSet = EntitySet("unknown") return self._expandMultiEntitySets(entSet)
def _parse_as_who(self, chktree): if self.vb: print "Called _parse_as_who(chktree):- EntitySet" entSet = EntitySet("trivia", self.vb) negation = False looking_for = 'person' for x in chktree: if self._isLeaf(x): negation = self._negator(self._getLeafTxt(x), negation) keyword = None if self._getLeafTos(x) == "KW_DIRECTOR": keyword = 'director' elif self._getLeafTos(x) == "KW_STAR": keyword = 'actor' if keyword: if not entSet.has_entity('type'): entSet.add_entity('type', keyword) else: looking_for = keyword else: if x.node == "TITLE": entSet.add_entity2("movieTitle", self._getTreeTxt(x), negation) negation = False elif x.node == "PERSON": personName = self._getTreeTxt(x) if not entSet.has_entity('type'): entSet.add_entity('type', 'person') entSet.add_entity('character', personName) else: entSet.add_entity2(looking_for, personName, negation) negation = False if entSet.count_entities() == 0: #empty entitySet -> unable to parse utterance -> let DM know entSet.change_classifier("unknown") elif not entSet.has_entity('type'): entSet.add_entity('type', 'person') return [ entSet ]