Skip to content

Latest commit

 

History

History
33 lines (24 loc) · 4.53 KB

File metadata and controls

33 lines (24 loc) · 4.53 KB

Задание: построение пайплайна по индексации и поиску по корпусу

Требуется реализовать "игрушечный" индексатор и поисковик по коллекции текстов. Данный индексатор должен производить все 4 этапа обработки корпуса и обеспечивать поиск по булевым выражениям с помощью построенного обратного индекса. Задание можно выполнять группой до двух человек.

Этапы:

  1. Сбор корпуса. В качестве корпуса можно использовать любой набор текстовых документов или страниц суммарным объемом не менее 50мб. В качестве корпуса, например, можно взять набор статей с Википедии, Хабра, цитаты с сайта bash.im и подобные источники текстовых статей. Сам корпус либо алгоритм его получения должны быть включены в ответ.
  2. Токенизация. Допускается упрощенный вариант токенизации и оставление только слов соответствующего языка, откидывая знаки препинания и другие символы, а также не выделяя отдельно именованные сущности.
  3. Лексическая обработка текста. Необходимо применить готовые реализации лемматизации/стемминга для приведения термов к унифицированному состоянию.
  4. Построение индекса. Для построения индекса необходимо использовать один из двух рассмотренных классических алгоритма (BSBI/SPIMI, либо их модификации).

Поиск

  • Поиск по готовому индексу должен осуществляться с помощью CLI, в который пользователь пишет булевый запрос.
  • В качестве результатов поиска необходимо выводить часть документа или обеспечить другие возможности проверки правильности поиска.

Языки и код

  • Допускается использование любого языка из следующего списка: Python 3, C#, C++, Kotlin. В случае желания использования других языков - уточните у преподавателя.

Баллы

За задание ставится до 10 баллов путем суммы следующих пунктов:

  • 0 баллов ставится безусловно, если преподаватель не может собрать и запустить приложение конвенциональными методами
  • до 7 баллов ставится за общую законченность решения и правильность использования алгоритмов
  • до 2 баллов ставится за общее качество кода (PEP8 etc) и реализацию.
  • до 1 баллов ставится за технологичность решения (github, gradle/requirements.txt/cmake).

Дополнительная информация

При выполнении задания разрешается использовать различные открытые библиотеки, реализующие побочные функции (стемминг, например), но при чрезмерном их использовании (from index_search import *) будет предложено задание переделать, реализовав все самостоятельно. Для этапа сбора корпуса не нужно писать свой краулер, достаточно скачать готовый корпус. Задание необходимо будет защищать на практике путем демонстрации работы и обсуждения решения с преподавателем.