← Lesson
MMR and Coverage
Joeven
Run
Reset
Python loads on first run
QUERY_WORDS = set("refund INV-17 days OOM memory".lower().split()) DOCS = [ "Refunds for INV-17 take 5-7 days.", "Refunds take five to seven days for INV-17.", "Never refund INV-17 in cash.", "Runner OOM: raise worker memory, then replay the DLQ.", ] def words(d): return set(d.lower().replace(":", " ").replace(".", " ").split()) def mmr(docs, lam=0.7, n=2): chosen = [] leftover = list(docs) while leftover and len(chosen) < n: best = None best_s = -1e9 chosen_words = set() for c in chosen: chosen_words |= words(c) for d in leftover: rel = len(QUERY_WORDS & words(d)) dup = len(words(d) & chosen_words) s = rel - lam * dup if s > best_s: best_s = s best = d chosen.append(best) leftover.remove(best) return chosen print("greedy overlap") ranked = sorted(DOCS, key=lambda d: -len(QUERY_WORDS & words(d))) for d in ranked[:2]: print(" ", d) print("mmr") for d in mmr(DOCS): print(" ", d)
Run to execute this in your browser. Nothing is sent to a server.