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 ответов

5 просмотров

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

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

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

А чем вам питонисты не угодили?😂
.
79
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Привет, имею проблему с better-sqlite3 модулем. После npm install я делаю ребилд модуля под свою текущую версию ноды с помощью npx electron-rebuild -f -m node_modules/better-s...
Anton Samofal
2
Anyone knows how to build this widget in Flutter? I have all the assets for round stations and the road, but how can I make the my widget animate between these stations? And h...
Mohammad Zamani
8
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
hello everyone can you help me above picture figma that give me and belove picture postman that give me api and is it match these?
Sardorbek
6
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
Anyone from Nigeria??
Mr ROBOT🤖
7
Карта сайта