def infer_features(self, x, y): self.func_filter_dict = {} self.reg_exp = [] reg_exp ='ct{}pt{}' self.reg_exp.append(lambda x_j, cur_tag, prev_tag, i,reg_exp=reg_exp: reg_exp.format(cur_tag,prev_tag)) for y1 in self.unique_y: for y2 in self.unique_y: new_func = lambda words,curr_tag,prev_tag,i,y1=y1,y2=y2 : features.bigram_tag_label(words, curr_tag, prev_tag, i, tag=y1,tag2=y2) self.func_list.append(new_func) self.func_filter_dict[reg_exp.format(y1,y2)] = len(self.func_list) - 1 for ind in range(-1,2): reg_exp = 'ct{}w{}i{}' self.reg_exp.append(lambda x_j, cur_tag, prev_tag, i,reg_exp=reg_exp,ind=ind: reg_exp.format(cur_tag,x_j[i-ind].lower(),ind)) for y1 in self.unique_y: for x1 in self.unique_x: new_func = lambda words,curr_tag,prev_tag,i,y1=y1,x1=x1,ind=ind : features.atomic_tag_label(words, curr_tag, prev_tag, i-ind, tag=y1,word=x1) self.func_list.append(new_func) self.func_filter_dict[reg_exp.format(y1,x1,ind)] = len(self.func_list) - 1 for slength in range(3,5): reg_exp = 'ct{}s{}l{}' self.reg_exp.append(lambda x_j, cur_tag, prev_tag, i,l=slength,reg_exp=reg_exp: reg_exp.format(cur_tag,x_j[i][-l:].lower(),l)) for y1 in self.unique_y: for x1 in self.unique_x: s = x1[-slength:] new_func = lambda words,curr_tag,prev_tag,i,suff_length=slength,suffix=s,tag=y1 : features.suffix(words, curr_tag, prev_tag, i, suff_length=suff_length,suffix=suffix,tag=y1) self.func_list.append(new_func) self.func_filter_dict[reg_exp.format(y1,s,slength)] = len(self.func_list) - 1
def infer_features(self, x, y): self.feat_labels = [] for x_j in self.unique_x: for y_j in self.unique_y: new_func = lambda words,curr_tag,prev_tag,i,y_j=y_j,x_j=x_j : features.atomic_tag_label(words, curr_tag, prev_tag, i, tag=y_j, word=x_j) self.func_list.append(new_func) self.feat_labels.append((x_j,y_j)) #self.func_list = self.func_list[:20] #self.feat_labels = self.feat_labels[:20] for y1 in self.unique_y: for y2 in self.unique_y: new_func = lambda words,curr_tag,prev_tag,i,y1=y1,y2=y2 : features.bigram_tag_label(words, curr_tag, prev_tag, i, tag=y1,tag2=y2) self.func_list.append(new_func) self.feat_labels.append((y1,y2)) #self.func_list = self.func_list[-20:] #self.feat_labels = self.feat_labels[-20:] self.func_list = self.func_list[-200:-195] self.feat_labels = self.feat_labels[-200:-195]
def infer_features(self, x, y): self.func_filter_dict = {} self.reg_exp = [] reg_exp = "ct{}pt{}" self.reg_exp.append(lambda x_j, cur_tag, prev_tag, i, reg_exp=reg_exp: reg_exp.format(cur_tag, prev_tag)) for y1 in self.unique_y: for y2 in self.unique_y: new_func = lambda words, curr_tag, prev_tag, i, y1=y1, y2=y2: features.bigram_tag_label( words, curr_tag, prev_tag, i, tag=y1, tag2=y2 ) self.func_list.append(new_func) self.func_filter_dict[reg_exp.format(y1, y2)] = len(self.func_list) - 1 for ind in range(-1, 2): reg_exp = "ct{}w{}i{}" self.reg_exp.append( lambda x_j, cur_tag, prev_tag, i, reg_exp=reg_exp, ind=ind: reg_exp.format( cur_tag, x_j[i - ind].lower(), ind ) ) for y1 in self.unique_y: for x1 in self.unique_x: new_func = lambda words, curr_tag, prev_tag, i, y1=y1, x1=x1, ind=ind: features.atomic_tag_label( words, curr_tag, prev_tag, i - ind, tag=y1, word=x1 ) self.func_list.append(new_func) self.func_filter_dict[reg_exp.format(y1, x1, ind)] = len(self.func_list) - 1 for slength in range(3, 5): reg_exp = "ct{}s{}l{}" self.reg_exp.append( lambda x_j, cur_tag, prev_tag, i, l=slength, reg_exp=reg_exp: reg_exp.format( cur_tag, x_j[i][-l:].lower(), l ) ) for y1 in self.unique_y: for x1 in self.unique_x: s = x1[-slength:] new_func = lambda words, curr_tag, prev_tag, i, suff_length=slength, suffix=s, tag=y1: features.suffix( words, curr_tag, prev_tag, i, suff_length=suff_length, suffix=suffix, tag=y1 ) self.func_list.append(new_func) self.func_filter_dict[reg_exp.format(y1, s, slength)] = len(self.func_list) - 1