Использование предварительно обученной модели BERT для добавления дополнительных слов, которые модель не распознает

Мне нужна помощь в добавлении дополнительных слов в существующую модель BERT. У меня есть два вопроса, которые помогут мне:

Я работаю над задачей NER для домена:

Есть несколько слов (не уверен в точных числах), которые BERT распознал как [UNK], но эти сущности необходимы для распознавания модели. Предварительно обученная модель хорошо обучается (до 80%) точности на базе bert-base-cased, предоставляя помеченные данные и тонко настраивая модель, но интуитивно модель будет учиться лучше, если она распознает все объекты.

  1. Нужно ли мне добавить эти неизвестные сущности в файл vocabs.txt и снова обучить модель?

  2. Нужно ли мне обучать модель BERT на моих данных из Scratch?

Спасибо...


person muzamil    schedule 13.11.2020    source источник


Ответы (1)


BERT работает хорошо, потому что он предварительно обучен на очень большом текстовом наборе данных из 3,3 миллиарда слов. Обучение BERT с помощью skratch требует ресурсов и не окупается в большинстве разумных случаев использования.

BERT использует словесный алгоритм для сегментации входных данных. Этот шоудл теоретически гарантирует, что не будет токена вне словарного запаса, который в конечном итоге окажется [UNK]. В худшем случае сегментации входные токены будут сегментированы на отдельные символы. Если сегментация выполнена правильно, [UNK] должен появиться только в том случае, если токенизатор использует UTF-8, которого не было в обучающих данных.

Наиболее вероятные источники вашей проблемы:

  1. В токенизации есть ошибка, поэтому она производит токены, которых нет в словарном запасе словарных частей. (Возможно, токенизация слов вместо токенизации WordPiece?)

  2. Это проблема с кодировкой, из-за которой возникают недопустимые или странные символы UTF-8.

person Jindřich    schedule 13.11.2020
comment
Спасибо за ответ! цитируя это. Наихудший сценарий сегментации будет заключаться в том, что входные токены в конечном итоге будут сегментированы на отдельные символы. Разве это не повлияет на конечный результат предсказания сущностей? Возможно ли использование предварительно обученного BERT и дальнейшего обучения модели на необработанных текстовых данных, специфичных для предметной области? А как вы относитесь к добавлению новых слов в файл vocab.txt? Спасибо - person muzamil; 13.11.2020
comment
Слишком большие объекты не должны быть проблемой для модели. Может помочь постоянное предварительное обучение по данным для конкретной предметной области. Добавление слов в файл vocab.txt не вариант, это будет означать добавление вложений для новых символов и повторное обучение модели с новыми параметрами. - person Jindřich; 13.11.2020
comment
Еще раз спасибо :-) Не могли бы вы немного объяснить идею непрерывного предварительного обучения по данным, указанным в предметной области. Вы имеете в виду аннотированные данные? - person muzamil; 13.11.2020