Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def feature_template(self, state, sentence):
- feature_list = np.empty((0), int)
- stack = state.stack
- buffer = state.buffer
- ld = state.ld
- rd = state.rd
- form = sentence.form
- pos = sentence.pos
- lemma = sentence.lemma
- morph = sentence.morph
- head = state.arcs
- if stack:
- s0 = stack[-1]
- feature_list = np.append(feature_list, self.get_feature("s0_form="+form[s0]))
- feature_list = np.append(feature_list, self.get_feature("s0_pos="+pos[s0]))
- feature_list = np.append(feature_list, self.get_feature("s0_lemma="+lemma[s0]))
- feature_list = np.append(feature_list, self.get_feature("s0_form_pos="+form[s0]+pos[s0]))
- feature_list = np.append(feature_list, self.get_feature("s0_lemma_pos="+lemma[s0]+pos[s0]))
- if head[s0]>=0:
- feature_list = np.append(feature_list, self.get_feature("head_s0_form="+form[head[s0]]))
- feature_list = np.append(feature_list, self.get_feature("head_s0_pos="+pos[head[s0]]))
- if ld[s0]>=0:
- feature_list = np.append(feature_list, self.get_feature("ld_s0_form="+form[ld[s0]]))
- feature_list = np.append(feature_list, self.get_feature("ld_s0_pos="+pos[ld[s0]]))
- if rd[s0]>=0:
- feature_list = np.append(feature_list, self.get_feature("rd_s0_form="+form[rd[s0]]))
- feature_list = np.append(feature_list, self.get_feature("rd_s0_pos="+pos[rd[s0]]))
- if len(stack)>1:
- s1 = stack[-2]
- feature_list = np.append(feature_list, self.get_feature("s1_form="+form[s1]))
- feature_list = np.append(feature_list, self.get_feature("s1_pos="+pos[s1]))
- feature_list = np.append(feature_list, self.get_feature("s1_form_pos="+form[s1]+pos[s1]))
- if morph:
- feature_list = np.append(feature_list, self.get_feature("s0_morph="+morph[s0]))
- if buffer:
- b0 = buffer[0]
- feature_list = np.append(feature_list, self.get_feature("b0_form="+form[b0]))
- feature_list = np.append(feature_list, self.get_feature("b0_pos="+pos[b0]))
- feature_list = np.append(feature_list, self.get_feature("b0_lemma="+lemma[b0]))
- feature_list = np.append(feature_list, self.get_feature("b0_form_pos="+form[b0]+pos[b0]))
- feature_list = np.append(feature_list, self.get_feature("b0_lemma_pos="+lemma[b0]+pos[b0]))
- if head[b0]>=0:
- feature_list = np.append(feature_list, self.get_feature("head_b0_form="+form[head[b0]]))
- feature_list = np.append(feature_list, self.get_feature("head_b0_pos="+pos[head[b0]]))
- if ld[b0]>=0:
- feature_list = np.append(feature_list, self.get_feature("ld_b0_form="+form[ld[b0]]))
- feature_list = np.append(feature_list, self.get_feature("ld_b0_pos="+pos[ld[b0]]))
- if rd[b0]>=0:
- feature_list = np.append(feature_list, self.get_feature("rd_b0_form="+form[rd[b0]]))
- feature_list = np.append(feature_list, self.get_feature("rd_b0_pos="+pos[rd[b0]]))
- if len(buffer)>1:
- b1 = buffer[1]
- feature_list = np.append(feature_list, self.get_feature("b1_form="+form[b1]))
- feature_list = np.append(feature_list, self.get_feature("b1_pos="+pos[b1]))
- feature_list = np.append(feature_list, self.get_feature("b1_form_pos="+form[b1]+pos[b1]))
- feature_list = np.append(feature_list, self.get_feature("b0_form+b1_form="+form[b0]+form[b1]))
- feature_list = np.append(feature_list, self.get_feature("b0_pos+b1_pos="+pos[b0]+pos[b1]))
- if stack:
- feature_list = np.append(feature_list, self.get_feature("b0_pos+b1_pos+s0_pos="+pos[b0]+pos[b1]+pos[stack[-1]]))
- if len(buffer)>2:
- b2 = buffer[2]
- feature_list = np.append(feature_list, self.get_feature("b2_pos="+pos[b2]))
- feature_list = np.append(feature_list, self.get_feature("b2_form="+form[b2]))
- feature_list = np.append(feature_list, self.get_feature("b2_form_pos="+form[b2]+pos[b2]))
- feature_list = np.append(feature_list, self.get_feature("b0_pos+b1_pos+b2_pos="+pos[b0]+pos[b1]+pos[b2]))
- if len(buffer)>3:
- b3 = buffer[3]
- feature_list = np.append(feature_list, self.get_feature("b3_pos="+pos[b3]))
- if morph:
- feature_list = np.append(feature_list, self.get_feature("b0_morph="+morph[b0]))
- feature_list = np.append(feature_list, self.get_feature("b0_pos_morph="+pos[b0]+morph[b0]))
- if stack and buffer:
- s0 = stack[-1]
- b0 = buffer[0]
- feature_list = np.append(feature_list, self.get_feature("s0_form_pos+b0_form_pos="+form[s0]+pos[s0]+form[b0]+pos[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_form_pos+b0_form="+form[s0]+pos[s0]+form[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_form+b0_form_pos="+form[s0]+form[b0]+pos[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_form_pos+b0_pos="+form[s0]+pos[s0]+pos[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_pos+b0_form_pos="+pos[s0]+form[b0]+pos[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_form+b0_form="+form[s0]+form[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_pos+b0_pos="+pos[s0]+pos[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_lemma+b0_lemma="+lemma[s0]+lemma[b0]))
- if morph:
- feature_list = np.append(feature_list, self.get_feature("s0_b0_morph="+morph[s0]+morph[b0]))
- feature_list = np.append(feature_list, self.get_feature("s0_b0_pos_morph="+pos[s0]+pos[b0]+morph[s0]+morph[b0]))
- if head[s0]>=0:
- feature_list = np.append(feature_list, self.get_feature("s0_pos+b0_pos+hd_s0_pos="+pos[s0]+pos[b0]+pos[head[s0]]))
- if ld[b0]>=0:
- feature_list = np.append(feature_list, self.get_feature("s0_pos+b0_pos+ld_s0_pos="+pos[s0]+pos[b0]+pos[ld[s0]]))
- feature_list = np.append(feature_list, self.get_feature("s0_pos+b0_pos+ld_b0_pos="+pos[s0]+pos[b0]+pos[ld[b0]]))
- if rd[b0]>=0:
- feature_list = np.append(feature_list, self.get_feature("s0_pos+b0_pos+rd_s0_pos="+pos[s0]+pos[b0]+pos[rd[s0]]))
- feature_list = np.append(feature_list, self.get_feature("s0_pos+b0_pos+rd_b0_pos="+pos[s0]+pos[b0]+pos[rd[b0]]))
Add Comment
Please, Sign In to add comment