对BERT分词之后的文本序列进行BIO标注

先记录一下,有时间再写具体过程。
关注“编程ABC”,每天进步一点点~
在这里插入图片描述

待标注文本(text.txt):

河南宏光正商置业有限公司2019年非公开发行公司债券(第一期)(品种二)定于2019123日起在本所综合协议交易平台进行转让,现将有关事项通知如下:河南宏光正商置业有限公司2019年非公开发行公司债券(第一期)(品种二)证券代码“114613”,证券简称“19正商02”,发行总额7.5亿元,票面利率7.2%,债券期限3年,附第1年末和第2年末发行人调整票面利率选择权及投资者回售选择权。深圳证券交易所二○一九年十一月二十九日
荣盛石化股份有限公司2019年面向合格投资者公开发行绿色公司债券(第一期)定于2019122日起在本所集中竞价系统和综合协议交易平台同时交易,现将有关事项通知如下:荣盛石化股份有限公司2019年面向合格投资者公开发行绿色公司债券(第一期)证券代码“112914”,证券简称“19荣盛G1”,发行总额10亿元,票面利率5.42%,债券期限2年。特此通知深圳证券交易所二○一九年十一月二十九日

经BERT分字之后的待标注文本(token_text.txt):

河 南 宏 光 正 商 置 业 有 限 公 司 2019 年 非 公 开 发 行 公 司 债 券 ( 第 一 期 ) ( 品 种 二 ) 定 于 2019123 日 起 在 本 所 综 合 协 议 交 易 平 台 进 行 转 让 , 现 将 有 关 事 项 通 知 如 下 : 河 南 宏 光 正 商 置 业 有 限 公 司 2019 年 非 公 开 发 行 公 司 债 券 ( 第 一 期 ) ( 品 种 二 ) 证 券 代 码 [UNK] 114 ##61 ##3 [UNK] , 证 券 简 称 [UNK] 19 正 商 02 [UNK] , 发 行 总 额 7 . 5 亿 元 , 票 面 利 率 7 . 2 % , 债 券 期 限 3 年 , 附 第 1 年 末 和 第 2 年 末 发 行 人 调 整 票 面 利 率 选 择 权 及 投 资 者 回 售 选 择 权 。 深 圳 证 券 交 易 所 二 ○ 一 九 年 十 一 月 二 十 九 日
荣 盛 石 化 股 份 有 限 公 司 2019 年 面 向 合 格 投 资 者 公 开 发 行 绿 色 公 司 债 券 ( 第 一 期 ) 定 于 2019122 日 起 在 本 所 集 中 竞 价 系 统 和 综 合 协 议 交 易 平 台 同 时 交 易 , 现 将 有 关 事 项 通 知 如 下 : 荣 盛 石 化 股 份 有 限 公 司 2019 年 面 向 合 格 投 资 者 公 开 发 行 绿 色 公 司 债 券 ( 第 一 期 ) 证 券 代 码 [UNK] 112 ##91 ##4 [UNK] , 证 券 简 称 [UNK] 19 荣 盛 g1 [UNK] , 发 行 总 额 10 亿 元 , 票 面 利 率 5 . 42 % , 债 券 期 限 2 年 。 特 此 通 知 深 圳 证 券 交 易 所 二 ○ 一 九 年 十 一 月 二 十 九 日

标注字典(dict.txt):

注:标注字典是通过其他工具从待标注文本中得到,如借助结巴分词词性标注。

河南宏光正商置业有限公司
荣盛石化股份有限公司

标注代码:

def labeling():
    dict_list = []
    token_list = []
    token_label_list = []
    text_list = []
    with open('./dict.txt', 'r', encoding='utf-8')as f:
        for line in f.readlines():
            dict_list.append(line.strip())
    with open('./text.txt', 'r', encoding='utf-8')as f1:
        for line in f1.readlines():
            text_list.append(line.strip())
    with open('./text_token.txt', 'r', encoding='utf-8')as f2:
        for line in f2.readlines():
            token_list.append(line.strip())
    assert len(dict_list) == len(text_list) == len(token_list)
    ff = open('./token_label.txt', 'w', encoding='utf-8')
    #cnt = 0
    for token, dict_Bio, text in zip(token_list, dict_list, text_list):
        word_list = token.strip().split(' ')
        label_list = ['O' for i in range(len(word_list))]
        index = -1
        index = text.find(dict_Bio)
        print(index)
        #cnt+=1
        #if cnt ==8:break

        for j in range(len(word_list)):
            if word_list[j].startswith('#'):
                label_list[j] = '[##WordPiece]'

        if index >= 0:
            label_list[index] = 'B-ORG'
            for i in range(index+1, len(dict)+index):
                label_list[i] = 'I-ORG'
        #print(*label_list,len(label_list))
        label_text = ''
        for label in label_list:
            label_text += label + ' '
        token_label_list.append(label_text.strip())
        ff.write(label_text + '\n')
    ff.close()

标注好的label(token_label.txt):

B-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O [##WordPiece] [##WordPiece] O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 
B-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O [##WordPiece] [##WordPiece] O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 

猜你喜欢

转载自blog.csdn.net/broccoli2/article/details/106002698