У меня есть набор данных в формате CoNLL NER, который в основном представляет собой файл TSV с двумя полями. Первое поле содержит токены из некоторого текста - по одному токену на строку (каждый символ пунктуации также считается там токеном), а второе поле содержит теги именованных сущностей для токенов в формате BIO.
Я хотел бы загрузить этот набор данных в spaCy, вывести новые именованные теги сущностей для текста с моей моделью и записать эти теги в тот же файл TSV, что и новый третий столбец. Все, что я знаю, это то, что я могу вывести именованные сущности примерно так:
nlp = spacy.load("some_spacy_ner_model")
text = "text from conll dataset"
doc = nlp(text)
Также мне удалось преобразовать набор данных CoNLL в формат json spaCy с помощью этой команды CLI:
python -m spacy convert conll_dataset.tsv /Users/user/docs -t json -c ner
Но я не знаю, что делать дальше. Не удалось найти, как загрузить этот json
файл в формат spaCy Doc
. Я пробовал этот фрагмент кода (нашел его в документации spaCy):
from spacy.tokens import Doc
from spacy.vocab import Vocab
doc = Doc(Vocab()).from_disk("sample.json")
но выдает ошибку ExtraData: unpack(b) received extra data.
.
Также я не знаю, как записать числа из объекта doc
обратно в тот же файл TSV, выравнивая токены и теги NER с существующими строками файла TSV.
А вот выдержка из файла TSV в качестве примера данных, с которыми я имею дело:
The O
epidermal B-Protein
growth I-Protein
factor I-Protein
precursor O
. O