def get_new_nodel(nl,flg): # tag model, node list, tag model(if any) # get new nodel list by the crf tag # return: [(nodel, diff_node)] # todo find kbest one by one changed and record the diff,done nodel_l=[] i=0 while i<len(flg): if flg[i]!=3: new_nl=nl[:i] if flg[i]==0:#####BBBBB###### a=node() a.son=[nl[i],nl[i+1]] a.head=nl[i].head a.head_pos=nl[i].head_pos #new_nl=nl[:i] new_nl.append(a) new_nl+=nl[i+2:] #nodel_l.append(a) i+=1 elif flg[i]==1:####EEEEE### a=node() a.son=[nl[i],nl[i+1]] a.head=nl[i+1].head a.head_pos=nl[i+1].head_pos #new_nl=nl[:i] new_nl.append(a) new_nl+=nl[i+2:] #nodel_l.append(a) i+=1 elif flg[i]==2:############SSSS###### a=node() a.son=[nl[i]] a.head=nl[i].head a.head_pos=nl[i].head_pos #new_nl=nl[:i] new_nl.append(a) new_nl+=nl[i+1:] #nodel_l.append(a) else: print '?' if flg[i]==2: # fts=get_tag_feature_final(ts,ind,type_tag) fts=get_tag_feature_final(nl,i,1) nodel_l.append((new_nl,i,fts))# new node list, diff son else: # todo,attention!!!!!!<<i-1>> fts=get_tag_feature_final(nl,i-1,2) nodel_l.append((new_nl,i-1,fts))# new node list, diff son #nodel_l[-1].tag=ntag else: pass #nodel_l.append(nl[i]) i+=1 ################todo,notify return nodel_l
def get_new_tag_main(ts,ind,type_tag): tmp_file=pwd_path+'files/tmp_crf.tag' fts=get_tag_feature_final(ts,ind,type_tag) write_file(tmp_file,'\t'.join(fts).encode('utf8')) res=get_tag_main(tmp_file) #print res[0][0][0] return res[0][0][0]