#python #tagging #named-entity-recognition
#python #тегирование #распознавание именованных объектов
Вопрос:
У меня есть более ТОЧНЫЕ данные в формате списка.
Пример данных:
[[('Silica', 'NN', '_', 'B-Material'),
('nanoparticles', 'NNS', '_', 'I-Material'),
('possessing', 'VBG', '_', 'O'),
('three', 'CD', '_', 'B-Data'),
('different', 'JJ', '_', 'I-Data'),
('diameters', 'NNS', '_', 'I-Data'),
('(', '(', '_', 'I-Data'),
('23', 'CD', '_', 'I-Data'),
(',', ',', '_', 'I-Data'),
('74', 'CD', '_', 'I-Data'),
('and', 'CC', '_', 'I-Data'),
('170', 'CD', '_', 'I-Data'),
('nm', 'NN', '_', 'I-Data'),
(')', ')', '_', 'I-Data'),
('were', 'VBD', '_', 'O'),
('used', 'VBN', '_', 'O'),
('to', 'TO', '_', 'O'),
('modify', 'NN', '_', 'B-Process'),
('a', 'DT', '_', 'B-Material'),
('piperidine', 'NN', '_', 'I-Material'),
('-', ':', '_', 'I-Material'),
('cured', 'VBN', '_', 'I-Material'),
('epoxy', 'NN', '_', 'I-Material'),
('polymer', 'NN', '_', 'I-Material'),
('.', '.', '_', 'O')],
[('Fracture', 'NN', '_', 'B-Process'),
('tests', 'NNS', '_', 'I-Process'),
('were', 'VBD', '_', 'O'),
('performed', 'VBN', '_', 'B-Process'),
('and', 'CC', '_', 'O'),
('values', 'NNS', '_', 'B-Data'),
('of', 'IN', '_', 'I-Data'),
('the', 'DT', '_', 'I-Data'),
('toughness', 'NN', '_', 'I-Data'),
('increased', 'VBN', '_', 'B-Process'),
('steadily', 'RB', '_', 'I-Process'),
('as', 'IN', '_', 'O'),
('the', 'DT', '_', 'B-Data'),
('concentration', 'NN', '_', 'I-Data'),
('of', 'IN', '_', 'O'),
('silica', 'NN', '_', 'B-Material'),
('nanoparticles', 'NNS', '_', 'I-Material'),
('was', 'VBD', '_', 'O'),
('increased', 'VBN', '_', 'B-Process'),
('.', '.', '_', 'O')]]
Мне нужно преобразовать его в формат данных CoNLL-2003 NER и сохранить в текстовом файле. Мой реализованный код работает не так, как ожидалось. Моя реализация:
name= 'coll2003_train_com.txt'
def data_format(name, seq):
test = []
for i in seq:
for j in i:
test.append(j)
with open(name, 'w', encoding="utf-8") as f1:
for i in test:
ii='t'.join(i)
f1.writelines(ii '/n')
#f1.writelines('/n')
return test
m=data_format(name, cc1)
Результаты сохраняются в текстовом файле в одном предложении, а не в отдельных строках.
Комментарии:
1. Каким будет ожидаемый результат, пожалуйста, добавьте пример.
Ответ №1:
Попробуйте это :
In [9]: fp = open(name, 'w')
In [10]: for i in data:
...: for j in i:
...: fp.write('t'.join(list(j)) 'n')
...:
In [11]: fp.close()