Tinkoff Generation

Домашнее задание по информационному поиску

hw

Задание

  1. (sudo) pip install flask
  2. (sudo) python server.py
  3. Зайти на http://127.0.0.1:8080/, ввести какой-нибудь запрос и убедиться, что всё работает
  4. Найти и скачать какой-нибудь датасет (от нескольких сотен мегабайт до нескольких гигабайт) любых текстовых документов — например, песен
  5. Построить какой-нибудь базовый индекс — тут для начала не надо ничего сложного
  6. Сделать что-нибудь чуть более сложное для самого ранжирования: стемминг, лемматизация, tf-idf, эмбеддинг word2vec-ом
  7. (Опционально) разметить руками несколько десятков примеров и научиться мерять качество

Домашка по поиску стоит 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 балл не получите)