---
license: apache-2.0
thumbnail: https://huggingface.co/mrm8488/distilroberta-finetuned-financial-news-sentiment-analysis/resolve/main/logo_no_bg.png
tags:
- generated_from_trainer
- financial
- stocks
- sentiment
widget:
- text: "Operating profit totaled EUR 9.4 mn , down from EUR 11.7 mn in 2004 ."
datasets:
- financial_phrasebank
metrics:
- accuracy
model-index:
- name: distilRoberta-financial-sentiment
results:
- task:
name: Text Classification
type: text-classification
dataset:
name: financial_phrasebank
type: financial_phrasebank
args: sentences_allagree
metrics:
- name: Accuracy
type: accuracy
value: 0.9823008849557522
---
# DistilRoberta-financial-sentiment
This model is a fine-tuned version of [distilroberta-base](https://huggingface.co/distilroberta-base) on the financial_phrasebank dataset.
It achieves the following results on the evaluation set:
- Loss: 0.1116
- Accuracy: **0.98**23
## Base Model description
This model is a distilled version of the [RoBERTa-base model](https://huggingface.co/roberta-base). It follows the same training procedure as [DistilBERT](https://huggingface.co/distilbert-base-uncased).
The code for the distillation process can be found [here](https://github.com/huggingface/transformers/tree/master/examples/distillation).
This model is case-sensitive: it makes a difference between English and English.
The model has 6 layers, 768 dimension and 12 heads, totalizing 82M parameters (compared to 125M parameters for RoBERTa-base).
On average DistilRoBERTa is twice as fast as Roberta-base.
## Training Data
Polar sentiment dataset of sentences from financial news. The dataset consists of 4840 sentences from English language financial news categorised by sentiment. The dataset is divided by agreement rate of 5-8 annotators.
## Training procedure
### Training hyperparameters
The following hyperparameters were used during training:
- learning_rate: 2e-05
- train_batch_size: 8
- eval_batch_size: 8
- seed: 42
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: linear
- num_epochs: 5
### Training results
| Training Loss | Epoch | Step | Validation Loss | Accuracy |
|:-------------:|:-----:|:----:|:---------------:|:--------:|
| No log | 1.0 | 255 | 0.1670 | 0.9646 |
| 0.209 | 2.0 | 510 | 0.2290 | 0.9558 |
| 0.209 | 3.0 | 765 | 0.2044 | 0.9558 |
| 0.0326 | 4.0 | 1020 | 0.1116 | 0.9823 |
| 0.0326 | 5.0 | 1275 | 0.1127 | 0.9779 |
### Framework versions
- Transformers 4.10.2
- Pytorch 1.9.0+cu102
- Datasets 1.12.1
- Tokenizers 0.10.3
## Converting to TorchScript
This repository includes a script to convert the model to TorchScript format for optimized inference.
### Prerequisites
1. Make sure you have Python 3.7+ installed
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
### Running the Conversion Script
**You can run this script from any directory** - it downloads the model from Hugging Face Hub, so you don't need to be in this model repository.
**Option 1: Run from any directory**
```bash
python /path/to/convert_to_torchscript.py
```
**Option 2: Copy the script to your project directory and run it there**
```bash
# Copy the script to your project
cp convert_to_torchscript.py /your/project/directory/
cd /your/project/directory/
python convert_to_torchscript.py
```
**Option 3: Run from this repository (if you cloned it)**
```bash
cd distilroberta-finetuned-financial-news-sentiment-analysis
python convert_to_torchscript.py
```
### What the Script Does
The `convert_to_torchscript.py` script will:
1. **Download** the pre-trained DistilRoBERTa financial sentiment model from Hugging Face Hub (it doesn't use the local model files)
2. Convert it to TorchScript format using tracing
3. Save the optimized model as `model.pt` in the **current working directory** (wherever you run the script)
### Output
After successful execution, you'll find:
- `model.pt` - The TorchScript version of the model ready for production inference
The script uses an example financial text for tracing: *"Operating profit totaled EUR 9.4 mn, down from EUR 11.7 mn in 2004."*
### Using the Converted Model
Once converted, you can load and use the TorchScript model for inference:
```python
import torch
# Load the TorchScript model
model = torch.jit.load('model.pt')
model.eval()
# Your inference code here
```