Download engine_3_0/hybrid_engine/example.py from Tirthanker/UniHive_RecSys: direct link, hf CLI and curl.
- Browser
- Download file 1.94 kB
-
https://huggingface.co/Tirthanker/UniHive_RecSys/resolve/main/engine_3_0/hybrid_engine/example.py
- Command line
-
hf download hf://Tirthanker/UniHive_RecSys/engine_3_0/hybrid_engine/example.py
-
curl -L -o example.py https://huggingface.co/Tirthanker/UniHive_RecSys/resolve/main/engine_3_0/hybrid_engine/example.py
1.94 kB
| """Demo with synthetic posts: a brand-new user vs the same user after 30 engaged posts. Run from the folder above: python -m hybrid_engine.example""" | |
| import numpy as np | |
| from hybrid_engine import HybridRecommender | |
| rng = np.random.default_rng(1) | |
| def vec(): | |
| v = rng.normal(size=1024); return (v / np.linalg.norm(v)).tolist() | |
| now = 1_800_000_000_000.0 | |
| posts = [dict(post_id=f"post-{i}", community=c, post_type="text", score=s, comments=s // 5, age_hours=a, title=f"Post {i}", body="...", tags=t, embedding=vec(), author=f"author-{i % 4}", impressions=imp) | |
| for i, (c, s, a, t, imp) in enumerate([("r/MachineLearning", 300, 3, {"machine-learning": 0.9}, 0), ("r/robotics", 40, 2, {"robotics": 0.95}, 1), | |
| ("r/IOT", 15, 30, {"iot": 0.9}, 4), ("r/learnprogramming", 900, 200, {"data-structures-and-algorithms": 0.8}, 50), | |
| ("r/computervision", 120, 10, {"computer-vision": 0.9, "deep-learning": 0.7}, 2), ("r/memes", 5000, 600, {}, 300)])] | |
| engine = HybridRecommender() | |
| new_user = {"interests": ["machine-learning", "computer-vision", "robotics"], "history": []} | |
| history = [dict(post_id=f"h{k}", ts_ms=now - 3_600_000 + k * 60_000, visible_ms=5000, focal_ms=5000 if k % 2 else 300, hover_ms=400, clicked=bool(k % 3 == 0), engaged=bool(k % 2), | |
| community="r/computervision", author="author-1", embedding=vec()) for k in range(60)] | |
| for name, user in (("brand-new user", new_user), ("same user after 30 engaged posts", {**new_user, "history": history})): | |
| print(f"\n{name}:") | |
| for d in engine.recommend(user, posts, now, k=6): | |
| print(f" {d['post_id']:8s} score {d['score']:.3f} | v2b {d['v2b']:.3f} | warm {('%.3f' % d['warm_probability']) if d['warm_probability'] is not None else ' - '} " | |
| f"| warm weight {d['warm_weight']:.2f} | freshness x{d['freshness_multiplier']:.2f} | push +{d['push']:.3f}") | |