
CB-SentiLex: Bangladesh Bank Monetary Policy Stance Detection Benchmark
Version: 1.0
DOI: [10.5281/zenodo.21337423](doi.org)
License: MIT
Paper: "CB-SentiLex: An Auditable Weak-Supervision Framework for Central Bank Stance Detection with a Bangladesh Bank Benchmark"
Overview
This release contains the complete reproducibility package for CB-SentiLex, including the classified corpus, curated lexicon, trained transformer models, and three-annotator calibration set for Bangladesh Bank Monetary Policy Statements (2006–2026).
Contents
```
CB-SentiLex-Benchmark-v1.0/
├── data/
│ ├── bb_sentences_stance.csv # 7,432 classified sentences
│ ├── bb_document_stance.csv # 39 document-level stance scores
│ └── calibration_300.csv # 300-sentence, 3-annotator calibration set
├── lexicon/
│ └── dcs_lexicon.json # 75-term CB-SentiLex lexicon (34 hawkish, 41 dovish)
├── models/
│ └── distilbert/ # Fine-tuned DistilBERT checkpoint
│ ├── config.json
│ ├── model.safetensors
│ ├── tokenizer.json
│ └── tokenizer_config.json
├── scripts/ # Reproducibility scripts
│ ├── dcs_labeling.py # Core labeling function
│ ├── train_classifier.py # Transformer fine-tuning
│ ├── error_analysis.py # Error analysis
│ ├── policy_decision_validation.py # Policy-decision correlation
│ ├── external_validation_bootstrap_cis.py # Bootstrap confidence intervals
│ ├── falsification_tests.py # Falsification checks
│ ├── monthly_fx_validation.py # Monthly FX correlation
│ ├── forward_macro_validation.py # Annual macro correlation
│ ├── temporal_stability.py # Temporal split evaluation
│ ├── adversarial_testing.py # Adversarial robustness
│ └── publication_figures.py # Figure generation
├── LICENSE
├── README.md
└── citation.cff
```
File Descriptions
Corpus
- **bb_sentences_stance.csv**: 7,432 sentence-level classifications with weak labels, neural model predictions, and document metadata. Columns: `sentence_id`, `text`, `source_document`, `period`, `language`, `doc_type`, `page`, `stance_score`, `stance_label`, `pred_hawkish`, `pred_dovish`, `pred_neutral`, `predicted_label`.
- **bb_document_stance.csv**: 39 document-level stance scores aggregated from sentence labels. Columns: `bank`, `doc_id`, `date`, `year`, `total_sentences`, `hawkish_count`, `dovish_count`, `neutral_count`, `stance_score`.
Calibration Set
- **calibration_300.csv**: 300 sentences annotated by three independent annotators (Persons 1–3) with labels, confidence levels, notes, and consensus status. Includes weak labels for comparison. Blind two-annotator Fleiss' κ = 0.204; full three-annotator κ = 0.231.
Lexicon
- **dcs_lexicon.json**: The CB-SentiLex-Bengali lexicon with 75 terms (34 hawkish, 41 dovish) organized into four semantic families: rate keywords, inflation keywords, stance keywords, and policy keywords. Format: JSON with `hawkish` and `dovish` arrays.
Model
- **distilbert/**: Fine-tuned `distilbert-base-uncased` checkpoint for three-class stance classification (HAWKISH, DOVISH, NEUTRAL). Trained on the weakly labeled BB corpus. Benchmark performance: ~0.87 macro-F1 on the fixed test split.
Quick Start
```python
import pandas as pd
import json
from transformers import AutoModelForSequenceClassification, AutoTokenizer
# Load sentence-level data
df = pd.read_csv("data/bb_sentences_stance.csv")
# Load lexicon
with open("lexicon/dcs_lexicon.json") as f:
lexicon = json.load(f)
# Load calibration set
cal = pd.read_csv("data/calibration_300.csv")
# Load trained model
model = AutoModelForSequenceClassification.from_pretrained("models/distilbert")
tokenizer = AutoTokenizer.from_pretrained("models/distilbert")
# Classify a sentence
inputs = tokenizer("BB has decided to reduce the policy rate by 50 basis points",
return_tensors="pt", truncation=True, max_length=128)
outputs = model(**inputs)
predicted = ["HAWKISH", "DOVISH", "NEUTRAL"][outputs.logits.argmax(-1).item()]
```
Citation
If you use this dataset, please cite:
```bibtex
@misc{nabil2026cbsentilex,
title={CB-SentiLex: An Auditable Weak-Supervision Framework for Central Bank Stance Detection with a Bangladesh Bank Benchmark},
author={Ann Naser Nabil and Umme Hafsa},
year={2026},
publisher={Zenodo},
doi={10.5281/zenodo.21337423},
url={zenodo.org
}
```
License
MIT License. See [LICENSE](LICENSE) for details.
Contact
- Ann Naser Nabil: ann.n.nabil@gmail.com
- Umme Hafsa: hafsa.ju.2026@gmail.com