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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。