Как должны выглядеть правильно отформатированные данные для NER в BERT? - PullRequest
1 голос
/ 14 февраля 2020

Я использую библиотеку Huggingface transformers и хочу выполнить NER с помощью BERT. Я попытался найти явный пример того, как правильно отформатировать данные для NER, используя BERT. Мне не совсем понятно из статьи и комментариев, которые я нашел.

Допустим, у нас есть следующее предложение и метки:

sent = "John Johanson lives in Ramat Gan."
labels = ['B-PER', 'I-PER', 'O', 'O', 'B-LOC', 'I-LOC']

Будут ли данные, которые мы вводим в Модель будет примерно такой:

sent = ['[CLS]', 'john', 'johan',  '##son', 'lives',  'in', 'ramat', 'gan', '.', '[SEP]']
labels = ['O', 'B-PER', 'I-PER', 'I-PER', 'O', 'O', 'B-LOC', 'I-LOC', 'O', 'O']
attention_mask = [0, 1, 1, 1, 1, 1, 1, 1, 1, 0]
sentence_id = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

?

Спасибо!

1 Ответ

1 голос
/ 14 февраля 2020

На самом деле отличный учебник для примера NER на странице документации huggingface. В частности, также подробно рассматривается, как предоставленный скрипт выполняет предварительную обработку. В частности, есть ссылка на скрипт preprocess.py внешнего участника, который в основном переносит данные из формата CoNLL 2003 в то, что требуется библиотеке huggingface. Я обнаружил, что это самый простой способ утверждать, что у меня правильное форматирование, и если у вас нет определенных c изменений, которые вы, возможно, захотите включить, это заставит вас начать очень быстро, не беспокоясь о деталях реализации.

Связанный пример сценария также предоставляет более чем достаточно информации о том, как подавать соответствующие входные данные в саму модель, но проверка вокруг строка 192 в основном подтверждает ваш вышеупомянутый шаблон подачи, вместе с com mnet, предоставленным @ Йиндржий.

...