provides a common interface to many IR measure tools
Project description
ir_measures
from ir_measures import AP, P, nDCG, ERR, Bpref, RR, RBP
measure = AP
measure.iter_calc(qrels, run)
# returns an iterator over each query
measure.calc_aggregate(qrels, run)
# returns the aggregated (for AP, averaged) result over all queries
# supports arguments:
measure = AP(rel=2) # minimum relevance
measure = AP(cutoff=100) # measure cutoff
measure = AP@100 # same as above: @ means cutoff
measure = AP(rel=2)@100 # mix & match
measure = P
measure.iter_calc(qrels, run) # validation: throws error because needs cutoff
measure = P@5
measure.iter_calc(qrels, run) # works
from ir_measures import iter_calc, calc_aggregate
iter_calc([AP, AP(rel=2), nDCG, nDCG@10, P@5], qrels, run) # calculate multiple measures at once
iter_calc([P@[1,5,10]], qrels, run) # expands to multiple cutoffs
# The above use a global priority list of measure providers. You
# can also choose a specific one to use.
from ir_measures import PyTrecEval, GdEval
PyTrecEval.iter_calc([nDCG@20], qrels, run)
GdEval.iter_calc([nDCG@20], qrels, run)
# Throws error if not supported on system (e.g., perl not available for GdEval)
# of if meausre not supported by provider
Qrels can be provided in the following formats:
# dict of dict
qrels = {
'Q0': {
"D0": 1,
"D1": 0,
},
"Q1": {
"D0": 0,
"D3": 2
}
}
# dataframe
qrels = pd.DataFrame([
{'query_id': "Q0", 'doc_id': "D0", 'relevance': 1},
{'query_id': "Q0", 'doc_id': "D1", 'relevance': 0},
{'query_id': "Q1", 'doc_id': "D0", 'relevance': 0},
{'query_id': "Q1", 'doc_id': "D3", 'relevance': 2},
])
# any iterable of namedtuples (e.g., list, generator, etc)
from ir_measurs.util import GenericQrel
qrels = [
GenericQrel("Q0", "D0", 1),
GenericQrel("Q0", "D1", 0),
GenericQrel("Q1", "D0", 0),
GenericQrel("Q1", "D3", 2),
]
Runs can be provided in the following formats:
# dict of dict
run = {
'Q0': {
"D0": 1.2,
"D1": 1.0,
},
"Q1": {
"D0": 2.4,
"D3": 3.6
}
}
# dataframe
run = pd.DataFrame([
{'query_id': "Q0", 'doc_id': "D0", 'score': 1.2},
{'query_id': "Q0", 'doc_id': "D1", 'score': 1.0},
{'query_id': "Q1", 'doc_id': "D0", 'score': 2.4},
{'query_id': "Q1", 'doc_id': "D3", 'score': 3.6},
])
# any iterable of namedtuples (e.g., list, generator, etc)
from ir_measurs.util import GenericScoredDoc
run = [
GenericScoredDoc("Q0", "D0", 1.2),
GenericScoredDoc("Q0", "D1", 1.0),
GenericScoredDoc("Q1", "D0", 2.4),
GenericScoredDoc("Q1", "D3", 3.6),
]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ir_measures-0.1.0.tar.gz
(22.7 kB
view details)
File details
Details for the file ir_measures-0.1.0.tar.gz.
File metadata
- Download URL: ir_measures-0.1.0.tar.gz
- Upload date:
- Size: 22.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1540cc8defc04470355255d4f0924b0226cb5a73f7eea9ef41c6a262694e9e9
|
|
| MD5 |
86bdf61c649d9b280abb86db1907d32e
|
|
| BLAKE2b-256 |
6bb9387b94be0e47ff5ecb3f85714d0c8cd81f5c85a1343a17b6afbe568b9b02
|