zeroix07's picture
Add SetFit ABSA model
5d3f7ef verified
|
raw
history blame
13.9 kB
metadata
library_name: setfit
tags:
  - setfit
  - absa
  - sentence-transformers
  - text-classification
  - generated_from_setfit_trainer
metrics:
  - accuracy
widget:
  - text: >-
      dan lembut, pai yang dibawa pulang menjadi basah di:Karena kulitnya yang
      tipis dan lembut, pai yang dibawa pulang menjadi basah di dalam kotaknya.
  - text: >-
      mungkin untuk mengkritik makanannya tersebut.:Dari makanan pembuka yang
      kami makan, dim sum, dan variasi makanannya lainnya, tidak mungkin untuk
      mengkritik makanannya tersebut.
  - text: >-
      di sana untuk Spesial Sabtu Malam Setengah Harga, tetapi Selasa:Saya tidak
      ada di sana untuk Spesial Sabtu Malam Setengah Harga, tetapi Selasa Malam.
  - text: >-
      dan mengatur ulang meja untuk enam orang:Di sebelah kanan saya, nyonya
      rumah berdiri di dekat seorang busboy dan mendesiskan rapido, rapido
      ketika dia mencoba membersihkan dan mengatur ulang meja untuk enam orang.
  - text: >-
      Jika Anda menyukai makanannya dan nilai yang:Jika Anda menyukai makanannya
      dan nilai yang Anda dapatkan dari beberapa restoran Chinatown, ini bukan
      tempat untuk Anda.
pipeline_tag: text-classification
inference: false
model-index:
  - name: SetFit Polarity Model
    results:
      - task:
          type: text-classification
          name: Text Classification
        dataset:
          name: Unknown
          type: unknown
          split: test
        metrics:
          - type: accuracy
            value: 0.6568627450980392
            name: Accuracy

SetFit Polarity Model

This is a SetFit model that can be used for Aspect Based Sentiment Analysis (ABSA). A LogisticRegression 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 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 Sources

Model Labels

Label Examples
positif
  • 'faktor penebusan adalah makanannya, yang berada:Agar benar-benar adil, satu-satunya faktor penebusan adalah makanannya, yang berada di atas rata-rata, tetapi tidak dapat menutupi semua kekurangan Teodora lainnya.'
  • 'makanannya benar-benar luar biasa:makanannya benar-benar luar biasa, dengan dapur yang sangat mumpuni yang dengan bangga akan menyiapkan apa pun yang Anda ingin makan, baik itu ada di menu atau tidak.'
  • 'biasa, dengan dapur yang sangat mumpuni:makanannya benar-benar luar biasa, dengan dapur yang sangat mumpuni yang dengan bangga akan menyiapkan apa pun yang Anda ingin makan, baik itu ada di menu atau tidak.'
netral
  • 'itu ada di menu atau tidak.:makanannya benar-benar luar biasa, dengan dapur yang sangat mumpuni yang dengan bangga akan menyiapkan apa pun yang Anda ingin makan, baik itu ada di menu atau tidak.'
  • 'bisa mencicipi kedua daging tersebut).:Favorit kami yang disepakati adalah orrechiete dengan sosis dan ayam (biasanya para pelayan berbaik hati membagi hidangan menjadi dua sehingga Anda bisa mencicipi kedua daging tersebut).'
  • 'jika Anda suka pizza berkulit tipis.:Pizza adalah yang terbaik jika Anda suka pizza berkulit tipis.'
negatif
  • 'yang masuk ke koki.:Semua uang digunakan untuk dekorasi interior, tidak ada satupun yang masuk ke koki.'
  • 'masuk akal meskipun layanannya buruk.:Harganya masuk akal meskipun layanannya buruk.'
  • 'mayones, lupa roti panggang kami, meninggalkan:Mereka tidak memiliki mayones, lupa roti panggang kami, meninggalkan bahan-bahan (yaitu keju dalam telur dadar), di bawah suhu panas dan daging terlalu matang sehingga hancur di piring ketika Anda menyentuhnya.'

Evaluation

Metrics

Label Accuracy
all 0.6569

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

# Download from the 🤗 Hub
model = AbsaModel.from_pretrained(
    "zeroix07/indo-setfit-absa-model-aspect",
    "zeroix07/indo-setfit-absa-model-polarity",
)
# Run inference
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 5 21.6519 45
Label Training Sample Count
konflik 0
negatif 48
netral 69
positif 64

Training Hyperparameters

  • batch_size: (6, 6)
  • num_epochs: (1, 16)
  • 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: False

Training Results

Epoch Step Training Loss Validation Loss
0.0003 1 0.2985 -
0.0139 50 0.14 -
0.0278 100 0.0913 -
0.0417 150 0.0447 -
0.0556 200 0.0932 -
0.0694 250 0.2864 -
0.0833 300 0.2556 -
0.0972 350 0.1447 -
0.1111 400 0.0084 -
0.125 450 0.003 -
0.1389 500 0.0035 -
0.1528 550 0.0074 -
0.1667 600 0.0031 -
0.1806 650 0.0014 -
0.1944 700 0.002 -
0.2083 750 0.0006 -
0.2222 800 0.0005 -
0.2361 850 0.0005 -
0.25 900 0.0005 -
0.2639 950 0.0015 -
0.2778 1000 0.0007 -
0.2917 1050 0.0006 -
0.3056 1100 0.0006 -
0.3194 1150 0.0007 -
0.3333 1200 0.0091 -
0.3472 1250 0.0004 -
0.3611 1300 0.0003 -
0.375 1350 0.0005 -
0.3889 1400 0.0006 -
0.4028 1450 0.0434 -
0.4167 1500 0.0006 -
0.4306 1550 0.0003 -
0.4444 1600 0.0005 -
0.4583 1650 0.0004 -
0.4722 1700 0.0021 -
0.4861 1750 0.0012 -
0.5 1800 0.0004 -
0.5139 1850 0.0005 -
0.5278 1900 0.0004 -
0.5417 1950 0.0003 -
0.5556 2000 0.0003 -
0.5694 2050 0.0005 -
0.5833 2100 0.0004 -
0.5972 2150 0.0004 -
0.6111 2200 0.0005 -
0.625 2250 0.0004 -
0.6389 2300 0.0005 -
0.6528 2350 0.0004 -
0.6667 2400 0.0003 -
0.6806 2450 0.0004 -
0.6944 2500 0.0007 -
0.7083 2550 0.0003 -
0.7222 2600 0.0003 -
0.7361 2650 0.101 -
0.75 2700 0.0003 -
0.7639 2750 0.0004 -
0.7778 2800 0.0004 -
0.7917 2850 0.0003 -
0.8056 2900 0.0004 -
0.8194 2950 0.0899 -
0.8333 3000 0.0003 -
0.8472 3050 0.0002 -
0.8611 3100 0.0002 -
0.875 3150 0.0003 -
0.8889 3200 0.0002 -
0.9028 3250 0.0003 -
0.9167 3300 0.0004 -
0.9306 3350 0.0003 -
0.9444 3400 0.0003 -
0.9583 3450 0.0547 -
0.9722 3500 0.0003 -
0.9861 3550 0.0004 -
1.0 3600 0.0002 -

Framework Versions

  • Python: 3.10.13
  • SetFit: 1.0.3
  • Sentence Transformers: 2.7.0
  • spaCy: 3.7.4
  • Transformers: 4.36.2
  • PyTorch: 2.1.2
  • Datasets: 2.18.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}
}