170 похожих чатов

Всем привет. Есть два вопроса на понимание по берту. Вопросы

не простые, но надеюсь смогу донести.
Собственно задача такова: есть текст и нужно предсказать пунктуацию в нём. Смог найти готовое решение для этого https://github.com/nkrnrnk/BertPunc.
Сначала вкратце объясню логику автора. Для каждого слова присваивается один из четырёх токенов - Other (0), PERIOD (1), COMMA(2), QUESTION (3). Далее все слова переводятся в токены берта. Не знаю понятно ли объяснил, поэтому вот пример:
2045 0
2003 0
2200 0
2210 0
3983 0
2301 0
2974 0
1999 0
2068 2
Далее осуществляется хитрый padding: задаётся сегмент (пусть будет восемь слов) и для каждого слова берётся два слова перед и четыре слова после, плюс сразу же после слова пихается padding токен. Понятное дело что для самого первого слова нет слов до. Поэтому для него берутся слова с конца. Аналогично, для последнего слова нет слов после и поэтому берутся слова с начала.
В первом столбце идут токены слов, а во втором столбце знаки пунктуации. '0' соответствует other, а '2' соответствует точки.
После padding получим следующее:
[1999, 2068, 2045, 0, 2003, 2200, 2210, 3983] 0
[2068, 2045, 2003, 0, 2200, 2210, 3983, 2301] 0
[2045, 2003, 2200, 0, 2210, 3983, 2301, 2974] 0
[2003, 2200, 2210, 0, 3983, 2301, 2974, 1999] 0
[2200, 2210, 3983, 0, 2301, 2974, 1999, 2068] 0
[2210, 3983, 2301, 0, 2974, 1999, 2068, 2045] 0
[3983, 2301, 2974, 0, 1999, 2068, 2045, 2003] 0
[2301, 2974, 1999, 0, 2068, 2045, 2003, 2200] 0
[2974, 1999, 2068, 0, 2045, 2003, 2200, 2210] 2
Напомню что в брете 0 соответствует padding. Далее из этого дела делаем TensorDataset, затем DataLoader и начинаем обучать:
for inputs, labels in data_loader_train:
inputs, labels = inputs.cuda(), labels.cuda()
output = model(inputs)

Алгоритм работает хорошо, но я не понимаю следующее:
1) Почему padding был осуществлён именно таким образов? Какой смысл ставить падинг в середине? Можно ли обойтись без него?
2) Автор использует в качестве модели BertForMaskedLM. Я думал что эта модель нужна исключительно для маскинга. А у нас даже нет MASK токенов. Скажите, я бы мог использовать вместо этой модели например просто BertModel?

1 ответов

11 просмотров

1) Вероятно, мы смотрим, предскажет ли берт запятую на месте паддинга. Он как раз на такой задаче обучался 2) У нас и есть masked lm, только вместо маски паддинг. Может, там маска должна быть?

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта