我用的标注工具是YEDDA:https://github.com/jiesutd/YEDDA,挺好用的。
右侧就是我自己修改的标签,实时保存很方便。他自己也带了转换的功能,如果符合你的要求可以用,我是想要BIO格式的,就自己敲了几行代码,一开始接触的同学可以借鉴嘻嘻。
import re
f = open("E:\命名实体识别实验数据\数据拆分\\train.txt.ann","r",encoding='utf-8')//插入自己的文件路径
line = f.readline()
line = line[:-1]
list2 = []
while line:
line = f.readline()
line = line[:-1]
p5 = re.compile(r'[@||$](.*?)[#]', re.S)
p6 = re.compile(r'[#](.*?)[*]', re.S)
p7 = re.findall(p5, line)
print(p7)
p8 = re.findall(p6, line)
print(p8)
list1 = re.sub(r'[[](.*?)[]]', '+', line)
# print(list1)
sum = 0
for str in list1:
if str != '+':
str = str + ' O'
# print(str)
list2.append(str)
else:
sum += 1
a = 0
if(len(p7)>sum - 1):
for j in p7[sum - 1]:
if a == 0:
# print(j + ' B-' + p4[sum - 1])
list2.append(j + ' B-' + p8[sum - 1])
else:
# print(j + ' I-' + p4[sum - 1])
list2.append(j + ' I-' + p8[sum - 1])
a += 1
else:
print(p7)
continue
# print(list)
with open("../gen/ner/train.txt","w",encoding='utf-8') as w:
for i in list2:
if(i!=' O')://如果为空不存
if(i=='。 '+'O')://以句号断句
w.write('\n')
else:
w.write(i)
w.write('\n')
else:
continue
之前看有人找这种就分享下,写的垃圾勿喷