NER: подготовленные данные для обучения
Я хочу попытаться решить задачу NER с данными Conll 2003. Я видел много информации о том, как готовить набор данных для обучения, но все это было по-другому и не было всеобъемлющим.
Во-первых, я преобразовываю эти данные в предложения
def read_file(path):
sentences = []
sentence = []
with open(path, "r", encoding="utf-8") as f:
f = f.read().split("\\n")
for line in f:
line = line.strip()
if line.startswith("b'-DOCSTART-"):
continue
elif len(line) == 0:
if len(sentence) > 0:
sentences.append(sentence)
sentence = []
continue
try:
sentence.append((" ".join(line.split(" ")[:-3]),
line.split(" ")[-3],
line.split(" ")[-2],
line.split(" ")[-1]))
except Exception as e:
print(e, "line: ", line)
if len(sentence) > 0:
sentences.append(sentence)
return sentences
Часть вывода выглядит как
[('EU', 'NNP', 'I-NP', 'I-ORG'),
('rejects', 'VBZ', 'I-VP', 'O'),
('German', 'JJ', 'I-NP', 'I-MISC'),
('call', 'NN', 'I-NP', 'O'),
('to', 'TO', 'I-VP', 'O'),
('boycott', 'VB', 'I-VP', 'O'),
('British', 'JJ', 'I-NP', 'I-MISC'),
('lamb', 'NN', 'I-NP', 'O'),
('.', '.', 'O', 'O')]
Какие последующие шаги конвейера NER я должен сделать, чтобы подготовить данные к обучению?