读入train文件,文件已经经过BIO标记,格式为text label。
train文件内容如下所示(句中每个字间由空格隔开,text与label之间由若干空格组成,且每句话中text与label间的空格数不固定,每句话‘text+label’占一行):
扫 描 或 点 击 关 注 中 金 在 线 客 服 证 券 时 报 记 者 杨 丽 花 中 止 国 内 定 增 项 目 两 个 月 后 , 申 达 股 份 就 发 布 了 新 的 非 公 开 发 行 预 案 。 O O O O O O O B-ORG I-ORG I-ORG I-ORG O O O O O O O O B-PER I-PER I-PER O O O O O O O O O O O O O B-ORG I-ORG I-ORG I-ORG O O O O O O O O O O O O O O
根 据 《 2 0 1 7 年 非 公 开 发 行 A 股 股 票 预 案 》 称 , 拟 向 包 括 公 司 控 股 股 东 申 达 集 团 在 内 的 不 超 过 1 0 名 ( 含 1 0 名 ) 特 定 投 资 者 非 公 开 发 行 A 股 股 票 数 量 不 超 过 1 4 , 2 0 4 . 8 5 万 股 , 其 中 申 达 集 团 认 购 股 票 数 量 为 本 次 发 行 股 票 总 量 的 3 1 . 0 7 % , 募 集 资 金 总 额 不 超 过 2 1 . 5 6 亿 元 ( 含 发 行 费 用 ) , 募 集 资 金 扣 除 发 行 相 关 费 用 后 将 用 于 收 购 I A C 集 团 之 S T & A 业 务 相 关 资 产 , I A C 集 团 拟 将 上 述 资 产 注 入 新 设 的 A u r i a 公 司 , 由 申 达 股 份 通 过 申 达 英 国 公 司 认 购 A u r i a 公 司 7 0 % 的 股 份 。 O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 O O O O O O O O O O O O B-ORG I-ORG I-ORG I-ORG I-ORG 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 O O B-ORG I-ORG I-ORG I-ORG O O O O B-ORG I-ORG I-ORG I-ORG O O B-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
中 B-ORG
金 I-ORG
在 I-ORG
线 I-ORG
……
的格式(每行由一个字和一个标签组成,字与标签中间由空格隔开,字和标签的对应方式是每句话中‘字’的相应位置(第几个)与句子后跟的‘标签’的位置(第几个)对应,句与句之间用空行间隔),将转换后的结果保存到文件。
import re
with open("输出文件.txt","w",encoding="utf-8") as outfile:
with open("train.txt","r",encoding="utf-8") as fileObj:
for line in fileObj:
s = re.match(r'^(.+?)\s+([\-\w\s]+)$',line,re.S)
li1 = re.findall(r"\S+",s.group(1))
li2 = re.findall(r"\S+",s.group(2))
for w,k in zip(li1,li2):
print(w,k)
outfile.write(w+" "+k+"\n")
print()
outfile.write("\n")
用正则匹配,假如每句文本部分全部是句号结尾,标签部分全部以O开始结束,试试下面代码:
s='''扫 描 或 点 击 关 注 中 金 在 线 客 服 证 券 时 报 记 者 杨 丽 花 中 止 国 内 定 增 项 目 两 个 月 后 , 申 达 股 份 就 发 布 了 新 的 非 公 开 发 行 预 案 。 O O O O O O O B-ORG I-ORG I-ORG I-ORG O O O O O O O O B-PER I-PER I-PER O O O O O O O O O O O O O B-ORG I-ORG I-ORG I-ORG O O O O O O O O O O O O O O
根 据 《 2 0 1 7 年 非 公 开 发 行 A 股 股 票 预 案 》 称 , 拟 向 包 括 公 司 控 股 股 东 申 达 集 团 在 内 的 不 超 过 1 0 名 ( 含 1 0 名 ) 特 定 投 资 者 非 公 开 发 行 A 股 股 票 数 量 不 超 过 1 4 , 2 0 4 . 8 5 万 股 , 其 中 申 达 集 团 认 购 股 票 数 量 为 本 次 发 行 股 票 总 量 的 3 1 . 0 7 % , 募 集 资 金 总 额 不 超 过 2 1 . 5 6 亿 元 ( 含 发 行 费 用 ) , 募 集 资 金 扣 除 发 行 相 关 费 用 后 将 用 于 收 购 I A C 集 团 之 S T & A 业 务 相 关 资 产 , I A C 集 团 拟 将 上 述 资 产 注 入 新 设 的 A u r i a 公 司 , 由 申 达 股 份 通 过 申 达 英 国 公 司 认 购 A u r i a 公 司 7 0 % 的 股 份 。 O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O 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 O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 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 O O O O O O O O O O O O B-ORG I-ORG I-ORG I-ORG I-ORG 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 O O B-ORG I-ORG I-ORG I-ORG O O O O B-ORG I-ORG I-ORG I-ORG O O B-ORG I-ORG I-ORG I-ORG I-ORG I-ORG I-ORG O O O O O O O'''
import re
for item in s.split('\n'):
c1=re.findall('^(.*?)\s+O',item)[0].strip().split(' ')
c2 = re.findall('O.*O', item, re.M)[0].split(' ')
with open('results.txt','a',encoding='utf-8') as f:
for a, b in zip(c1, c2):
print(a, ' ', b, end='\n')
f.write(a+' '+b+'\n')
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y