Uma implementação Python da função de classificação BM25.
Existem 4 módulos principais do programa: analisador, processador de consulta, função de classificação e estruturas de dados. O módulo analisador analisa o arquivo de consulta e o arquivo corpus para produzir uma lista e um dicionário, respectivamente. O processador de consultas pega cada consulta na lista de consultas e pontua os documentos com base nos termos. A função de classificação é uma implementação da função de classificação BM25; utiliza o logaritmo natural em seus cálculos. Finalmente, o módulo de estruturas de dados contém um índice invertido e uma tabela de comprimento de documentos. O índice invertido usa um dicionário para mapear cada palavra para um dicionário; este dicionário secundário mapeia cada ID de documento para a frequência da palavra no dicionário externo. A tabela de comprimento do documento contém o comprimento de cada documento e também tem a função de calcular o comprimento médio do documento da coleção.
Para executar, basta executar $ python main.py
na pasta src.