ginkgogo's picture
Add SetFit ABSA model
1500cf5 verified
---
library_name: setfit
tags:
- setfit
- absa
- sentence-transformers
- text-classification
- generated_from_setfit_trainer
metrics:
- accuracy
widget:
- text: ordered, great atmosphere, excellent service:FINALLY tried Mizza and wasn't
disappointed. Loved (almost) everything we ordered, great atmosphere, excellent
service, and the perfect setting for a lovely bday Sunday. The burrata & heirloom
tomatoes app was scrumptious, the salmon pasta, very flavorful and the salmon
perfectly cooked, I liked the toppings of the veggie pizza but wasn't a super
fan of the crust (doesn't mean I won't come back and try another pizza on their
menu ) and the cannoli was good although that dessert in general isn't my fave
(it was my bf's bday so had to get what he wanted ). The flourless chocolate cake
and limoncello cake are what I'll try next time. Had a great time and will be
back. Gave it 4 stars just cuz I wasn't that excited about the pizza and that's
something they're supposed to so well. Would recommend the restaurant though!
- text: "is because the food was decent,:Three reasons why it gets three stars:\n\n\
1. The crab cakes were good and is a definitely must try!\n2. The shrimp scampi\
\ was actually amazing in the sauce that it comes with, so that's another must\
\ try!\n3. The real reason why it is getting three stars is because service is\
\ everything in ANY restaurant you go to. Service started off great, waitress\
\ was attentive, but once we paid the bill and left a 20% tip, my guests and I,\
\ which was only three of us, stayed at the table to finish our drinks and we're\
\ looking at funny videos from a trip we went to. Point is the waitress rudely\
\ told my friend to lower the volume on his phone, yet other guests were just\
\ as loud and we were sitting OUTSIDE...where it is already a loud environment!\
\ \n\nI really want to give it 4 stars, but if I give 4 stars it changes it to,\
\ \"Yay! I'm a fan\", but I am not. The only reason why it's not getting 1 star,\
\ is because the food was decent, the view is nice and also the manager was extremely\
\ empathetic to the situation and it wasn't her fault at all that her waitress\
\ was obviously having an off day. I have never met a manager that attentive and\
\ she was incredible at handling and diffusing the situation. I cannot thank her\
\ enough for salvaging the rest of our evening for how poor the waitress treated\
\ paying customers."
- text: and the perfect setting for a lovely:FINALLY tried Mizza and wasn't disappointed.
Loved (almost) everything we ordered, great atmosphere, excellent service, and
the perfect setting for a lovely bday Sunday. The burrata & heirloom tomatoes
app was scrumptious, the salmon pasta, very flavorful and the salmon perfectly
cooked, I liked the toppings of the veggie pizza but wasn't a super fan of the
crust (doesn't mean I won't come back and try another pizza on their menu ) and
the cannoli was good although that dessert in general isn't my fave (it was my
bf's bday so had to get what he wanted ). The flourless chocolate cake and limoncello
cake are what I'll try next time. Had a great time and will be back. Gave it 4
stars just cuz I wasn't that excited about the pizza and that's something they're
supposed to so well. Would recommend the restaurant though!
- text: ) and the service is friendly and:I'm not sure what what I would do if I'd
never discovered Nikka, since it's the definitely the most authentic ramen one
can get in the area. Prices are standard for ramen (especially in SB) and the
service is friendly and efficient. Not only is Nikka's ramen amazing, their variety
of appetizers is also great. I've yet to try one that I don't like. Definitely
come here if you're looking to satisfy your ramen craving!
- text: Overall an excellent experience and the friendly:I got a to-go order for empanadas
on the lunch menu and it was fantastic. The dish was incredibly flavorful and
the Kombucha the owner recommended was amazing. Overall an excellent experience
and the friendly owner, waiters, and waitresses are just the cherry on top. I
would highly recommend any vegetarians to try out this spot!
pipeline_tag: text-classification
inference: false
base_model: sentence-transformers/all-mpnet-base-v2
model-index:
- name: SetFit Polarity Model with sentence-transformers/all-mpnet-base-v2
results:
- task:
type: text-classification
name: Text Classification
dataset:
name: Unknown
type: unknown
split: test
metrics:
- type: accuracy
value: 0.65
name: Accuracy
---
# SetFit Polarity Model with sentence-transformers/all-mpnet-base-v2
This is a [SetFit](https://github.com/huggingface/setfit) model that can be used for Aspect Based Sentiment Analysis (ABSA). 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 [LogisticRegression](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html) instance is used for classification. In particular, this model is in charge of classifying aspect polarities.
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.
This model was trained within the context of a larger system for ABSA, which looks like so:
1. Use a spaCy model to select possible aspect span candidates.
2. Use a SetFit model to filter these possible aspect span candidates.
3. **Use this SetFit model to classify the filtered aspect span candidates.**
## 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 [LogisticRegression](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html) instance
- **spaCy Model:** en_core_web_sm
- **SetFitABSA Aspect Model:** [ginkgogo/setfit-absa-bge-small-en-v1.5-restaurants-aspect](https://huggingface.co/ginkgogo/setfit-absa-bge-small-en-v1.5-restaurants-aspect)
- **SetFitABSA Polarity Model:** [ginkgogo/setfit-absa-bge-small-en-v1.5-restaurants-polarity](https://huggingface.co/ginkgogo/setfit-absa-bge-small-en-v1.5-restaurants-polarity)
- **Maximum Sequence Length:** 384 tokens
- **Number of Classes:** 4 classes
<!-- - **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)
### Model Labels
| Label | Examples |
|:---------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| negative | <ul><li>'into more American food, added burgers:They made it into more American food, added burgers and ribs and got rid of the tequila selection. We were so bummed. Used to be one of our favorite places to go for good Mexican food. The owner said the new direction was to appeal to more tourists.'</li></ul> |
| positive | <ul><li>"was great and seating was comfortable.:Such a cute little spot for desserts! I'm so glad we had time on our short visit to Santa Barbara to grab a slice of cake from here. My husband and I each got our own to slice to share of course. He said we didn't come all this way just to get one so we chose a slice of the berry cake and chocolate decadence. The berry cake was nice and fluffy without being too sweet. The acidity from the fruits balanced the sweetest of the cake wonderfully. If you're up for something rich then the chocolate decadence will not disappoint. Service was great and seating was comfortable. Order your sweet treats at the counter then a number will be given to you. Pick a table and get ready to enjoy because your sweets will be brought out to your table when ready."</li><li>'Soon, our food was delivered,:One brisk Saturday morning after asking workers during a stop for tylenol from the Hotel California Boutique the best breakfast place, they recommended Goat Tree. We crossed the busy street and greeted the hostess. The very kind young lady walked us to our table on the sunny patio. We skimmed the menu and decided on the chicken and waffle and a chocolate croissant. The wait was quite short and we spent it discussing the beautiful surrounding area. Soon, our food was delivered, and let me tell you, it was beautiful. On top of that, it was scrumptious. The fried chicken was perfect and tender. The waffle had the perfect balance of crunch and fluff. And how dare I forget the exquisite honey. Now this honey was the best I have ever tasted. It was topped with chia and pumpkin seeds. My daughter asked for her croissant warmed, and once again it was marvelous. After paying, I told our waitress how amazing the honey was. Next thing we knew, she brought out two large to go cups full of it! \n\nAbsolutely loved this place and everything about it. 100% recommend! I strongly award them 5 stars!'</li><li>". \n\nThe service was impeccable,:Man! I was so drunk when I ate here last weekend. \n\nI came up from LA to celebrate my boyfriend's best friend's graduation. So after the commencement ceremony a bunch of us went to a friend's house and had Vodka tonics. He made them great and I was drunk. So we went to dinner at this beautiful hotel overlooking the beach. \n\nThe best friend's parents bought us (about 20 people) dinner at Rodney's Steakhouse. There was a pre-set menu with different choices for us. \n\nFor the appetizer, I ordered the Sea Scallops. These were the best damn sea scallops I've ever had. They literally melted in my mouth and were so delicious. They came in a white wine and garlic butter onion tartlet with truffle vinaigrette.\n\nPlease keep in mind that the wine kept flowing and continued to get very giggly and drunk. So fun!\n\nFor the main course, I ordered the Roasted Dover Sole Fillet which had lump crab meat stuffing and lemon butter. It was good but it wasn't great. \n\nFor dessert I had the creme brulee which was strange tasting. I would have much rather had the chocolate mousse. \n\nThe service was impeccable, the bathrooms were very nice and clean and I met a lot of great people. Or so I think so. =)"</li></ul> |
| mixed | <ul><li>"is because the food was inedible.:I rarely ever give anything less than a 2 star and if I do, it is because the food was inedible. Literally, we paid so much for our entrees and tried to force ourselves to eat it because we hate to waste food but we couldn't even do that. Maybe we ordered the wrong dish. We had the ramen and the risotto- and we've had these type of dishes many times before. In fact, it's one of our favorite dishes normally. But the ramen was sooo disappointing. It was just watered down soy sauce. Imagine how salty that is. I've never had anything like this and was completely shocked. And the risotto was so undercooked. I am okay with al dente but I am saying this was borderline raw, hard, and was hard to digest. BUT- the BONE MARROW was AMAZING. Do order this. And maybe only this. It was perfectly balanced and savory and aromatic and presented beautifully. That was the only good tapas that we ordered and why I will give it a 2 star instead of a 1 star. Also, we spoke to the manager about our food and we discounted us and was really nice about it. I felt pretty bad but I also thought they should know- maybe we just came on a bad day? I am just really surprised that this place had such a high rating. I took my mom here for her birthday and we left this restaurant hungry and disappointed"</li></ul> |
| neutral | <ul><li>"limited amount of seating for the long:If you're ever missing LA street tacos, Lilly's is the closest you're gonna get. Without taking that into consideration, Lilly's is without a doubt one of the cheapest places to get a filling and delicious meal along the Pacific Coast, and you will love it.\n\nThe $1.80 tacos come out before you're even done ordering, which is wild considering that while they have a bunch of meats already prepped, there's still a constant rotation of beef, pork, and chicken on the grill. All tacos come double-wrapped, and if you eat in, on a Styrofoam plate that might betray the county's love for eco-friendly packaging, but it certainly cuts down on the costs.\n\nThe salsa bar is never consistent; while all the fixings are always well-stocked, how spicy each salsa is changes from day to day. Sometimes, it'll be the dark brown one that'll cause you to start crying; other days, it's the green one that packs a punch. Taste test each one before you squirt it on. Old Yelp reviews suggest their grilled onions and jalapenos used to be free, but it costs $1 for a small plate of them nowadays.\n\nBeing next to the 101 isn't ideal, nor is the limited amount of seating for the long line that builds up outside the store. But these are the kinds of things you get saddled with, not quite the stuff you can choose or imagine happening when you first start out.\n\nYou'll incur a $0.50 charge for credit cards if you spend less than $5 here. You're going to want so many tacos that you won't even think about it."</li></ul> |
## Evaluation
### Metrics
| Label | Accuracy |
|:--------|:---------|
| **all** | 0.65 |
## 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 AbsaModel
# Download from the 🤗 Hub
model = AbsaModel.from_pretrained(
"ginkgogo/setfit-absa-bge-small-en-v1.5-restaurants-aspect",
"ginkgogo/setfit-absa-bge-small-en-v1.5-restaurants-polarity",
)
# Run inference
preds = model("The food was great, but the venue is just way too busy.")
```
<!--
### 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 | 25 | 123.9048 | 272 |
| Label | Training Sample Count |
|:---------|:----------------------|
| mixed | 1 |
| negative | 1 |
| neutral | 1 |
| positive | 18 |
### Training Hyperparameters
- batch_size: (50, 50)
- num_epochs: (5, 5)
- max_steps: -1
- sampling_strategy: oversampling
- body_learning_rate: (2e-05, 1e-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
- seed: 42
- eval_max_steps: -1
- load_best_model_at_end: True
### Training Results
| Epoch | Step | Training Loss | Validation Loss |
|:------:|:----:|:-------------:|:---------------:|
| 0.1429 | 1 | 0.2034 | - |
### Framework Versions
- Python: 3.10.12
- SetFit: 1.0.3
- Sentence Transformers: 2.6.0
- spaCy: 3.7.4
- Transformers: 4.38.2
- PyTorch: 2.2.1+cu121
- Datasets: 2.18.0
- Tokenizers: 0.15.2
## 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.*
-->