# bilalezafar/centralbank-bert architecture

> Architecture diagram of the GitHub repository bilalezafar/centralbank-bert, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-08-08). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bilalezafar/centralbank-bert
- Repository: https://github.com/bilalezafar/centralbank-bert

## Overview

#### Purpose and Execution Model
This is a notebook-driven NLP research pipeline for analyzing CBDC discourse in central-bank text. There is no application service or package entry point; notebooks are the executable entry points for model training, inference, evaluation, and publication-result generation.

#### 1. Domain Encoder Foundation
Domain adaptation starts with masked-language-model training over BIS speeches, producing the CentralBank-BERT encoder used by downstream tasks.
- `1-Central Bank BERT (MLM)/CentralBank-BERT.ipynb`

The resulting encoder is externally published on Hugging Face as `bilalezafar/CentralBank-BERT`; training data and model artifacts are not represented as a reusable local code module.

#### 2. CBDC Detection Gate
The binary CBDC-vs-non-CBDC classifier is the gating stage for broad corpora: text extraction and keyword-assisted data preparation feed fine-tuning, then accepted CBDC material can receive finer labels.
- `2-CBDC-BERT/CBDC speeches data extraction for BERT.ipynb`
- `2-CBDC-BERT/CBDC-BERT model training and evaluation.ipynb`
- `2-CBDC-BERT/bert_training_data.csv`

`cbdc_keywords.csv` is a material extraction boundary. The trained classifier is served externally as `bilalezafar/CBDC-BERT`.

#### 3. Independent CBDC Attribute Classifiers
Four separately trained sentence-level classifiers consume CBDC text and predict complementary dimensions. Each notebook owns preprocessing, tokenization, fine-tuning, and evaluation, backed by its labeled CSV.
- Stance—Pro, Wait-and-See, Anti: `3-CBDC-Stance/cbdc-stance.ipynb`, `3-CBDC-Stance/stance_sentences.csv`
- Sentiment—Positive, Neutral, Negative: `4-CBDC-Sentiment/cbdc-sentiment.ipynb`, `4-CBDC-Sentiment/cbdc_sentiment_training.csv`
- Type—Retail, Wholesale, General: `5-CBDC-Type/cbdc-type.ipynb`, `5-CBDC-Type/cbdc_type_training.csv`
- Discourse—Feature, Process, Risk-Benefit: `6-CBDC-Discourse/cbdc-discourse.ipynb`, `6-CBDC-Discourse/cbdc_classification_training.csv`

These models are released separately through Hugging Face, rather than versioned as local weights.

#### 4. Central-Bank NER Extension
NER is a parallel task built on the domain-adapted encoder, intended to identify entities in central-banking discourse rather than enrich the CBDC classifier output directly.
- `7-CentralBank-NER/CentralBank-NER.ipynb`
- `7-CentralBank-NER/Access link to BIS Speeches NER dataset.docx`

Its dataset is externally accessed, making dataset availability a reproducibility boundary.

#### 5. Integrated Corpus Inference
The primary end-to-end analysis entry point reads a finalized CBDC corpus, invokes the classifier suite, and writes row-level predictions.
- `8-CBDC-Analysis and Results/CBDC Analysis and Resutls.ipynb`
- `8-CBDC-Analysis and Results/cbdc-dataset-final.csv`
- `8-CBDC-Analysis and Results/cbdc-dataset-predictions.csv`

Control flow is corpus input → CBDC gate/attribute predictions → merged prediction dataset → aggregate analysis. The prediction CSV is the central handoff between ML inference and research reporting.

#### 6. Results, Robustness, and Benchmarking
Post-inference outputs are materialized as CSV tables for label distributions, time series, crosstabs, confidence review, and exemplars.
- `8-CBDC-Analysis and Results/prediction_results/`
- `8-CBDC-Analysis and Results/descriptive_results/`
- `8-CBDC-Analysis and Results/compare_out/Comparision - Robustness.ipynb`

A matched encoder benchmark compares BERT-base-uncased against CentralBank-BERT across the CBDC tasks:
- `8-CBDC-Analysis and Results/CBDC classifiers benchmark with BERT-base.ipynb`

