用 Python 从头开始编写的文档搜索引擎。基于斯坦福大学信息检索入门书籍中的概念。
使用 TIPSTER 集合的 TREC8Adhoc 部分进行索引构建和评估。您必须从此集合(磁盘 4 和 5)中获取TREC8Adhoc.tar.bz2
才能重现报告的结果。
要使用trec_eval
评估结果,您必须下载 TREC-8 ad hoc qrel。
特征:
早期的 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
以获取说明。
要使用 bm25 排名评估先前创建的 SPIMI 索引上的主题列表,请运行: 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