CoolFace
Datasetpublic

gagan3012/ppc

Political Parliamentary Corpus (PPC) A multilingual corpus of parliamentary speech, party manifestos and (for German) historical newspapers, exposed with one config per language. Every record follows a single unified schema, so the languages are directly comparable. 44,978,179 documents (~16.5B tokens, chars/4 estimate) 5 languages: de, en, it, pl, tr Coverage 1803–2026 22 sources, unified schema Languages / configs Config Language Documents ~Tokens Years… See the full description on the dataset page: https://huggingface.co/datasets/gagan3012/ppc.

sourceHugging Faceotherupdated 3mo agoView on Hugging Face
0likes158downloads
Dataset Card

Political Parliamentary Corpus (PPC)

A multilingual corpus of parliamentary speech, party manifestos and (for German) historical newspapers, exposed with one config per language. Every record follows a single unified schema, so the languages are directly comparable.

  • 44,978,179 documents (~16.5B tokens, chars/4 estimate)
  • 5 languages: de, en, it, pl, tr
  • Coverage 1803–2026
  • 22 sources, unified schema

Languages / configs

ConfigLanguageDocuments~TokensYearsSources
deGerman4,446,5243.3B1867–2026bundestagofficial, ddbnewspapers, germaparl, manifestode, parlamintat, parlamintdebeta, reichstag_bsb
enEnglish17,782,8426.7B1803–2026hansardhistoric, manifestouk, parlamint_gb, theyworkforyou
itItalian5,151,5303.5B1848–2022italianparliament, itaparl, manifestoit, parlamint_it
plPolish15,607,3982.5B1919–2025manifestopl, parlamintpl, ppcpl, sejmpl
trTurkish1,989,885621.5M1950–2023manifestotr, parlaminttr, tbmmspeechesv1
total44,978,17916.5B

Document types

TypeDocuments
parliamentary_speech38,426,749
parliamentary_session6,541,163
news9,963
manifesto304

Usage

python
from datasets import load_dataset

# load a single language (config)
ds = load_dataset("<your-username>/ppc", "de", split="train")
print(ds[0]["text"])

# stream instead of downloading everything
ds = load_dataset("<your-username>/ppc", "de", split="train", streaming=True)

Fields

FieldTypeDescription
idstringthe document identifier
sourcestringoriginating source dataset
countrystringISO country code
langstringISO 639-1 language code
doc_typestringmanifesto / news / parliamentarysession / parliamentaryspeech
datestringdocument date (string, may be partial e.g. YYYY-MM)
yearint32document year (int)
titlestringtitle where available
textstringthe document text
speakerstringspeaker name where available
speaker_rolestringspeaker role where available
partystringparty where available
housestringchamber / house where available
granularitystringdocument / sentence / session / speech
urlstringsource URL where available
metastringJSON string of source-specific extra fields
meta is stored as a JSON string so the Parquet schema stays identical across every source; parse it with json.loads(row["meta"]) when present.

Sources

SourceLangDocumentsYears
ppc_plpl15,326,2651919–2025
hansard_historicen9,462,4571803–2004
theyworkforyouen7,449,3411945–2026
itaparlit4,905,5441948–2022
germaparlde1,334,3671949–2021
parlamint_de_betade1,318,6291949–2025
tbmm_speeches_v1tr1,226,1391950–2023
bundestag_officialde1,089,3172025–2026
parlamint_gben870,9732015–2022
parlamint_trtr763,7282011–2022
parlamint_atde358,0481996–2022
reichstag_bsbde336,1151867–1939
parlamint_plpl280,9472015–2022
parlamint_itit210,7892013–2022
italian_parliamentit35,1051848–2022
ddb_newspapersde9,9631945–2024
sejm_plpl1482015–2023
manifesto_itit921963–2018
manifesto_dede851949–2025
manifesto_uken711964–2024
manifesto_plpl381991–2019
manifesto_trtr181954–2018