命名实体有很多构建方式,这个代码是针对我所作的项目进行构建,方便我自己用,在使用中可以根据自己的方式进行修改,如有不懂可留言私信
import pandas as pd
cer_type = ['工程施工合同', '拍摄合作协议', '印刷合同', '加工协议书', '空调采购合同', '学校学购置大型宣传栏合同书', '绿化苗木采购种植合同',
'车辆买卖合同', '借款协议', '购销合同', '政府采购合同', '健康教育采购合同书', '供货合同', 'KD07硬件设计、开发合同', '技术开发(委托)合同']
per_j = ['中节能财务有限公司', '天津市养颜堂生物技术有限公司', '李逵', '驻马店市场市管理局', '新蔡县洪汝河治理工程建设管理局',
'栾川县中等职业学院附属幼儿园', '驻马店市第二十一小学', '确山县三里河街道中心学校', '山西科杰农业机械制造有限公司', '张三',
'驻马店市新乾沣印刷有限公司', '遂平县淼淼电子科技有限公司', '江西昌宇医疗器域有限公司', '三亚市教育局', '云南得森现代农业装备有限公司', '中国电信集团系统集成有限责任公司黑龙江分公司',
'中国电信[集团系统集成有限责任公司黑龙江分]公司', '四川省注册会计师协会']
per_y = ['新蔡县普道科技贸易有限公司', '确山县云华文具永平销售部', '山西诚林建设工程有限公司', '王宁', '中如建工建团有限公司',
'栾川县城关镇得住电器门市', '驻马店广播电视台', '山东中科时代生物科技有限公司', '驻马店市四季青园林花木有限公司',
'中山迪欧家具实业有限公司', '古城中学', '丹赛县农业局', '深圳市壁望实业有限公司', '镇远县人民医院', '四川科道芯国智能技术股份有限公司', '[四川科道芯国智能技术股份有限公司]',
'四川科道芯国智能技术股份有限公司', '成都亿橙科技有限公司']
contract_data = ['2019年12月19日', '2017年10月25日', '2018年4月18日', '2018年4月25日', '2012年7月15日', '2020年3月20日', '2021年12月31日']
cer_number = ['XF180822-0563', 'ISCT2018-0011', 'DS20180801', 'wy20211122']
money_big = ['贰拾壹万玖任伍佰贰拾元整', '伍万陆仟元整', '叁佰壹拾贰万壹仟叁佰零玖元', '叁万叁仟陆佰抑拾伍元整', '拾捌万柒仟叁佰贰拾圆整', '壹佰捌拾柒万叁仟贰佰', '壹拾伍万元整', '肆万伍仟元整',
'三万元整', '肆万贰仟玖佰元整']
money_small = ['219520.00元', '3121309.00元', '33685元', '187320.00元', '1873200.00元', '150000元', '45000元', '30000元',
'1,873,200.00元', '187,320.00元', '2369.440元']
train_df = pd.read_csv('./data/train.txt', header=None, names=['txt'])
train_df['clear_txt'] = ''
train_df['lable_txt'] = ''
def cal_base(text, result_list, type_list, type_flag, type_flag_end):
per_j_str = []
per_j_end = []
for i in type_list:
if text.find(i) != -1:
# print(i)
# print(text.find(i), int(text.find(i) + len(i)))
per_j_str.append(text.find(i))
per_j_end.append(int(text.find(i) + len(i) - 1))
per_j_dict = {'per_j_str': per_j_str, 'per_j_end': per_j_end}
for i in range(len(per_j_str)):
for j in range(per_j_dict['per_j_str'][i], per_j_dict['per_j_end'][i] + 1):
result_list[j] = type_flag_end
result_list[per_j_dict['per_j_str'][i]] = type_flag
return result_list
for num, text in enumerate(train_df['txt']):
text = text.replace(' ', '').replace('\r', '')
ori_list = []
result_list = []
for i, j in enumerate(text):
ori_list.append(j)
result_list.append('O')
print(ori_list)
result_list = cal_base(text, result_list, cer_type, 'T-B', 'T-I')
result_list = cal_base(text, result_list, per_j, 'J-B', 'J-I')
result_list = cal_base(text, result_list, per_y, 'Y-B', 'Y-I')
result_list = cal_base(text, result_list, contract_data, 'D-B', 'D-I')
result_list = cal_base(text, result_list, cer_number, 'N-B', 'N-I')
result_list = cal_base(text, result_list, money_big, 'MB-B', 'MB-I')
result_list = cal_base(text, result_list, money_small, 'MS-B', 'MS-I')
tool_re = '\002'.join(ori_list)
train_df['clear_txt'][num] = tool_re
lable_re = '\002'.join(result_list)
train_df['lable_txt'][num] = lable_re
print(train_df)
train_df.to_csv('clear_tra_new.txt')
|