Skip to content

Instantly share code, notes, and snippets.

@touhi99
Created July 22, 2018 10:29
Show Gist options
  • Save touhi99/60eb00ae2c7c56e88976126910771261 to your computer and use it in GitHub Desktop.
Save touhi99/60eb00ae2c7c56e88976126910771261 to your computer and use it in GitHub Desktop.
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]]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment