
# SetFit with sentence-transformers/all-mpnet-base-v2

This is a [SetFit](https://github.com/huggingface/setfit) model that can be used for Text Classification. This SetFit model uses [sentence-transformers/all-mpnet-base-v2](https://huggingface.co/sentence-transformers/all-mpnet-base-v2) as the Sentence Transformer embedding model. A OneVsRestClassifier instance is used for classification.

The model has been trained using an efficient few-shot learning technique that involves:

1. Fine-tuning a [Sentence Transformer](https://www.sbert.net) with contrastive learning.
2. Training a classification head with features from the fine-tuned Sentence Transformer.

## Model Details

### Model Description
- **Model Type:** SetFit
- **Sentence Transformer body:** [sentence-transformers/all-mpnet-base-v2](https://huggingface.co/sentence-transformers/all-mpnet-base-v2)
- **Classification head:** a OneVsRestClassifier instance
- **Maximum Sequence Length:** 384 tokens
<!-- - **Number of Classes:** Unknown -->
<!-- - **Training Dataset:** [Unknown](https://huggingface.co/datasets/unknown) -->
<!-- - **Language:** Unknown -->
<!-- - **License:** Unknown -->

### Model Sources

- **Repository:** [SetFit on GitHub](https://github.com/huggingface/setfit)
- **Paper:** [Efficient Few-Shot Learning Without Prompts](https://arxiv.org/abs/2209.11055)
- **Blogpost:** [SetFit: Efficient Few-Shot Learning Without Prompts](https://huggingface.co/blog/setfit)

## Evaluation

### Metrics
| Label   | Precision_Micro | Precision_Weighted | Precision_Samples | Recall_Micro | Recall_Weighted | Recall_Samples | F1-Score | Accuracy |
|:--------|:----------------|:-------------------|:------------------|:-------------|:----------------|:---------------|:---------|:---------|
| **all** | 0.7762          | 0.7969             | 0.7762            | 0.7762       | 0.7762          | 0.7762         | 0.7762   | 0.7762   |

## Uses

### Direct Use for Inference

First install the SetFit library:

```bash
pip install setfit
```

Then you can load this model and run inference.

```python
from setfit import SetFitModel

# Download from the 🤗 Hub
model = SetFitModel.from_pretrained("leavoigt/vulnerability_target")
# Run inference
preds = model("To support the traditional knowledge and adaptive capacity of indigenous peoples in the face of climate change, we aim to establish 50 community-based adaptation projects led by indigenous peoples by 2030, focusing on the sustainable management of natural resources and the preservation of cultural practices.")
```

<!--
### Downstream Use

*List how someone could finetune this model on their own dataset.*
-->

<!--
### Out-of-Scope Use

*List how the model may foreseeably be misused and address what users ought not to do with the model.*
-->

<!--
## Bias, Risks and Limitations

*What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.*
-->

<!--
### Recommendations

*What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.*
-->

## Training Details

### Training Set Metrics
| Training set | Min | Median  | Max |
|:-------------|:----|:--------|:----|
| Word count   | 15  | 70.8675 | 238 |

### Training Hyperparameters
- batch_size: (16, 16)
- num_epochs: (1, 1)
- max_steps: -1
- sampling_strategy: oversampling
- num_iterations: 20
- body_learning_rate: (2e-05, 2e-05)
- head_learning_rate: 2e-05
- loss: CosineSimilarityLoss
- distance_metric: cosine_distance
- margin: 0.25
- end_to_end: False
- use_amp: False
- warmup_proportion: 0.1
- seed: 42
- eval_max_steps: -1
- load_best_model_at_end: False

### Training Results
| Epoch  | Step | Training Loss | Validation Loss |
|:------:|:----:|:-------------:|:---------------:|
| 0.0012 | 1    | 0.3493        | -               |
| 0.0602 | 50   | 0.2285        | -               |
| 0.1205 | 100  | 0.1092        | -               |
| 0.1807 | 150  | 0.1348        | -               |
| 0.2410 | 200  | 0.0365        | -               |
| 0.3012 | 250  | 0.0052        | -               |
| 0.3614 | 300  | 0.0012        | -               |
| 0.4217 | 350  | 0.0031        | -               |
| 0.4819 | 400  | 0.0001        | -               |
| 0.5422 | 450  | 0.0011        | -               |
| 0.6024 | 500  | 0.0001        | -               |
| 0.6627 | 550  | 0.0001        | -               |
| 0.7229 | 600  | 0.0001        | -               |
| 0.7831 | 650  | 0.0002        | -               |
| 0.8434 | 700  | 0.0001        | -               |
| 0.9036 | 750  | 0.0001        | -               |
| 0.9639 | 800  | 0.0001        | -               |

### Framework Versions
- Python: 3.10.12
- SetFit: 1.0.1
- Sentence Transformers: 2.2.2
- Transformers: 4.25.1
- PyTorch: 2.1.0+cu121
- Datasets: 2.16.1
- Tokenizers: 0.13.3

## Citation

### BibTeX
```bibtex
@article{https://doi.org/10.48550/arxiv.2209.11055,
    doi = {10.48550/ARXIV.2209.11055},
    url = {https://arxiv.org/abs/2209.11055},
    author = {Tunstall, Lewis and Reimers, Nils and Jo, Unso Eun Seo and Bates, Luke and Korat, Daniel and Wasserblat, Moshe and Pereg, Oren},
    keywords = {Computation and Language (cs.CL), FOS: Computer and information sciences, FOS: Computer and information sciences},
    title = {Efficient Few-Shot Learning Without Prompts},
    publisher = {arXiv},
    year = {2022},
    copyright = {Creative Commons Attribution 4.0 International}
}
```

<!--
## Glossary

*Clearly define terms in order to be accessible across audiences.*
-->

<!--
## Model Card Authors

*Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.*
-->

<!--
## Model Card Contact

*Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.*
-->
{"library_name": "setfit", "tags": ["setfit", "sentence-transformers", "text-classification", "generated_from_setfit_trainer"], "metrics": ["Precision_micro", "Precision_weighted", "Precision_samples", "Recall_micro", "Recall_weighted", "Recall_samples", "F1-Score", "accuracy"], "widget": [{"text": "To support the traditional knowledge and adaptive capacity of indigenous peoples in the face of climate change, we aim to establish 50 community-based adaptation projects led by indigenous peoples by 2030, focusing on the sustainable management of natural resources and the preservation of cultural practices."}, {"text": "Measures related to climate change are incorporated into national policies, strategies and plans. In this regard, mechanisms are also promoted to increase capacity for effective planning and management in relation to climate change. SDG No. 14 (Marine life). Adaptation. There is a link between the Coastal Marine Resources sector in the measures proposed in this document and the indicators of this SDG regarding the sustainable management and conservation of marine and coastal ecosystems to achieve an increase in their climate resilience. SDG No."}, {"text": " Pathways with higher demand for food, feed, and water, more resource-intensive consumption and production, and more limited technological improvements in agriculture yields result in higher risks from water scarcity in drylands, land degradation, and food insecurity 1. This means that communities that rely on agriculture for their livelihoods are at risk of losing their crops and experiencing food shortages due to climate change."}, {"text": "The population aged 60 years and above is projected to increase from almost one million (988,000) in 2000 to over six million (6,319,000) by 2050. The female aged population will continue to grow faster and will increasingly be far higher than the male population for the advanced ages. Policies addressing the needs of the elderly will have to take the sex structure of the aged population into consideration."}, {"text": "Indigenous peoples who choose or are forced to migrate away from their traditional lands often face double discrimination as both migrants and as indigenous peoples. Indigenous peoples may be more vulnerable to irregular migration such as trafficking and smuggling, owing to sudden displacement by a climactic event, limited legal migration options and limited opportunities to make informed choices. Deforestation, particularly in developing countries, is pushing indigenous families to migrate to cities for economic reasons, often ending up in urban slums."}], "pipeline_tag": "text-classification", "inference": false, "base_model": "sentence-transformers/all-mpnet-base-v2", "model-index": [{"name": "SetFit with sentence-transformers/all-mpnet-base-v2", "results": [{"task": {"type": "text-classification", "name": "Text Classification"}, "dataset": {"name": "Unknown", "type": "unknown", "split": "test"}, "metrics": [{"type": "Precision_micro", "value": 0.7762237762237763, "name": "Precision_Micro"}, {"type": "Precision_weighted", "value": 0.7968800430338892, "name": "Precision_Weighted"}, {"type": "Precision_samples", "value": 0.7762237762237763, "name": "Precision_Samples"}, {"type": "Recall_micro", "value": 0.7762237762237763, "name": "Recall_Micro"}, {"type": "Recall_weighted", "value": 0.7762237762237763, "name": "Recall_Weighted"}, {"type": "Recall_samples", "value": 0.7762237762237763, "name": "Recall_Samples"}, {"type": "F1-Score", "value": 0.7762237762237763, "name": "F1-Score"}, {"type": "accuracy", "value": 0.7762237762237763, "name": "Accuracy"}]}]}]}
setfit pytorch mpnet sentence-transformers text-classification generated_from_setfit_trainer arxiv:2209.11055 base_model:sentence-transformers/all-mpnet-base-v2 model-index has_space region:us