Ejemplo n.º 1
0
	def find_feature_for_row(self, feature_list, feature_name_list, x, y, yy, np1, np2):
		np1_parts = np1.split(' ')
		if np1 == np2:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: if the nps are the same")
		if np2.startswith(np1_parts[0]) or np2.endswith(np1_parts[len(np1_parts) - 1]):
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: if np has the same begging or head")
		if math_modifiers.check_for_unit(np1) != '000' and math_modifiers.check_for_unit(np2) != '000':
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: if both nps are units")
		if math_modifiers.check_for_unit(np1) != '000' or math_modifiers.check_for_unit(np2) != '000':
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: if one of the nps is unit")
		if math_modifiers.check_for_unit(np1) != math_modifiers.check_for_unit(np2) and math_modifiers.check_for_unit(np2) != '000':
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: if both nps are same units")
		self.calc_wordsim_feature(feature_list, feature_name_list, np1, np2)
		cosigne = self.find_the_cosinge(np1, np2, 300)
		feature_list.append(cosigne)
		feature_name_list.append("row feature: cosigne of nps")
		if y in self.number_cells and yy in self.number_cells:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: both index are number cells.")
		if y in self.number_cells or yy in self.number_cells:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: one index are number cells.")
		if (y in self.number_cells and yy  not in self.number_cells) or (yy in self.number_cells and y not in self.number_cells):
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("row feature: exactly one index are number cells.")
		if self.have_same_head(np1, np2) == 1:
			feature_list.append(1)
			feature_list.append(self.find_the_cosinge(self.same_head_noun_phrases_ms[self.same_head_noun_phrases.index(np1)], self.same_head_noun_phrases_ms[self.same_head_noun_phrases.index(np2)], 300))
		else:
			feature_list.append(-1)
			feature_list.append(0)
		feature_name_list.append("row feature: the nps have same head")
		feature_name_list.append("row feature: the cosigne between the adj")
		return (feature_list, feature_name_list)
Ejemplo n.º 2
0
 def calc_merge_unit_features(self, feature_list, feature_name_list, chain1,
                              chain2):
     chain1_all_unit = True
     chain1_has_unit = False
     for np1 in chain1:
         if math_modifiers.check_for_unit(np1) != '000':
             chain1_has_unit = True
         else:
             chain1_all_unit = False
     chain2_has_unit = False
     chain2_all_unit = True
     for np2 in chain2:
         if math_modifiers.check_for_unit(np2) != '000':
             chain2_has_unit = True
         else:
             chain2_all_unit = False
     if chain1_has_unit == True and chain2_has_unit == True:
         feature_list.append(1)
     else:
         feature_list.append(-1)
     feature_name_list.append("chain 1 has unit and chain 2 has unit")
     if chain1_has_unit == True or chain2_has_unit == True:
         feature_list.append(1)
     else:
         feature_list.append(-1)
     feature_name_list.append("chain 1 has unit or chain 2 has unit")
     if chain1_all_unit == True and chain2_all_unit == True:
         feature_list.append(1)
     else:
         feature_list.append(-1)
     feature_name_list.append(
         "chain 1 is all units and chain 2 is all units")
     if chain1_all_unit == True or chain2_all_unit == True:
         feature_list.append(1)
     else:
         feature_list.append(-1)
     feature_name_list.append("chain 1 is all units or chain2 is all units")
     return (feature_list, feature_name_list)
Ejemplo n.º 3
0
	def find_feature_for_cell(self, feature_list, feature_name_list, x, y, word_in_cell):
		if word_in_cell in self.repeated_noun_phrases:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("cell feature: if np in cell is repeated")
		if word_in_cell in self.noun_phrase_with_counts:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("cell feature: if np in cell has count")
		if math_modifiers.check_for_unit(word_in_cell) != '000':
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("cell feature: if np in cell is unit")
		if '%' in word_in_cell:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("cell feature: if percent is in np")
		if '-' in word_in_cell:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("cell feature: if np in cell has - in it")
		if y in self.number_cells:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("cell feature: if the cell is a number cell")
		if word_in_cell in self.noun_phrases_in_question:
			feature_list.append(1)
		else:
			feature_list.append(-1)
		feature_name_list.append("cell feature: if np in cell is a np questioned about")
		return (feature_list, feature_name_list)
Ejemplo n.º 4
0
def find_unit_type(np1):
    return math_modifiers.check_for_unit(np1)
Ejemplo n.º 5
0
 def find_unit_type(self, np1):
     if len(np1.split(' ')) > 1:
         parts = np1.split(' ')
         return math_modifiers.check_for_unit(parts[len(parts) - 1])
     return math_modifiers.check_for_unit(np1)
Ejemplo n.º 6
0
	def find_unit_type(self, np1):
		if len(np1.split(' ')) > 1:
			head_np1, modifier_np1 = self.parse_np(np1)
			return math_modifiers.check_for_unit(head_np1)
		return math_modifiers.check_for_unit(np1)