def wss(e: trectools.TrecEval) -> float: ret = e.get_retrieved_documents() r = recall(e) N = 30000000 wss = ((N - ret) / N) - (1.0 - r) if wss < 0: return 0 return wss
def precision(e: trectools.TrecEval, per_query=False): rel_ret = e.get_relevant_retrieved_documents(per_query=per_query) rel = e.get_retrieved_documents(per_query=per_query) if per_query: return (rel_ret / rel).fillna(0) else: return rel_ret / rel
def to_trec_df(e: trectools.TrecEval, per_query=True) -> pd.Series: return join_series( pd.Series({ "P": precision(e, per_query=per_query), "R": recall(e, per_query=per_query), # "F$_{0.5}$": f_measure(e, 0.5, per_query=per_query), # "F$_1$": f_measure(e, 1, per_query=per_query), "NumRet": e.get_retrieved_documents(per_query=per_query) # "F$_3$": f_measure(e, 3, per_query=per_query), }), eval_rank_df(e, per_query=per_query))
def wss(e: trectools.TrecEval, per_query=False): ret = e.get_retrieved_documents(per_query=True) r = recall(e, per_query=per_query) N = 30000000 if per_query: return pd.Series( dict([(t, (((N - ret.T[t]) / N) - (1.0 - r.T[t]))) for t in ret.index])) else: wss = ((N - ret) / N) - (1.0 - r) if wss < 0: return 0 # don't ask. return wss
def precision(e: trectools.TrecEval) -> float: return e.get_precision(depth=e.get_retrieved_documents(per_query=False), per_query=False)