Created
July 22, 2018 10:29
-
-
Save touhi99/60eb00ae2c7c56e88976126910771261 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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