Реализация функции ранжирования BM25 на Python.
В программе 4 основных модуля: парсер, обработчик запросов, функция ранжирования и структуры данных. Модуль синтаксического анализатора анализирует файл запроса и файл корпуса для создания списка и словаря соответственно. Обработчик запросов принимает каждый запрос из списка запросов и оценивает документы на основе условий. Функция ранжирования является реализацией функции ранжирования BM25; в своих вычислениях он использует натуральный логарифм. Наконец, модуль структур данных содержит инвертированный индекс и таблицу длины документа. Инвертированный индекс использует словарь для сопоставления каждого слова со словарем; этот вторичный словарь сопоставляет каждый идентификатор документа с частотой слов во внешнем словаре. Таблица длины документа содержит длину каждого документа, а также имеет функцию расчета средней длины документа в коллекции.
Для запуска просто запустите $ python main.py
в папке src.