Репозиторий с домашним заданием по курсу "Основные задачи компьютерной лингвистики". В данном задании предполагается найти и настроить парсеры, при этом необходимо достичь определённого качества (0.93 или 0.94). В данном репозитории используются парсеры Китаева и Дозата-Маннинга.
Мне не удалось найти готовую модель парсера Дозата-Маннинга, поэтому пришлось обучить с нуля. При этом я не ставил перед собой цель обучить модель до её максимального качества: как только качество на dev-сете стало больше 0.94, обучение было остановлено.
С моделью Китаева было легче, так как была выложена предобученная модель, без использования дополнительных эмбэддинго по типу BERT'а или ELMo. При этом качество модели 0.9361 на dev-сете, что достаточно для данного домашнего задания.
Я решил создать по одному Docker image для каждого парсера, так как мне это кажется наиболее логичным. Можно всё запускать руками и прописывать команды по сборке image, загрузке данных и т.д., но я постарался автоматизировать процесс как можно больше и создал скрипт ./run_all.sh, запустив который можно сразу скачать все данные, создать и настроить все docker image и скачать почти все модели.
./run_all.sh
Однако у меня не получилось сделать автоматическую загрузку папки из google drive с моделью для парсера Дозата. Поэтому её нужно скачать перейдя по ссылке и положив её в директорию ./models.
В ходе выполнения может быть много предупреждений, которые выделены красным шрифтом, не стоит обращать на них внимания. Есть вероятность, что парсер Дозата-Маннинга в одно время может не заработать, так как оригинальный репозиторий постоянно обновляется, поэтому TODO: Сделать форк репозиториев к себе и подтягивать парсеры в контейнерах с форков
Как только скрипт закончит свою работу, можно запустить сами контейнеры. В данном случае я ввёл ограничение на использование оператиной памяти в 4Гб.
docker run -it --rm --memory="4096m" -v ~/<path-to-local-git-repository>:/home/models hw/{dozat или kitaev} /bin/bash
В самом контейнере можно запустить скрипт, который показывает пример работы (запускает модель на dev-сете)
./run_{dozat или kitaev}_test.sh