Size: a a a

Natural Language Processing

2020 April 03

YB

Yuri Baburov in Natural Language Processing
Alexander
Интересно. Но поможет ли это в решение моего вопроса?
не используй метод decode с параметром clean_up_tokenization_spaces=True !
источник

MF

M F in Natural Language Processing
Alexander
Интересно. Но поможет ли это в решение моего вопроса?
источник

YB

Yuri Baburov in Natural Language Processing
tokenizers нормализует пробелы между словами (и апострофами). оно отличает слипшиеся слова и разделённые слова, а вот метод decode с этим параметром некорректно слепляет слова.
источник

YB

Yuri Baburov in Natural Language Processing
а как его применить в данном случае?
источник

MF

M F in Natural Language Processing
Да это не к вордpiece
источник

MF

M F in Natural Language Processing
Действительно
источник

YB

Yuri Baburov in Natural Language Processing
>Вопрос почему так сделано и как исправить ситуацию?
Почему так сделано — люди часто пишут апострофы неправильно, разделяя слова пробелами. Поэтому считают апостроф знаком препинания. Если бы он был буквой алфавита — то обрабатывался бы правильно. Для этого надо переучить модель, скорее всего. Без переучивания вряд ли ручка будет.
источник

YB

Yuri Baburov in Natural Language Processing
M F
Да это не к вордpiece
да, в sentencepiece пробел явно в символы попадает, а здесь неявно токены пробелом разделяются.
источник

MF

M F in Natural Language Processing
Похоже что если тут слова с апострофами к additional special tokens добавить то они не будут никакой токенизацией делиться и wordpiece   тоже https://huggingface.co/transformers/main_classes/tokenizer.html#transformers.PreTrainedTokenizer
источник

A

Alexander in Natural Language Processing
Просто так этот параметр не работает. Нужно ещё нужное слово в словарь добавить. А так бы можно было бы сделать RegEx который бы не давал разделять никакие слова с апострофами. Но комбинаций может быть бесконечное количество и все не внесёшь в словарь. К тому же, если бы даже получилось толку от этого было-бы мало так как это надо делать retraining всего берта после таких изменений.
источник

A

Alexander in Natural Language Processing
Yuri Baburov
не используй метод decode с параметром clean_up_tokenization_spaces=True !
Тогда ситуация будет ещё хуже - все слова и апострофы будут разделены, в нормальный текст это уже не склеишь.
источник

YB

Yuri Baburov in Natural Language Processing
Alexander
Тогда ситуация будет ещё хуже - все слова и апострофы будут разделены, в нормальный текст это уже не склеишь.
Так они и так уже разделены после encode... Используй свою нормализацию просто
источник

A

Alexander in Natural Language Processing
Yuri Baburov
Так они и так уже разделены после encode... Используй свою нормализацию просто
В смысле написать свои правила по типу: "isn ' t" -> "isn't"?
источник

YB

Yuri Baburov in Natural Language Processing
Alexander
В смысле написать свои правила по типу: "isn ' t" -> "isn't"?
Ага
источник

YB

Yuri Baburov in Natural Language Processing
Для английского языка правил с апострофами всего штук 5 :)
источник

АЗ

Андрей Заспа in Natural Language Processing
Кто-нибудь разворачивал в продакшен ml-модели в связке flask+gunicorn. Когда ставишь несколько worker'ов то создается несколько экземпляров самой модели потому что на каждый экземпляр app свой экземпляр модели, которые получается используют общие ресурсы (сохраненные на диск пайплайны). Проблемы возникают когда надо переобучить модель на новых месячных данных, например, потому что встает вопрос синхронизации. Какая архитектура в данному случае верная? Делать несколько docker контейнеров, которые будут обмениваться сообщениями?
источник

EM

Eugene Molodkin in Natural Language Processing
У меня такое, переобучал на ноуте (модель относительно небольшая), собирал новый докер-образ, заливал в свой docker registry, потом на сервере обновлял из регистри и перезапускал.
Но у меня только один инстанс докера запущен (а внутри докер контейнера 10 воркеров gunicorn)
источник

RB

Radion Bikmukhamedov in Natural Language Processing
Андрей Заспа
Кто-нибудь разворачивал в продакшен ml-модели в связке flask+gunicorn. Когда ставишь несколько worker'ов то создается несколько экземпляров самой модели потому что на каждый экземпляр app свой экземпляр модели, которые получается используют общие ресурсы (сохраненные на диск пайплайны). Проблемы возникают когда надо переобучить модель на новых месячных данных, например, потому что встает вопрос синхронизации. Какая архитектура в данному случае верная? Делать несколько docker контейнеров, которые будут обмениваться сообщениями?
я бы обучал отдельно и делал редеплой с новой моделью. если кубы используются, то можно без простоя это делать
источник

АЗ

Андрей Заспа in Natural Language Processing
Просто хотелось сделать автоматическое, чтобы по расписанию модель из бд собирала новые данные, переобучалась
источник

RB

Radion Bikmukhamedov in Natural Language Processing
можно сделать общий доступ к БД, раз в сутки запускать переобучение. но для этого надо будет юзать общий реестр моделей. т.е. нужно что-то типа MLflow
источник