栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

命名实体识别数据集构建

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

命名实体识别数据集构建

命名实体有很多构建方式,这个代码是针对我所作的项目进行构建,方便我自己用,在使用中可以根据自己的方式进行修改,如有不懂可留言私信

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 = '02'.join(ori_list)
    train_df['clear_txt'][num] = tool_re
    lable_re = '02'.join(result_list)
    train_df['lable_txt'][num] = lable_re
print(train_df)
train_df.to_csv('clear_tra_new.txt')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768347.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号