Project

rankum

0.0
No commit activity in last 3 years
No release in over 3 years
A gem to compare search ranks using flexible quality rank metrics
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 1.0
 Project Readme

rankum

Search Rank experimentation in python

Install

pip install rankum

Available features

Rank diversifiers

Rankum provides features to diversify a search rank (a simple list of documents) by a specified criteria. For example, assuming each document in the input list (original rank) is coupled to a topic like a category id, which is very common in e-commerces. Rankum can help you to diversify the input list to have a more "uniform" distribution of each document category.

Topic distribution

Rankum implements the following diversifiers:

Examples
from rankum import JsonDocReader, ScoresDiffDiversifier 

doc_list = '[
                {"id": 1, "category": 1}, 
                {"id": 2, "category": 1}, 
                {"id": 3, "category": 2}, 
                {"id": 4, "category": 1}, 
                {"id": 5, "category": 3}, 
                {"id": 6, "category": 4}
              ]'  

reader = rankum.JsonDocReader(doc_list)
diversifier = ScoresDiffDiversifier(reader)  
In: list(diversifier.diversify(by='category'))  
Out:
[Doc(id=1, {'id': '1', 'category': 1, 'score': 2.0}),
 Doc(id=3, {'id': '3', 'category': 2, 'score': 1.333}),
 Doc(id=5, {'id': '5', 'category': 3, 'score': 1.2}),
 Doc(id=6, {'id': '6', 'category': 4, 'score': 1.167}),
 Doc(id=2, {'id': '2', 'category': 1, 'score': 1.0}),
 Doc(id=4, {'id': '4', 'category': 1, 'score': 0.583})]

Document readers

It is possible to read ranked document list from different sources:

  • Json
  • Elasticsearch (to be implemented)
  • Solr (to be implement)
  • Text files (to be implemented)
  • Pandas dataframes (to be implemented)