예제 #1
0
	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)
예제 #2
0
	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 ]