This dataset demonstrates how Verbalized Sampling (VS) increases diversity in open-ended question answering while maintaining response quality. From the paper Verbalized Sampling: How to Mitigate Mode Collapse and Unlock LLM Diversity.
The Open-Ended QA dataset contains diverse responses from state-of-the-art LLMs to open-ended questions across various domains. This dataset evaluates:
Verbalized Sampling methods achieve 2-3x higher diversity in response distributions while maintaining comparable quality to direct prompting. Methods like Multi-turn and Sequence are particularly effective at exploring the answer space.
Each config represents a different prompting method:
Direct: Standard prompting without special instructions (1 sample per question)CoT: Direct prompting with chain-of-thought (1 sample per question)Sequence: Sequential verbalized generation (20 samples per question)Multi-turn: Multi-turn verbalized sampling (20 samples per question)VS-Standard: Structured output with explicit probabilities (20 samples per question)VS-CoT: Verbalized Sampling with chain-of-thought reasoning (20 samples per question)VS-Multi: Combined verbalized sampling approach (20 samples per question)Each split represents a different language model:
gpt_4_1: GPT-4.1gpt_4_1_mini: GPT-4.1-miniclaude_4_sonnet: Claude-4-Sonnetdeepseek_r1: DeepSeek-R1gemini_2_5_pro: Gemini-2.5-Progemini_2_5_flash: Gemini-2.5-Flasho3: O3qwen3_235b: Qwen3-235BEach example contains:
prompt (string): The open-ended question (e.g., "Name a Japanese prefecture. Only provide the answer without explanation or punctuation.")responses (string): JSON-encoded list of response objects, each containing:
text (string): The generated answerprobability (float): The model's verbalized probability for this responsemodel (string): The model identifier (matches the split name)from datasets import load_dataset
# Load a specific method configuration
dataset = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", "Multi-turn")
# Access data from a specific model
claude_data = dataset["claude_4_sonnet"]
print(f"Number of questions: {len(claude_data)}")
import json
from collections import Counter
# Calculate unique responses per question
for example in claude_data[:5]: # First 5 questions
responses = json.loads(example["responses"])
answers = [r["text"] for r in responses]
unique_answers = set(answers)
print(f"\nPrompt: {example['prompt'][:50]}...")
print(f"Total responses: {len(answers)}")
print(f"Unique responses: {len(unique_answers)}")
print(f"Diversity ratio: {len(unique_answers)/len(answers):.2%}")
print(f"Sample answers: {list(unique_answers)[:5]}")
import json
import numpy as np
def analyze_probabilities(dataset_split):
"""Analyze probability distributions in responses"""
all_probs = []
for example in dataset_split:
responses = json.loads(example["responses"])
probs = [r["probability"] for r in responses]
all_probs.extend(probs)
return {
"mean": np.mean(all_probs),
"std": np.std(all_probs),
"min": np.min(all_probs),
"max": np.max(all_probs)
}
# Compare probability distributions across methods
methods = ["Direct", "Multi-turn", "Sequence"]
for method in methods:
data = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", method)["gpt_4_1"]
stats = analyze_probabilities(data)
print(f"\n{method}:")
print(f" Mean probability: {stats['mean']:.3f}")
print(f" Std probability: {stats['std']:.3f}")
import json
from nltk.util import ngrams
from collections import Counter
def compute_diversity(responses, n=2):
"""Compute n-gram diversity (distinct-n metric)"""
all_ngrams = []
for example in responses:
parsed = json.loads(example["responses"])
for resp in parsed:
words = resp["text"].lower().split()
all_ngrams.extend(list(ngrams(words, n)))
unique_ngrams = len(set(all_ngrams))
total_ngrams = len(all_ngrams)
return unique_ngrams / total_ngrams if total_ngrams > 0 else 0
# Compare diversity across methods
direct = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", "Direct")["gpt_4_1"]
vs = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", "Multi-turn")["gpt_4_1"]
print(f"Direct distinct-2: {compute_diversity(direct, n=2):.3f}")
print(f"VS distinct-2: {compute_diversity(vs, n=2):.3f}")
Open-ended questions were selected to have multiple valid answers with varying popularity, allowing for evaluation of:
For each (model, method) combination:
No human annotations are present. All data consists of model-generated outputs. However, responses were automatically validated for:
The dataset includes diverse question types:
This dataset reveals and quantifies several LLM biases:
Verbalized Sampling methods mitigate these biases by exploring the full answer distribution.
This Agreement contains the terms and conditions that govern your access and use of the Verbalized-Sampling-Open-Ended-QA Dataset. You may not use this dataset if you do not accept this Agreement. By accessing this dataset, you hereby agree to the terms of the Agreement.
Key Terms:
Subject to your compliance with these terms, we grant you a limited, non-exclusive, non-transferable, non-sublicensable license to use the dataset for research, development, and improvement of software, algorithms, machine learning models, techniques, and technologies for both research and commercial purposes.
Limitation of Liability: IN NO EVENT WILL WE BE LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, EXEMPLARY, PUNITIVE, SPECIAL, OR INDIRECT DAMAGES ARISING OUT OF OR RELATING TO THIS AGREEMENT.
If you use this dataset in your research, please cite:
@misc{zhang2025verbalizedsamplingmitigatemode,
title={Verbalized Sampling: How to Mitigate Mode Collapse and Unlock LLM Diversity},
author={Jiayi Zhang and Simon Yu and Derek Chong and Anthony Sicilia and Michael R. Tomz and Christopher D. Manning and Weiyan Shi},
year={2025},
eprint={2510.01171},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2510.01171}
}
For questions or issues, please open an issue on our GitHub repository.
This dataset demonstrates how Verbalized Sampling (VS) increases diversity in open-ended question answering while maintaining response quality. From the paper Verbalized Sampling: How to Mitigate Mode Collapse and Unlock LLM Diversity.
The Open-Ended QA dataset contains diverse responses from state-of-the-art LLMs to open-ended questions across various domains. This dataset evaluates:
Verbalized Sampling methods achieve 2-3x higher diversity in response distributions while maintaining comparable quality to direct prompting. Methods like Multi-turn and Sequence are particularly effective at exploring the answer space.
Each config represents a different prompting method:
Direct: Standard prompting without special instructions (1 sample per question)CoT: Direct prompting with chain-of-thought (1 sample per question)Sequence: Sequential verbalized generation (20 samples per question)Multi-turn: Multi-turn verbalized sampling (20 samples per question)VS-Standard: Structured output with explicit probabilities (20 samples per question)VS-CoT: Verbalized Sampling with chain-of-thought reasoning (20 samples per question)VS-Multi: Combined verbalized sampling approach (20 samples per question)Each split represents a different language model:
gpt_4_1: GPT-4.1gpt_4_1_mini: GPT-4.1-miniclaude_4_sonnet: Claude-4-Sonnetdeepseek_r1: DeepSeek-R1gemini_2_5_pro: Gemini-2.5-Progemini_2_5_flash: Gemini-2.5-Flasho3: O3qwen3_235b: Qwen3-235BEach example contains:
prompt (string): The open-ended question (e.g., "Name a Japanese prefecture. Only provide the answer without explanation or punctuation.")responses (string): JSON-encoded list of response objects, each containing:
text (string): The generated answerprobability (float): The model's verbalized probability for this responsemodel (string): The model identifier (matches the split name)from datasets import load_dataset
# Load a specific method configuration
dataset = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", "Multi-turn")
# Access data from a specific model
claude_data = dataset["claude_4_sonnet"]
print(f"Number of questions: {len(claude_data)}")
import json
from collections import Counter
# Calculate unique responses per question
for example in claude_data[:5]: # First 5 questions
responses = json.loads(example["responses"])
answers = [r["text"] for r in responses]
unique_answers = set(answers)
print(f"\nPrompt: {example['prompt'][:50]}...")
print(f"Total responses: {len(answers)}")
print(f"Unique responses: {len(unique_answers)}")
print(f"Diversity ratio: {len(unique_answers)/len(answers):.2%}")
print(f"Sample answers: {list(unique_answers)[:5]}")
import json
import numpy as np
def analyze_probabilities(dataset_split):
"""Analyze probability distributions in responses"""
all_probs = []
for example in dataset_split:
responses = json.loads(example["responses"])
probs = [r["probability"] for r in responses]
all_probs.extend(probs)
return {
"mean": np.mean(all_probs),
"std": np.std(all_probs),
"min": np.min(all_probs),
"max": np.max(all_probs)
}
# Compare probability distributions across methods
methods = ["Direct", "Multi-turn", "Sequence"]
for method in methods:
data = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", method)["gpt_4_1"]
stats = analyze_probabilities(data)
print(f"\n{method}:")
print(f" Mean probability: {stats['mean']:.3f}")
print(f" Std probability: {stats['std']:.3f}")
import json
from nltk.util import ngrams
from collections import Counter
def compute_diversity(responses, n=2):
"""Compute n-gram diversity (distinct-n metric)"""
all_ngrams = []
for example in responses:
parsed = json.loads(example["responses"])
for resp in parsed:
words = resp["text"].lower().split()
all_ngrams.extend(list(ngrams(words, n)))
unique_ngrams = len(set(all_ngrams))
total_ngrams = len(all_ngrams)
return unique_ngrams / total_ngrams if total_ngrams > 0 else 0
# Compare diversity across methods
direct = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", "Direct")["gpt_4_1"]
vs = load_dataset("CHATS-Lab/Verbalized-Sampling-Open-Ended-QA", "Multi-turn")["gpt_4_1"]
print(f"Direct distinct-2: {compute_diversity(direct, n=2):.3f}")
print(f"VS distinct-2: {compute_diversity(vs, n=2):.3f}")
Open-ended questions were selected to have multiple valid answers with varying popularity, allowing for evaluation of:
For each (model, method) combination:
No human annotations are present. All data consists of model-generated outputs. However, responses were automatically validated for:
The dataset includes diverse question types:
This dataset reveals and quantifies several LLM biases:
Verbalized Sampling methods mitigate these biases by exploring the full answer distribution.
This Agreement contains the terms and conditions that govern your access and use of the Verbalized-Sampling-Open-Ended-QA Dataset. You may not use this dataset if you do not accept this Agreement. By accessing this dataset, you hereby agree to the terms of the Agreement.
Key Terms:
Subject to your compliance with these terms, we grant you a limited, non-exclusive, non-transferable, non-sublicensable license to use the dataset for research, development, and improvement of software, algorithms, machine learning models, techniques, and technologies for both research and commercial purposes.
Limitation of Liability: IN NO EVENT WILL WE BE LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, EXEMPLARY, PUNITIVE, SPECIAL, OR INDIRECT DAMAGES ARISING OUT OF OR RELATING TO THIS AGREEMENT.
If you use this dataset in your research, please cite:
@misc{zhang2025verbalizedsamplingmitigatemode,
title={Verbalized Sampling: How to Mitigate Mode Collapse and Unlock LLM Diversity},
author={Jiayi Zhang and Simon Yu and Derek Chong and Anthony Sicilia and Michael R. Tomz and Christopher D. Manning and Weiyan Shi},
year={2025},
eprint={2510.01171},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2510.01171}
}
For questions or issues, please open an issue on our GitHub repository.