Система поиска документов, написанная с нуля на Python. На основе концепций из Стэнфордской книги «Введение в поиск информации».
Использует часть TREC8Adhoc коллекции TIPSTER для построения и оценки индекса. Вам потребуется получить TREC8Adhoc.tar.bz2
из этой коллекции (диски 4 и 5), чтобы воспроизвести полученные результаты.
Чтобы оценить результаты с помощью trec_eval
вам необходимо загрузить специальные qrels TREC-8.
Функции:
Ранний порт Rust находится по адресу ir-search-engine-rust.
Для этого проекта требуется как минимум Python 3.6.
pip install -r requirements.txt
Запустите python cmd_index.py --help
для получения инструкций.
Чтобы создать индекс и статистику документа с помощью метода SPIMI, запустите: python cmd_index.py --document_folder=./data/TREC8all/Adhoc/ --index_file=spimi.index --stats_file=spimi.stats spimi
Скрипт создает два выходных файла:
index_file
: инвертированный индексstats_file
: статистика документа, собранная во время создания индекса (длина документа и количество терминов).Формат индексного файла является текстовым.
В первой строке указывается количество уникальных документов в индексе.
Каждая последовательная строка представляет термин, включая связанные данные:
<TERM> <DOCUMENT_FREQUENCY> <POSTINGS>
Запустите python cmd_search.py --help
для получения инструкций.
Чтобы оценить список тем по ранее созданному индексу SPIMI с использованием рейтинга bm25, запустите: python cmd_search.py --output_file=out.txt --run_name=dev --topics_file=./data/TREC8all/topicsTREC8Adhoc.txt --index_file=spimi.index --stats_file=spimi.stats bm25
Скрипт создает выходной файл, который можно использовать с trec_eval
, например: trec_eval -q -m map -c ./data/TREC8all/qrels.trec8.adhoc.parts1-5 ./out.txt