PoC for financial document Named Entity Recognition (NER).
ADOR/
├── architecture/
│ └── ADOR_Architecture(GAD).docx # Global Architecture Document
├── parser/
│ └── docx_parser.py # Rule-based parser for DOCX term sheets
├── ner/
│ ├── ner_extractor.py # Three NER model backends for chat messages
│ └── GMD_NER_Methodology.md # Methodology: NER model selection
├── llm/
│ └── ADOR_NER_LLM_Pipeline (GMD).docx # Methodology: LLM + RAG pipeline for PDFs
├── streamlit_app.py # Streamlit UI
└── requirements.txt
pip install -r requirements.txt
python -m spacy download en_core_web_trf
python -m streamlit run streamlit_app.py
python parser/docx_parser.py "path/to/termsheet.docx"
Drag and drop any .docx term sheet. A rule-based parser scans tables and paragraphs to extract 9 financial entities.
| Entity | Example |
|---|---|
| Counterparty | BANK ABC |
| Initial Valuation Date | 31 January 2025 |
| Notional | EUR 1 million |
| Valuation Date | 31 July 2026 |
| Maturity | 07 August 2026 |
| Underlying | Allianz SE (ISIN DE0008404005) |
| Coupon | 0% |
| Barrier | 75.00% of Share |
| Calendar | TARGET |
Type a financial chat message and choose one of three NER model backends.
| Model | HuggingFace ID | Labels | Notes |
|---|---|---|---|
| GLiNER | urchade/gliner_medium-v2.1 | User-defined (zero-shot) | Best for custom financial entities. Confidence threshold slider available. |
| DistilBERT NER | elastic/distilbert-base-uncased-finetuned-conll03-english | PER, ORG, LOC, MISC | Fast, uncased. Good for persons, organisations, locations. |
| spaCy trf | en_core_web_trf | 18 OntoNotes types (incl. DATE, MONEY) | Broadest label set. |
| Entity | GLiNER | DistilBERT | spaCy trf |
|---|---|---|---|
| Counterparty (ORG) | ✅ | ✅ (ORG) | ✅ (ORG) |
| Notional | ✅ | ❌ | ✅ (MONEY) |
| ISIN | ✅ | ❌ | ❌ |
| Underlying | ✅ | ❌ | ❌ |
| Maturity | ✅ | ❌ | ✅ (DATE) |
| Bid / Offer | ✅ | ❌ | ❌ |
| Payment Frequency | ✅ | ❌ | ✅ (DATE) |
| Person name | ✅ | ✅ (PER) | ✅ (PERSON) |
| Location | ✅ | ✅ (LOC) | ✅ (GPE) |
| Date | ✅ | ❌ | ✅ (DATE) |
1 commits
Python
100.0%
PoC for financial document Named Entity Recognition (NER).
ADOR/
├── architecture/
│ └── ADOR_Architecture(GAD).docx # Global Architecture Document
├── parser/
│ └── docx_parser.py # Rule-based parser for DOCX term sheets
├── ner/
│ ├── ner_extractor.py # Three NER model backends for chat messages
│ └── GMD_NER_Methodology.md # Methodology: NER model selection
├── llm/
│ └── ADOR_NER_LLM_Pipeline (GMD).docx # Methodology: LLM + RAG pipeline for PDFs
├── streamlit_app.py # Streamlit UI
└── requirements.txt
pip install -r requirements.txt
python -m spacy download en_core_web_trf
python -m streamlit run streamlit_app.py
python parser/docx_parser.py "path/to/termsheet.docx"
Drag and drop any .docx term sheet. A rule-based parser scans tables and paragraphs to extract 9 financial entities.
| Entity | Example |
|---|---|
| Counterparty | BANK ABC |
| Initial Valuation Date | 31 January 2025 |
| Notional | EUR 1 million |
| Valuation Date | 31 July 2026 |
| Maturity | 07 August 2026 |
| Underlying | Allianz SE (ISIN DE0008404005) |
| Coupon | 0% |
| Barrier | 75.00% of Share |
| Calendar | TARGET |
Type a financial chat message and choose one of three NER model backends.
| Model | HuggingFace ID | Labels | Notes |
|---|---|---|---|
| GLiNER | urchade/gliner_medium-v2.1 | User-defined (zero-shot) | Best for custom financial entities. Confidence threshold slider available. |
| DistilBERT NER | elastic/distilbert-base-uncased-finetuned-conll03-english | PER, ORG, LOC, MISC | Fast, uncased. Good for persons, organisations, locations. |
| spaCy trf | en_core_web_trf | 18 OntoNotes types (incl. DATE, MONEY) | Broadest label set. |
| Entity | GLiNER | DistilBERT | spaCy trf |
|---|---|---|---|
| Counterparty (ORG) | ✅ | ✅ (ORG) | ✅ (ORG) |
| Notional | ✅ | ❌ | ✅ (MONEY) |
| ISIN | ✅ | ❌ | ❌ |
| Underlying | ✅ | ❌ | ❌ |
| Maturity | ✅ | ❌ | ✅ (DATE) |
| Bid / Offer | ✅ | ❌ | ❌ |
| Payment Frequency | ✅ | ❌ | ✅ (DATE) |
| Person name | ✅ | ✅ (PER) | ✅ (PERSON) |
| Location | ✅ | ✅ (LOC) | ✅ (GPE) |
| Date | ✅ | ❌ | ✅ (DATE) |
1 commits
Python
100.0%