Spaces:
Sleeping
Sleeping
| """Tests for the offline evaluation harness.""" | |
| from news_search.evaluate import build_pseudo_qrels, evaluate | |
| def test_build_pseudo_qrels_maps_known_terms(engine): | |
| qrels = build_pseudo_qrels(["covid vaccine", "election", "zzz nonsense"], engine) | |
| # 'zzz nonsense' maps to no category and must be excluded. | |
| assert "zzz nonsense" not in qrels | |
| # qrels values are sets of doc_ids drawn from the index. | |
| for q, rel in qrels.items(): | |
| assert isinstance(rel, set) | |
| assert rel.issubset(set(engine.index.meta)) | |
| def test_evaluate_returns_bounded_metrics(engine): | |
| rows = evaluate( | |
| engine, | |
| ["covid vaccine health", "election president vote"], | |
| methods=["bm25", "tfidf"], | |
| top_k=10, | |
| ) | |
| assert {r.method for r in rows} == {"bm25", "tfidf"} | |
| for r in rows: | |
| assert 0.0 <= r.precision <= 1.0 | |
| assert 0.0 <= r.recall <= 1.0 | |
| assert 0.0 <= r.f1 <= 1.0 | |
| assert r.avg_ms >= 0.0 | |
| def test_evaluate_default_methods(engine): | |
| rows = evaluate(engine, ["election president"], top_k=5) | |
| assert [r.method for r in rows] == ["bm25", "tfidf", "prf", "wordnet"] | |