python 利用已有Ner模型进行数据清洗合并代码
我就废话不多说了,直接上代码吧!
#-*-coding:utf-8-*- fromkashgari.corpusimportDataReader importre fromtqdmimporttqdm defcut_text(text,lenth): textArr=re.findall('.{'+str(lenth)+'}',text) textArr.append(text[(len(textArr)*lenth):]) returntextArr defclean_data(source_file,target_file,ner_model): data_x,data_y=DataReader().read_conll_format_file(source_file) withtqdm(total=len(data_x))aspbar: foridx,text_arrayinenumerate(data_x): iflen(text_array)<=100: ners=ner_model.predict([text_array]) ner=ners[0] else: texts=cut_text(''.join(text_array),100) ners=[] fortextintexts: ner=ner_model.predict([[charforcharintext]]) ners=ners+ner[0] ner=ners #print('[-----------------------',idx,len(data_x)) #print(data_y[idx]) #print(ner) forjdx,tinenumerate(text_array): ifner[jdx].startswith('B')orner[jdx].startswith('I'): ifdata_y[idx][jdx]=='O': data_y[idx][jdx]=ner[jdx] #print(data_y[idx]) #print('-----------------------]') pbar.update(1) f=open(target_file,'a',encoding="utf-8") foridx,text_arrayinenumerate(data_x): ifidx!=0: f.writelines(['\n']) forjdx,tinenumerate(text_array): text=t+''+data_y[idx][jdx] ifidx==0andjdx==0: text=text else: text='\n'+text f.writelines([text]) f.close() data_x2,data_y2=DataReader().read_conll_format_file(source_file) print(data_x==data_x2,len(data_y)==len(data_y2),'数据清洗完成')
#-*-coding:utf-8-*- importkashgari fromdata_toolsimportclean_data time_ner=kashgari.utils.load_model('time_ner.h5') clean_data('./data/example.dev','example.dev',time_ner)
以上这篇python利用已有Ner模型进行数据清洗合并代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。