Svngoku/african-history-merged-v1
African History Chat (Merged v1) Unified supervised fine-tuning (SFT) dataset of multi-turn chat examples focused on African history, colonial history, and related Q&A. Six public Hub chat datasets were normalized, concatenated, and deduplicated by conversation content into a single train split. Rows: 26,897 · Split: train only · Format: chat (messages with role / content) Artifacts (Parquet / JSONL / manifest): Svngoku/jobs-artifacts What this dataset is for… See the full description on the dataset page: https://huggingface.co/datasets/Svngoku/african-history-merged-v1.
African History Chat (Merged v1)
Unified supervised fine-tuning (SFT) dataset of multi-turn chat examples focused on African history, colonial history, and related Q&A. Six public Hub chat datasets were normalized, concatenated, and deduplicated by conversation content into a single train split.
Rows: 26,897 · Split: train only · Format: chat (messages with role / content)
Artifacts (Parquet / JSONL / manifest): Svngoku/jobs-artifacts
What this dataset is for
- Fine-tuning or continued pre-training of chat models on African history topics
- Building retrieval-augmented or domain assistants with a shared chat schema
- Experimenting with merged corpora while keeping provenance (
source_dataset,source_row)
Schema
Example
from datasets import load_dataset
ds = load_dataset("Svngoku/african-history-merged-v1", split="train")
print(ds[0]["messages"])
# [{"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]
print(ds[0]["source_dataset"])Training snippet (TRL / transformers)
from datasets import load_dataset
ds = load_dataset("Svngoku/african-history-merged-v1", split="train")
def to_text(example):
parts = []
for m in example["messages"]:
parts.append(f"{m['role']}: {m['content']}")
return {"text": "\n".join(parts)}
ds = ds.map(to_text, remove_columns=ds.column_names)Use your model’s chat template instead of plain role: lines when training production models.
Source datasets
Merged from these Hub repos (all train split):
\*Included in the merge pipeline; every row was a duplicate of content already present in another source (same content_hash).
How it was built
- Load each source’s
trainsplit and normalizemessagesto{role, content}strings. - Add provenance fields and a
content_hashper row. - Concatenate all sources.
- Keep the first occurrence of each unique
content_hash(conversation-level dedupe).
Rebuild locally:
git clone <your-hf-datasets-lab-repo>
cd datasets
set -a && source .env && set +a
uv run scripts/merge_chat_datasets.py \
--push-to Svngoku/african-history-merged-v1 \
--artifacts-repo \
--privateExports and manifest.json are also stored under `Svngoku/jobs-artifacts`.
Languages & content
- Primarily English; includes French material (e.g. colonial France history set).
- Topics span African history, culture, factbook-style Q&A, and related instructional dialogue.
- Content is synthetic or curated chat derived from upstream datasets—not primary historical archives.
Limitations
- Not fact-checked for this merge; verify claims before deployment.
- License: composite dataset—respect licenses and terms of each source dataset when redistributing or commercializing.
- Dedupe is exact match on normalized
messages; paraphrases or near-duplicates may remain. - Bias & coverage: over-represents sources with more rows (see table above); not geographically or linguistically balanced.
Citation
If you use this dataset, cite the upstream sources you rely on and link this repo:
@misc{african_history_merged_v1,
title = {African History Chat (Merged v1)},
author = {Svngoku},
year = {2026},
howpublished = {\url{https://huggingface.co/datasets/Svngoku/african-history-merged-v1}}
}Maintainer
- Hub: Svngoku
- Issues / updates: open a discussion on the dataset repo or regenerate with
scripts/merge_chat_datasets.py
