Skip to content

Instantly share code, notes, and snippets.

@KarimLulu
KarimLulu / ranking_metrics.py
Last active December 15, 2019 17:28
Rank-aware evaluation metrics
from collections import Counter
import logging
import numpy as np
from scipy.stats import kendalltau
from typing import List, Any, Union
LOG_FORMAT = ("%(asctime)s - %(levelname)s - "
"%(filename)s:%(lineno)s - %(funcName)s"
" - %(message)s")
@KarimLulu
KarimLulu / rank_metrics.py
Created December 14, 2019 13:37 — forked from bwhite/rank_metrics.py
Ranking Metrics
"""Information Retrieval metrics
Useful Resources:
http://www.cs.utexas.edu/~mooney/ir-course/slides/Evaluation.ppt
http://www.nii.ac.jp/TechReports/05-014E.pdf
http://www.stanford.edu/class/cs276/handouts/EvaluationNew-handout-6-per.pdf
http://hal.archives-ouvertes.fr/docs/00/72/67/60/PDF/07-busa-fekete.pdf
Learning to Rank for Information Retrieval (Tie-Yan Liu)
"""
import numpy as np
@KarimLulu
KarimLulu / io_chain.py
Last active November 24, 2019 14:24
Read from several files as though they are glued into a single one
import io
class IOChain(object):
def __init__(self, files):
self.files = iter(files)
try:
self._current_file = next(self.files)
except StopIteration:
self._current_file = None
@KarimLulu
KarimLulu / merge_iterators.py
Created November 20, 2019 13:05
Generator that takes any number of sorted iterables and yields all values of all iterables in an ascending order
import heapq
import unittest
def merge(*args):
iterators = [iter(i) for i in args]
heads = []
for idx, iterator in enumerate(iterators):
try:
value = next(iterator)