SetFit Aspect Model with sentence-transformers/paraphrase-multilingual-mpnet-base-v2
This is a SetFit model that can be used for Aspect Based Sentiment Analysis (ABSA). This SetFit model uses sentence-transformers/paraphrase-multilingual-mpnet-base-v2 as the Sentence Transformer embedding model. A SetFitHead instance is used for classification. In particular, this model is in charge of filtering aspect span candidates.
The model has been trained using an efficient few-shot learning technique that involves:
- Fine-tuning a Sentence Transformer with contrastive learning.
- Training a classification head with features from the fine-tuned Sentence Transformer.
This model was trained within the context of a larger system for ABSA, which looks like so:
- Use a spaCy model to select possible aspect span candidates.
- Use this SetFit model to filter these possible aspect span candidates.
- Use a SetFit model to classify the filtered aspect span candidates.
Model Details
Model Description
Model Sources
Model Labels
| Label |
Examples |
| aspect |
- "tavolo:Purtroppo tutte le volte, ed è anni, che tento di prenotare non sono mai stato fortunato........devo dirvi che ora ho un po' perso la poesia!!!!!! O aggiungono tavoli o cambiano location......mai fatta cosi tanta fatica per trovare un tavolo!!!!! Non so francamente se comporro' ancora...Altro"
- 'spesa:Devo premettere che sono sempre stato ospite e non so la spesa.Da quanto posso intuire la carne la fa da padrona ed essendo io ve non posso giudicare.Per me trovo sempre cose piacevoli come antipasti a buffet,primi veg riso alle verdure, trofie al pesto patate...Altro'
- 'carne:Devo premettere che sono sempre stato ospite e non so la spesa.Da quanto posso intuire la carne la fa da padrona ed essendo io ve non posso giudicare.Per me trovo sempre cose piacevoli come antipasti a buffet,primi veg riso alle verdure, trofie al pesto patate...Altro'
|
| no aspect |
- "volte:Purtroppo tutte le volte, ed è anni, che tento di prenotare non sono mai stato fortunato........devo dirvi che ora ho un po' perso la poesia!!!!!! O aggiungono tavoli o cambiano location......mai fatta cosi tanta fatica per trovare un tavolo!!!!! Non so francamente se comporro' ancora...Altro"
- "anni:Purtroppo tutte le volte, ed è anni, che tento di prenotare non sono mai stato fortunato........devo dirvi che ora ho un po' perso la poesia!!!!!! O aggiungono tavoli o cambiano location......mai fatta cosi tanta fatica per trovare un tavolo!!!!! Non so francamente se comporro' ancora...Altro"
- "poesia:Purtroppo tutte le volte, ed è anni, che tento di prenotare non sono mai stato fortunato........devo dirvi che ora ho un po' perso la poesia!!!!!! O aggiungono tavoli o cambiano location......mai fatta cosi tanta fatica per trovare un tavolo!!!!! Non so francamente se comporro' ancora...Altro"
|
Evaluation
Metrics
Uses
Direct Use for Inference
First install the SetFit library:
pip install setfit
Then you can load this model and run inference.
from setfit import AbsaModel
model = AbsaModel.from_pretrained(
"MattiaTintori/Final_aspect_Colab_It",
"setfit-absa-polarity",
)
preds = model("The food was great, but the venue is just way too busy.")
Training Details
Training Set Metrics
| Training set |
Min |
Median |
Max |
| Word count |
9 |
40.3192 |
137 |
| Label |
Training Sample Count |
| no aspect |
1379 |
| aspect |
1378 |
Training Hyperparameters
- batch_size: (128, 32)
- num_epochs: (5, 32)
- max_steps: -1
- sampling_strategy: oversampling
- num_iterations: 10
- body_learning_rate: (5e-05, 5e-05)
- head_learning_rate: 0.01
- loss: CosineSimilarityLoss
- distance_metric: cosine_distance
- margin: 0.25
- end_to_end: False
- use_amp: True
- warmup_proportion: 0.1
- l2_weight: 0.02
- seed: 42
- eval_max_steps: -1
- load_best_model_at_end: True
Training Results
| Epoch |
Step |
Training Loss |
Validation Loss |
| 0.0023 |
1 |
0.2484 |
- |
| 0.0464 |
20 |
0.2718 |
0.259 |
| 0.0928 |
40 |
0.2581 |
0.2544 |
| 0.1392 |
60 |
0.2266 |
0.2475 |
| 0.1856 |
80 |
0.233 |
0.2298 |
| 0.2320 |
100 |
0.2104 |
0.2145 |
| 0.2784 |
120 |
0.1487 |
0.2106 |
| 0.3248 |
140 |
0.1615 |
0.2314 |
| 0.3712 |
160 |
0.1328 |
0.2164 |
| 0.4176 |
180 |
0.0905 |
0.2164 |
| 0.4640 |
200 |
0.0934 |
0.2517 |
| 0.5104 |
220 |
0.0942 |
0.2185 |
| 0.5568 |
240 |
0.0774 |
0.2469 |
| 0.6032 |
260 |
0.1013 |
0.2248 |
| 0.6497 |
280 |
0.0781 |
0.2221 |
| 0.6961 |
300 |
0.0386 |
0.2362 |
| 0.7425 |
320 |
0.084 |
0.2386 |
- The bold row denotes the saved checkpoint.
Framework Versions
- Python: 3.10.12
- SetFit: 1.0.3
- Sentence Transformers: 3.1.0
- spaCy: 3.7.6
- Transformers: 4.39.0
- PyTorch: 2.4.0+cu121
- Datasets: 3.0.0
- Tokenizers: 0.15.2
Citation
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}
}