Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpaceAdding

Цель

Разработать модель или алгоритм, который принимает на вход текст без пробелов и возвращает восстановленный текст с правильными пробелами и позициями, где они были пропущены.

Мое решение

Моё решение основано на архитектуре Seq2Seq: я дообучаю модель для автоматической расстановки пробелов в тексте. В качестве обучающего корпуса использовались текстовые описания из объявлений на платформе Авито (датасет из открытого источника). Финальная модель: дообученная ai-forever/ruT5-base на 5 эпохах. Использовал GPU P100 (Kaggle Notebook)

Что успел попробовать

  • Модели: ai-forever/ruT5-base google/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

Запуск

  1. Клонирование репозитория:
git clone https://github.com/teplov-andrew/SpaceAdding.git
  1. Установка зависимостей:
pip install -r requirements.txt
  1. Запуск обучения:
python train.py data.train_csv=train.csv train.num_train_epochs=5 train.per_device_train_batch_size=32
  1. Запуск валидации:
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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages