Репозиторий семестрового проекта дисциплины "Инфопоиск" на курсах Техносфера для конкурса "Relevance prediction by user behaviour".
Задание выполнил Кононов Сергей, группа BD-31 весной 2020 года.
Код расположен в директории /src. В файле /presentation.pdf находится презентация проекта. В файле /guideline.pdf находится рекомендованный план решения. В директории /data/images находится схема взаимодействия компонентов системы, диаграмма важности признаков и график обучения модели. Все необходимые данные находянтся в на Google Drive.
Для тестирования кода предлагаются следующие сценарии:
- Запуск LightGBM на готовом датасете
- Предобработка текстов запросов и заголовков документов
- Подсчёт синтаксических признаков
- Посчёт семантических признаков
- Соединение кликовых, синтаксических и семантических данных
- Генерация похожих запросов
Краткое описание кода задач на Hadoop Map-Reduce находится в файле src/java/README.md
Для выполнения этого необходимо запустить файл /script_1.sh:
bash ./script_1.sh
Данный скрипты выполняет следующую последовательность действий:
- Загрузка данных из облака в /data
- Обучение ранажирующей модели
- Подсчёт результатов для тестовой выборки
- Сохранение результата в /resutl.csv
Необходимые требования:
- python3.6
- lightgbm
- matplotib
- scipy
- numpy
- pandas
Для выполнения этого необходимо запустить файл /script_2.sh. Для токенизацации типа 3_char и 4_char необходимо минимум 12GB RAM.
bash ./script_2.sh
Данный скрипты выполняет следующую последовательность действий:
- Загрузка данных из облака в /data
- Применение
- Понижение регистра
- Исправеление опечаток
- Лемматизация
- Токенизация
- Сохранение результата в /data
Необходимые требования:
- request
- sklearn
- progress
- pymystem3
- pandas
Для выполнения этого необходимо запустить файл /script_3.sh.
bash ./script_3.sh
Для корректной работы необходимо 15GB RAM. Данный скрипты выполняет следующую последовательность действий:
- Загрузка данных из облака в /data
- Создание словаря
- Преобразование корпуса в корпус из предложений типа bag-of-words
- Подсчёт статистик для моделей TF-IDF и BM-25 (по словам, парам слов, 3-граммам и 4-граммам)
- Подсчёт занчение TF-IDF и BM-25
- Сохранение результата в /data
Необходимые требования:
- sklearn
- numpy
- pandas
- gensim
- msgpack
В виду высокой ресурсоёмкости вычислений, рекомендуется запускать код в Google Colab.
- BERT в Googel Colab и в формате Jupyter Nootbook в /src/python/bert.ipynb
- FastText в Google Colab и в формате Jupyter Nootbook в /src/python/fasttext.ipynb
- USE в Google Colab и в формате Jupyter Nootbook в /src/python/use.ipynb
- ELMo в Google Colab и в формате Jupyter Nootbook в /src/python/elmo.ipynb
Для выполнения этого необходимо запустить файл /script_4.sh
bash ./script_4.sh
Данный скрипты выполняет следующую последовательность действий:
- Загрузка данных из облака в /data
- Конкатенация признаков:
- Синтаксические признаки - TF-IDF и BM-25 (по словам, парам слов, 3-граммам и 4-граммам)
- Семантические признаки - BERT, FastText, ELMo, USE
- Кликовые статистики
- Сохранение результата в /data
Необходимые требования:
- numpy
- pandas
- scipy
Код расположен в Google Colab и в формате Jupyter Notebook файле /src/python/similar_query_generator.ipynb