Разработать модель или алгоритм, который принимает на вход текст без пробелов и возвращает восстановленный текст с правильными пробелами и позициями, где они были пропущены.
Моё решение основано на архитектуре Seq2Seq: я дообучаю модель для автоматической расстановки пробелов в тексте. В качестве обучающего корпуса использовались текстовые описания из объявлений на платформе Авито (датасет из открытого источника). Финальная модель: дообученная ai-forever/ruT5-base на 5 эпохах. Использовал GPU P100 (Kaggle Notebook)
- Модели:
ai-forever/ruT5-basegoogle/byt5-small; ruT5 показал результаты лучше - Подход: также использовал подход коррекции предложений через модель
UrukHan/t5-russian-spell, но это результат не улучшило
- Пробуем дообучить другие модели (
ruT5-large), с различными гиперпараметрами (нужо попбробовать больше эпох, так как есть потенциал по понижению лосса) - Пробуем другие методы, через жадные алгоритмы, динамеческое программирование, токенизаторы и т.д (алгоритмы без обучения)
- Собрать более качественный датасет
├── README.md
├── config.yaml # config файл с основными параметрами
├── eval.py # скрипт инференса и создание submission файла
├── requirements.txt
├── train.py # скрипт дообучения модели
├── avito-inference.ipynb # полный инференс через jupyter notebook
└── utils
├── data_loading.py # загрузка датасетов
├── dataset_hf.py # создание HF dataset
├── metrics.py
├── modeling.py
└── preprocessing.py
- Клонирование репозитория:
git clone https://github.com/teplov-andrew/SpaceAdding.git
- Установка зависимостей:
pip install -r requirements.txt
- Запуск обучения:
python train.py data.train_csv=train.csv train.num_train_epochs=5 train.per_device_train_batch_size=32
- Запуск валидации:
python eval.py generate.test_txt_path=dataset_1937770_3.txt generate.checkpoint_path=/final
5 (дополнительно). Можно также сделать инференс через jupyter notebook, используй файл avito-inference.ipynb. Нужно указать руками пути к датасету и к весами модели.
!!! Все выходные файлы будут сохраняться в папку output, лучше всего самому указывать точный путь к нужным файлам (путь к датасетам, путь к модели) !!!
Убедитесь, что стоят нужные библиотеки, частые ошибку могут исправить эти комманды:
pip install --upgrade torch torchvision
pip install sentencepiece protobuf
!!! Указывайте пути на датасеты, чекпоинты модели самостоятельно !!!
Все выходные данные можно найти в папке output
Главный датасет для дообучения. Что бы все заработало, достаточно скачать датасет и указать путь в скрипте.
Веса моей дообученной модели. После скачивания нужно распоковать архив и указать путь на папку.
Для связи tg: @andr910