Задание
- (sudo) pip install flask
- (sudo) python server.py
- Зайти на http://127.0.0.1:8080/, ввести какой-нибудь запрос и убедиться, что всё работает
- Найти и скачать какой-нибудь датасет (от нескольких сотен мегабайт до нескольких гигабайт) любых текстовых документов — например, песен
- Построить какой-нибудь базовый индекс — тут для начала не надо ничего сложного
- Сделать что-нибудь чуть более сложное для самого ранжирования: стемминг, лемматизация, tf-idf, эмбеддинг word2vec-ом
- (Опционально) разметить руками несколько десятков примеров и научиться мерять качество
Домашка по поиску стоит 20 баллов. Примерные критерии оценивания:
Обработка данных:
- 2 балла: написана обработка данных
- до 3 баллов: исходный датасет хотя бы на 100 мегабайт / 1M записей, и вы эффективно используете мультипроцессинг для его обработки
Ранжирование:
- 2 балла: реализована хоть какая-нибудь разумная функция score
- до 3 баллов: реализована какая-то нетривиальная функция score (например, использующая tf-idf или word2vec по заголовкам и запросам — в идеале взвешенную сумму (линейную регрессию) подобных признаков)
Индекс:
- 2 балла: хоть как-то реализован инвертированный индекс (например, можно пересекать сеты индексов)
- 2 балла: ваш индекс масштабируется с данными (реализовать трюк с двумя указателями и ранним отсечением)
- 1 балл: записи в инвертированном индексе ещё и отсортированы по какому-нибудь разумному оффлайновому признаку (с чем-нибудь, коррелирующим с популярностью)
Анализ:
- до 4 баллов: вы реализовали замер качества ([email protected], MRR, DCG, pFound…) и подбираете функцию score хотя бы не совсем на глазок (достаточно вручную разметить несколько десятков примеров)
- 1 балл: проект залит на гитхаб с небольшим описанием и гифкой-демкой (если лень, можете кинуть только search.py и тетрадку с обработкой данных, но +1 балл не получите)