#### Runtime and External Dependencies
The runtime is Python/Jupyter with transformer-based BERT fine-tuning and inference. Hugging Face is the key external model distribution service. BIS speeches underpin encoder training and NER data access; the repository retains local labeled datasets and generated analytical outputs, but not a deployable API, orchestration system, or centralized pipeline library.

Main entry points: [`8-CBDC-Analysis and Results/CBDC Analysis and Resutls.ipynb`](https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/CBDC%20Analysis%20and%20Resutls.ipynb) (CBDC analysis), [`8-CBDC-Analysis and Results/cbdc-dataset-predictions.csv`](https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/cbdc-dataset-predictions.csv) (Prediction dataset), [`2-CBDC-BERT/CBDC-BERT model training and evaluation.ipynb`](https://github.com/bilalezafar/centralbank-bert/blob/main/2-CBDC-BERT/CBDC-BERT%20model%20training%20and%20evaluation.ipynb) (CBDC-BERT training), [`1-Central Bank BERT (MLM)/CentralBank-BERT.ipynb`](https://github.com/bilalezafar/centralbank-bert/blob/main/1-Central%20Bank%20BERT%20(MLM)/CentralBank-BERT.ipynb) (CentralBank-BERT MLM)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_foundation["Domain Foundation"]
  node_bis_speeches[("BIS speeches<br/>external corpus")]
  node_centralbank_bert_notebook["CentralBank-BERT MLM<br/>training notebook"]
  node_centralbank_bert{{"CentralBank-BERT<br/>published encoder"}}
  node_ner_notebook["CentralBank-NER<br/>NER training notebook"]
end

subgraph group_training["CBDC Classifier Training"]
  node_cbdc_extraction["CBDC speech extraction<br/>data preparation notebook"]
  node_cbdc_training_data[("CBDC gate labels<br/>labeled CSV")]
  node_cbdc_gate_training["CBDC-BERT training<br/>training notebook"]
  node_cbdc_bert{{"CBDC-BERT<br/>published classifier"}}
  node_stance_model["Stance classifier<br/>training notebook + labels<br/>[cbdc-stance.ipynb]"]
  node_sentiment_model["Sentiment classifier<br/>training notebook + labels"]
  node_type_model["Type classifier<br/>training notebook + labels<br/>[cbdc-type.ipynb]"]
  node_discourse_model["Discourse classifier<br/>training notebook + labels"]
end

subgraph group_inference["Corpus Inference"]
  node_final_corpus[("Final CBDC corpus<br/>input CSV")]
  node_analysis_notebook["CBDC analysis<br/>inference notebook"]
  node_predictions[("Prediction dataset<br/>row-level prediction CSV")]
end

subgraph group_reporting["Results and Validation"]
  node_result_tables[("Research result tables<br/>generated CSV outputs")]
  node_robustness["Robustness comparison<br/>analysis notebook"]
  node_benchmark["Encoder benchmark<br/>benchmark notebook"]
end

node_bis_speeches -->|"MLM corpus"| node_centralbank_bert_notebook
node_centralbank_bert_notebook -->|"publishes"| node_centralbank_bert
node_centralbank_bert -->|"initializes"| node_cbdc_gate_training
node_cbdc_extraction -->|"prepares"| node_cbdc_training_data
node_cbdc_training_data -->|"fine-tuning labels"| node_cbdc_gate_training
node_cbdc_gate_training -->|"publishes"| node_cbdc_bert
node_centralbank_bert -->|"initializes"| node_stance_model
node_centralbank_bert -->|"initializes"| node_sentiment_model
node_centralbank_bert -->|"initializes"| node_type_model
node_centralbank_bert -->|"initializes"| node_discourse_model
node_bis_speeches -.->|"external NER data"| node_ner_notebook
node_centralbank_bert -->|"encoder base"| node_ner_notebook
node_final_corpus -->|"corpus input"| node_analysis_notebook
node_cbdc_bert -->|"CBDC gate"| node_analysis_notebook
node_stance_model -->|"stance predictions"| node_analysis_notebook
node_sentiment_model -->|"sentiment predictions"| node_analysis_notebook
node_type_model -->|"type predictions"| node_analysis_notebook
node_discourse_model -->|"discourse predictions"| node_analysis_notebook
node_analysis_notebook -->|"writes merged rows"| node_predictions
node_predictions -->|"aggregates"| node_result_tables
node_predictions -->|"evaluates"| node_robustness
node_centralbank_bert -->|"compares"| node_benchmark

click node_centralbank_bert_notebook "https://github.com/bilalezafar/centralbank-bert/blob/main/1-Central%20Bank%20BERT%20(MLM)/CentralBank-BERT.ipynb"
click node_cbdc_extraction "https://github.com/bilalezafar/centralbank-bert/blob/main/2-CBDC-BERT/CBDC%20speeches%20data%20extraction%20for%20BERT.ipynb"
click node_cbdc_training_data "https://github.com/bilalezafar/centralbank-bert/blob/main/2-CBDC-BERT/bert_training_data.csv"
click node_cbdc_gate_training "https://github.com/bilalezafar/centralbank-bert/blob/main/2-CBDC-BERT/CBDC-BERT%20model%20training%20and%20evaluation.ipynb"
click node_stance_model "https://github.com/bilalezafar/centralbank-bert/blob/main/3-CBDC-Stance/cbdc-stance.ipynb"
click node_sentiment_model "https://github.com/bilalezafar/centralbank-bert/blob/main/4-CBDC-Sentiment/cbdc-sentiment.ipynb"
click node_type_model "https://github.com/bilalezafar/centralbank-bert/blob/main/5-CBDC-Type/cbdc-type.ipynb"
click node_discourse_model "https://github.com/bilalezafar/centralbank-bert/blob/main/6-CBDC-Discourse/cbdc-discourse.ipynb"
click node_ner_notebook "https://github.com/bilalezafar/centralbank-bert/blob/main/7-CentralBank-NER/CentralBank-NER.ipynb"
click node_final_corpus "https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/cbdc-dataset-final.csv"
click node_analysis_notebook "https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/CBDC%20Analysis%20and%20Resutls.ipynb"
click node_predictions "https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/cbdc-dataset-predictions.csv"
click node_robustness "https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/compare_out/Comparision%20-%20Robustness.ipynb"
click node_benchmark "https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/CBDC%20classifiers%20benchmark%20with%20BERT-base.ipynb"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bis_speeches,node_centralbank_bert_notebook,node_centralbank_bert,node_ner_notebook toneBlue
class node_cbdc_extraction,node_cbdc_training_data,node_cbdc_gate_training,node_cbdc_bert,node_stance_model,node_sentiment_model,node_type_model,node_discourse_model toneAmber
class node_final_corpus,node_analysis_notebook,node_predictions toneMint
class node_result_tables,node_robustness,node_benchmark toneRose
```

## Components

### Domain Foundation

- **BIS speeches**: external corpus · Source corpus for domain adaptation and NER data access.
- [CentralBank-BERT MLM](https://github.com/bilalezafar/centralbank-bert/blob/main/1-Central%20Bank%20BERT%20(MLM)/CentralBank-BERT.ipynb): training notebook · Adapts BERT with masked-language modeling. · `1-Central Bank BERT (MLM)/CentralBank-BERT.ipynb`
- **CentralBank-BERT**: published encoder · Shared domain-adapted Hugging Face encoder.
- [CentralBank-NER](https://github.com/bilalezafar/centralbank-bert/blob/main/7-CentralBank-NER/CentralBank-NER.ipynb): NER training notebook · Parallel central-banking entity-recognition task. · `7-CentralBank-NER/CentralBank-NER.ipynb`

### CBDC Classifier Training

- [CBDC speech extraction](https://github.com/bilalezafar/centralbank-bert/blob/main/2-CBDC-BERT/CBDC%20speeches%20data%20extraction%20for%20BERT.ipynb): data preparation notebook · `2-CBDC-BERT/CBDC speeches data extraction for BERT.ipynb`
- [CBDC gate labels](https://github.com/bilalezafar/centralbank-bert/blob/main/2-CBDC-BERT/bert_training_data.csv): labeled CSV · `2-CBDC-BERT/bert_training_data.csv`
- [CBDC-BERT training](https://github.com/bilalezafar/centralbank-bert/blob/main/2-CBDC-BERT/CBDC-BERT%20model%20training%20and%20evaluation.ipynb): training notebook · Fine-tunes and evaluates the CBDC detection gate. · `2-CBDC-BERT/CBDC-BERT model training and evaluation.ipynb`
- **CBDC-BERT**: published classifier · External CBDC versus non-CBDC gate model.
- [Stance classifier](https://github.com/bilalezafar/centralbank-bert/blob/main/3-CBDC-Stance/cbdc-stance.ipynb): training notebook + labels · Predicts Pro, Wait-and-See, or Anti. · `3-CBDC-Stance/cbdc-stance.ipynb`
- [Sentiment classifier](https://github.com/bilalezafar/centralbank-bert/blob/main/4-CBDC-Sentiment/cbdc-sentiment.ipynb): training notebook + labels · Predicts Positive, Neutral, or Negative. · `4-CBDC-Sentiment/cbdc-sentiment.ipynb`
- [Type classifier](https://github.com/bilalezafar/centralbank-bert/blob/main/5-CBDC-Type/cbdc-type.ipynb): training notebook + labels · Predicts Retail, Wholesale, or General. · `5-CBDC-Type/cbdc-type.ipynb`
- [Discourse classifier](https://github.com/bilalezafar/centralbank-bert/blob/main/6-CBDC-Discourse/cbdc-discourse.ipynb): training notebook + labels · Predicts Feature, Process, or Risk-Benefit. · `6-CBDC-Discourse/cbdc-discourse.ipynb`

### Corpus Inference

- [Final CBDC corpus](https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/cbdc-dataset-final.csv): input CSV · `8-CBDC-Analysis and Results/cbdc-dataset-final.csv`
- [CBDC analysis](https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/CBDC%20Analysis%20and%20Resutls.ipynb): inference notebook · Runs the classifier suite and aggregates predictions. · `8-CBDC-Analysis and Results/CBDC Analysis and Resutls.ipynb`
- [Prediction dataset](https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/cbdc-dataset-predictions.csv): row-level prediction CSV · Central handoff from inference to reporting. · `8-CBDC-Analysis and Results/cbdc-dataset-predictions.csv`

### Results and Validation

- **Research result tables**: generated CSV outputs · Distributions, time series, crosstabs, confidence review, and exemplars.
- [Robustness comparison](https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/compare_out/Comparision%20-%20Robustness.ipynb): analysis notebook · `8-CBDC-Analysis and Results/compare_out/Comparision - Robustness.ipynb`
- [Encoder benchmark](https://github.com/bilalezafar/centralbank-bert/blob/main/8-CBDC-Analysis%20and%20Results/CBDC%20classifiers%20benchmark%20with%20BERT-base.ipynb): benchmark notebook · Compares BERT-base-uncased with CentralBank-BERT across CBDC tasks. · `8-CBDC-Analysis and Results/CBDC classifiers benchmark with BERT-base.ipynb`

## Connections

- BIS speeches → CentralBank-BERT MLM: MLM corpus
- CentralBank-BERT MLM → CentralBank-BERT: publishes
- CentralBank-BERT → CBDC-BERT training: initializes
- CBDC speech extraction → CBDC gate labels: prepares
- CBDC gate labels → CBDC-BERT training: fine-tuning labels
- CBDC-BERT training → CBDC-BERT: publishes
- CentralBank-BERT → Stance classifier: initializes
- CentralBank-BERT → Sentiment classifier: initializes
- CentralBank-BERT → Type classifier: initializes
- CentralBank-BERT → Discourse classifier: initializes
- BIS speeches → CentralBank-NER: external NER data
- CentralBank-BERT → CentralBank-NER: encoder base
- Final CBDC corpus → CBDC analysis: corpus input
- CBDC-BERT → CBDC analysis: CBDC gate
- Stance classifier → CBDC analysis: stance predictions
- Sentiment classifier → CBDC analysis: sentiment predictions
- Type classifier → CBDC analysis: type predictions
- Discourse classifier → CBDC analysis: discourse predictions
- CBDC analysis → Prediction dataset: writes merged rows
- Prediction dataset → Research result tables: aggregates
- Prediction dataset → Robustness comparison: evaluates
- CentralBank-BERT → Encoder benchmark: compares
