У меня есть набор данных в формате 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.
.
Также я не знаю, как писать ners изdoc
объект возвращается в тот же файл TSV, выравнивая токены и теги NER с существующими строками файла TSV.
А вот выдержка из файла TSV в качестве примера данных, с которыми я имею дело:
The O
epidermal B-Protein
growth I-Protein
factor I-Protein
precursor O
. O