--- title: WildChat-AQA Viewer emoji: ๐Ÿ’ฌ colorFrom: green colorTo: indigo sdk: static pinned: false license: apache-2.0 --- # ๐Ÿ’ฌ WildChat-AQA Viewer Static viewer for the **WildChat-AQA** aggregative question-answering benchmark ([paper, EMNLP 2025](https://aclanthology.org/2025.emnlp-main.1667.pdf) ยท [dataset](https://huggingface.co/datasets/wtzhang-nlp/wildchat_aqa) ยท [GitHub](https://github.com/yuntian-group/wildchat_aggregative_question_answering)). 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/2` topic, `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: | source | used for | |---|---| | `wtzhang-nlp/wildchat_aqa` | the 5,637 questions, options, weights, target_candidates, conditions | | `ksx-wz/wildchat_aqa_conversations` | the supporting conversations (linked by condition) | | `ksx-wz/โ€ฆ_with_embedding_and_gpt_generated_query` | the PROBE `generated_query` (embeddings dropped) | | repo `wildchat_aqa_taxonomy/` | resolving `label_level_1/2` ids โ†’ names | ``` eval/index.json # light list for the sidebar (5,637 entries) eval/records/.json # per-question: question, condition, options+weights, evidence, PROBE query, capped support refs corpus/b.json # conversations packed into 2048 buckets (bucket = int(hash[:8],16) % 2048), lazy-loaded ``` **Condition 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 `"."`. 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 ```bash # download sources (see build_wildchat_aqa.py header), then: python scripts/build_wildchat_aqa.py --src --out . --cap 30 ``` ## Local dev ```bash 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.json`) because HF static Spaces fall back to serving `README.md` at the root once the repo file tree grows past ~10k files.