# German FinBERT (Pre-trained From Scratch Version)
<img src="https://github.com/mscherrmann/mscherrmann.github.io/blob/master/assets/img/publication_preview/germanBert.png?raw=true" alt="Alt text for the image" width="500" height="300"/>

German FinBERT is a BERT language model focusing on the financial domain within the German language. In my [paper](https://arxiv.org/pdf/2311.08793.pdf), I describe in more detail the steps taken to train the model and show that it outperforms its generic benchmarks for finance specific downstream tasks. 
This version of German FinBERT is pre-trained from scratch on German finance specific textual data, starting with the Bert-base architecture and the vocabulary of the [bert-base-german-cased model](https://huggingface.co/bert-base-german-cased) of Deepset.

## Overview  
**Author** Moritz Scherrmann
**Paper:** [here](https://arxiv.org/pdf/2311.08793.pdf)  
**Architecture:** BERT base 
**Language:** German  
**Specialization:** Financial textual data  
**Framework:** [MosaicML](https://github.com/mosaicml/examples/tree/main/examples/benchmarks/bert)

## Pre-training
German FinBERT's pre-training corpus includes a diverse range of financial documents, such as Bundesanzeiger reports, Handelsblatt articles, MarketScreener data, and additional sources including FAZ, ad-hoc announcements, LexisNexis & Event Registry content, Zeit Online articles, Wikipedia entries, and Gabler Wirtschaftslexikon. In total, the corpus spans from 1996 to 2023, consisting of 12.15 million documents with 10.12 billion tokens over 53.19 GB.

With a batch size of 4096, I train the German FinBERT model for 174,000 steps, summing up to more than 17 epochs. I use an Adam optimizer with decoupled weight decay regularization, with Adam parameters 0.9, 0.98, 1e − 6, a weight
decay of 1e − 5 and a maximal learning of 5e − 4. I train the model using a Nvidia DGX A100 node consisting of 8 A100 GPUs with 80 GB of memory each.

## Performance  
### Fine-tune Datasets
To fine-tune the model, I use several datasets, including:
- A manually labeled [multi-label database of German ad-hoc announcements](https://arxiv.org/pdf/2311.07598.pdf) containing 31,771 sentences, each associated with up to 20 possible topics.
- An extractive question-answering dataset based on the SQuAD format, which was created using 3,044 ad-hoc announcements processed by OpenAI's ChatGPT to generate and answer questions (see [here](https://huggingface.co/datasets/scherrmann/adhoc_quad)).
- The [financial phrase bank](https://arxiv.org/abs/1307.5336) of Malo et al. (2013) for sentiment classification, translated to German using [DeepL](https://www.deepl.com/translator) (see [here](https://huggingface.co/datasets/scherrmann/financial_phrasebank_75agree_german)).

### Benchmark Results
The pre-trained from scratch German FinBERT model demonstrated the following performances on finance-specific downstream tasks:

Ad-Hoc Multi-Label Database:
- Macro F1: 85.67%
- Micro F1: 85.17%

Ad-Hoc QuAD (Question Answering):
- Exact Match (EM): 50.23%
- F1 Score: 72.80%

Translated Financial Phrase Bank:
- Accuracy: 95.95%
- Macro F1: 92.70%
  
## Authors  
Moritz Scherrmann: `scherrmann [at] lmu.de`


For additional details regarding the performance on fine-tune datasets and benchmark results, please refer to the full documentation provided in the study.

See also:  
- scherrmann/GermanFinBERT_FP
- scherrmann/GermanFinBERT_FP_Topic
- scherrmann/GermanFinBERT_FP_QuAD
- scherrmann/GermanFinBERT_SC_Sentiment
{"language": ["de"], "license": "apache-2.0"}
transformers pytorch bert fill-mask de arxiv:2311.08793 arxiv:2311.07598 arxiv:1307.5336 license:apache-2.0 autotrain_compatible endpoints_compatible region:us