| | --- |
| | 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 Binary BERT |
| |
|
| | This is a BERT 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 binary 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 |
| |
|
| | Install our [python package](https://pypi.org/project/zeroshot-classifier/): |
| | ```bash |
| | pip install zeroshot-classifier |
| | ``` |
| |
|
| | Then, you can use the model like this: |
| |
|
| | ```python |
| | >>> from zeroshot_classifier.models import BinaryBertCrossEncoder |
| | >>> model = BinaryBertCrossEncoder(model_name='claritylab/zero-shot-implicit-binary-bert') |
| | |
| | >>> 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}' |
| | |
| | >>> query = [[text, lb] for lb in labels] |
| | >>> logits = model.predict(query, apply_softmax=True) |
| | >>> print(logits) |
| | |
| | [[7.3497969e-04 9.9926502e-01] |
| | [9.9988127e-01 1.1870124e-04] |
| | [9.9988961e-01 1.1033980e-04] |
| | [1.9227572e-03 9.9807727e-01] |
| | [9.9985313e-01 1.4685343e-04] |
| | [9.9938977e-01 6.1021477e-04] |
| | [9.9838030e-01 1.6197052e-03]] |
| | ``` |
| |
|