dipikakhullar/personalization-reddit-multiturn
personalization-reddit-multiturn Multi-turn (question, preferred_answer, full_conversation) records mined from Reddit. Companion to dipikakhullar/personalization-reddit: same OP-thanks-reply heuristic for identifying the preferred answerer, but this dataset additionally captures any contiguous back-and-forth between the OP and that single answerer after the thanks. A record is only emitted when there is at least one further turn beyond the OP's thanks reply. Splits… See the full description on the dataset page: https://huggingface.co/datasets/dipikakhullar/personalization-reddit-multiturn.
personalization-reddit-multiturn
Multi-turn (question, preferred_answer, full_conversation) records mined from Reddit. Companion to dipikakhullar/personalization-reddit: same OP-thanks-reply heuristic for identifying the preferred answerer, but this dataset additionally captures any contiguous back-and-forth between the OP and that single answerer after the thanks.
A record is only emitted when there is at least one further turn beyond the OP's thanks reply.
Splits
One config (subset) per subreddit; pick from the subset dropdown in the data viewer or load programmatically (each subset has a single train split):
from datasets import load_dataset
ds = load_dataset("dipikakhullar/personalization-reddit-multiturn",
"LanguageTechnology", split="train")Source
Raw post + comment dumps from the arctic_shift Pushshift mirror, fetched per-subreddit and extracted with may_22/extract_conversations.py in the personalization repo.
Raw NDJSON dumps are kept locally and are not redistributed here.
Files
conversations/sub-<subreddit>.jsonl # one conversation per line
stats/sub-<subreddit>.json # funnel counts per subredditRecord schema (conversations/sub-*.jsonl)
A turn has:
Turn layout:
- Turn 0: OP's question post.
- Turn 1: answerer's preferred answer.
- Turn 2: OP's thanks reply.
- Turn 3+: alternating answerer/OP, walked depth-first by earliest
created_utcat each branch.
op_metadata
Whatever author-level fields appear on the OP's submission record. Most are flair-related; many records have all fields null.
answerer_metadata
Author-level fields from the preferred-answer comment record. Comment records in the dumps carry fewer author fields than submissions.
metadata
Contiguity
Turns 1 through N always form a strict parent→child chain in the reply tree authored only by OP and the preferred answerer. Turn 0 → Turn 1 is not always direct: in some records the OP thanked a nested comment rather than a top-level reply, so third-party comments may sit between the question post and A1 in the original thread. Filter on metadata.preferred_answer_is_top_level == true to keep only records where the entire chain is contiguous from the question down.
Anonymization
Reddit usernames are hashed with the same salted-SHA256 scheme used in personalization-reddit, so user_id / answerer_user_id join across the two datasets when generated with the same ANON_SALT. Post/comment ids and text bodies are kept verbatim — content from public Reddit threads can still be re-identified by searching the post id or quoting the body.
Heuristic
For each kept question post:
- Find OP comments matching the same thanks-reply predicate used in
personalization-reddit(signals.py::is_thanks_reply). - Treat the parent of each thanks reply as the preferred answer.
- From the thanks reply, walk the comment tree: at each step take the earliest child by
created_utcwhose author is the expected next speaker (alternating answerer / OP). Stop when no such reply exists or the chain hits a bot, a deleted account, or an empty/[deleted]/[removed]body. - Emit a record only when this walk yielded at least one further turn.
