timchen0618/wildchat-aqa-viewer
๐ฌ WildChat-AQA Viewer
Static viewer for the WildChat-AQA aggregative question-answering benchmark (paper, EMNLP 2025 ยท dataset ยท GitHub).
WildChat-AQA asks aggregative questions over WildChat chat logs โ e.g. "what are the most popular topics for user X?" โ answered by aggregating over the conversations matching a condition. Each question is 10-way multiple choice; the answer is the option with the highest weight.
The Eval tab
One question at a time, showing:
- Question + badges (target type ยท keyword type ยท #conditions ยท #matching conversations).
- Condition โ the aggregation filter (
user_name,country,language,label_level_1/2topic,time_week,keywords_aggregated), with label ids resolved to names. - Answer โ all 10 options as weighted bars, the argmax highlighted.
- Aggregation Evidence โ the raw
target_candidates(value + count) that the answer is aggregated from, with label ids resolved. - Supporting Conversations โ the actual WildChat conversations matching the condition (lazy-loaded, full raw turns rendered as chat), capped at 30 per question (largest first; flagged when capped / sampled).
- PROBE Query & Metadata โ the GPT-generated retrieval query, target/keyword type, hash.
Sidebar: full-text search (question / hash) + filters for target type, keyword type, and condition dimension, with prev/next (โ / โ).
Data layout
Generated by scripts/build_wildchat_aqa.py from three source datasets:
eval/index.json # light list for the sidebar (5,637 entries)
eval/records/<qhash>.json # per-question: question, condition, options+weights, evidence, PROBE query, capped support refs
corpus/b<N>.json # conversations packed into 2048 buckets (bucket = int(hash[:8],16) % 2048), lazy-loadedCondition matching mirrors the benchmark's aggregation: OR within a repeated condition type, AND across types; time_week matches a 7-day window; label values encode as "<L1>.<L2>". Supporting conversations are capped at 30 per question (--cap); the ~3 truly across-all questions show a size-ranked sample of the full corpus.
Regenerating the shards
# download sources (see build_wildchat_aqa.py header), then:
python scripts/build_wildchat_aqa.py --src <src> --out . --cap 30Local dev
python -m http.server 8000 # then open http://localhost:8000/Deploy = push to the Hugging Face Space main (served statically, no build step). The ~60k conversations are packed into 2048 bucket files (corpus/b<N>.json) because HF static Spaces fall back to serving README.md at the root once the repo file tree grows past ~10k files.
