File size: 2,029 Bytes
8968d2f 045e772 8968d2f 045e772 8968d2f 045e772 8968d2f 045e772 8968d2f 045e772 8968d2f eebc470 8968d2f 045e772 8968d2f 045e772 8968d2f 045e772 8968d2f 045e772 ad2a537 045e772 555c306 045e772 8968d2f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
---
library_name: zeroshot_classifier
tags:
- transformers
- sentence-transformers
- zeroshot_classifier
license: mit
datasets:
- claritylab/UTCD
language:
- en
pipeline_tag: zero-shot-classification
metrics:
- accuracy
---
# Zero-shot Implicit Bi-Encoder
This is a [sentence-transformers](https://www.SBERT.net) model.
It was introduced in the Findings of ACL'23 Paper **Label Agnostic Pre-training for Zero-shot Text Classification** by ***Christopher Clarke, Yuzhao Heng, Yiping Kang, Krisztian Flautner, Lingjia Tang and Jason Mars***.
The code for training and evaluating this model can be found [here](https://github.com/ChrisIsKing/zero-shot-text-classification/tree/master).
## Model description
This model is intended for zero-shot text classification.
It was trained under the dual encoding classification framework via implicit training with the aspect-normalized [UTCD](https://huggingface.co/datasets/claritylab/UTCD) dataset.
- **Finetuned from model:** [`bert-base-uncased`](https://huggingface.co/bert-base-uncased)
## Usage
You can use the model like this:
```python
>>> from sentence_transformers import SentenceTransformer, util as sbert_util
>>> model = SentenceTransformer(model_name_or_path='claritylab/zero-shot-implicit-bi-encoder')
>>> text = "I'd like to have this track onto my Classical Relaxations playlist."
>>> labels = [
>>> 'Add To Playlist', 'Book Restaurant', 'Get Weather', 'Play Music', 'Rate Book', 'Search Creative Work',
>>> 'Search Screening Event'
>>> ]
>>> aspect = 'intent'
>>> aspect_sep_token = model.tokenizer.additional_special_tokens[0]
>>> text = f'{aspect} {aspect_sep_token} {text}'
>>> text_embed = model.encode(text)
>>> label_embeds = model.encode(labels)
>>> scores = [sbert_util.cos_sim(text_embed, lb_embed).item() for lb_embed in label_embeds]
>>> print(scores)
[
0.7989747524261475,
0.003968147560954094,
0.027803801000118256,
0.9257574081420898,
0.1492517590522766,
0.010640474036335945,
0.012045462615787983
]
```
|