Задание по программированию от Тинькофф Поколение
Напишите утилиту, которая на основе заданных текстов генерирует новые.
Моё решение основано на:
Word2Vec
, обученный на книгах ДостоевскогоXGBClassifier
, который на вход получает эмбэдинги от w2v и учится на предсказание последнего слова предложения
Подробнее:
- Токенизирую с помощью gensim, использую stop-words
Word2Vec
, предобученный на "Игроке", "Идиоте" и "Преступлении и наказании" Достоевского Ф.М.XGBClassifier
принимает на вход предложения без последнего слова, переведённые в эмбеддинги с помощью усреднения (ф-яsent2vec
), и предсказывает последнее слово предложения (а точнее его индекс в словаре уникальных слов токенизированного текста)- Генерация происходит итеративно: текст который скармливается также токенизируется, к нему по одному генерерируется и добавляется новое слово
- Добавил
argparse
- В конце модель ставит три точки, потому что ей есть что еще сказать...
Usage:
python train.py --input_dir texts
python generate.py --prefix "your text" --length n