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 я должен сделать, чтобы подготовить данные к обучению?

0 ответов

Другие вопросы по тегам