mteb/banking77
Viewer β’ Updated β’ 13.1k β’ 34.7k β’ 21
Route a banking customer's message to one of 77 intents (Banking77).
A single-purpose System 1 model built with BYOSM: fine-tuned from sentence-transformers/all-MiniLM-L6-v2 for this task only, with a calibrated
decision policy, shipped as a 22.74M-parameter ONNX bundle that runs on any CPU with onnxruntime.
| task | text / classify |
| labels | Refund_not_showing_up, activate_my_card, age_limit, apple_pay_or_google_pay, atm_support, automatic_top_up, balance_not_updated_after_bank_transfer, balance_not_updated_after_cheque_or_cash_deposit, beneficiary_not_allowed, cancel_transfer, card_about_to_expire, card_acceptance, card_arrival, card_delivery_estimate, card_linking, card_not_working, card_payment_fee_charged, card_payment_not_recognised, card_payment_wrong_exchange_rate, card_swallowed, cash_withdrawal_charge, cash_withdrawal_not_recognised, change_pin, compromised_card, contactless_not_working, country_support, declined_card_payment, declined_cash_withdrawal, declined_transfer, direct_debit_payment_not_recognised, disposable_card_limits, edit_personal_details, exchange_charge, exchange_rate, exchange_via_app, extra_charge_on_statement, failed_transfer, fiat_currency_support, get_disposable_virtual_card, get_physical_card, getting_spare_card, getting_virtual_card, lost_or_stolen_card, lost_or_stolen_phone, order_physical_card, passcode_forgotten, pending_card_payment, pending_cash_withdrawal, pending_top_up, pending_transfer, pin_blocked, receiving_money, request_refund, reverted_card_payment?, supported_cards_and_currencies, terminate_account, top_up_by_bank_transfer_charge, top_up_by_card_charge, top_up_by_cash_or_cheque, top_up_failed, top_up_limits, top_up_reverted, topping_up_by_card, transaction_charged_twice, transfer_fee_charged, transfer_into_account, transfer_not_received_by_recipient, transfer_timing, unable_to_verify_identity, verify_my_identity, verify_source_of_funds, verify_top_up, virtual_card_not_working, visa_or_mastercard, why_verify_identity, wrong_amount_of_cash_received, wrong_exchange_rate_for_cash_withdrawal |
| parameters | 22,743,629 (shipped as int8 ONNX, 23 MB) |
| backbone | hf:sentence-transformers/all-MiniLM-L6-v2 Β· embedding dim 384 |
| objective | accuracy, primary suite b77 |
| decision policy | threshold, threshold β (calibrated on b77's calib split) |
Refund_not_showing_up: Refund not showing upactivate_my_card: activate my cardage_limit: age limitapple_pay_or_google_pay: apple pay or google payatm_support: atm supportautomatic_top_up: automatic top upbalance_not_updated_after_bank_transfer: balance not updated after bank transferbalance_not_updated_after_cheque_or_cash_deposit: balance not updated after cheque or cash depositbeneficiary_not_allowed: beneficiary not allowedcancel_transfer: cancel transfercard_about_to_expire: card about to expirecard_acceptance: card acceptancecard_arrival: card arrivalcard_delivery_estimate: card delivery estimatecard_linking: card linkingcard_not_working: card not workingcard_payment_fee_charged: card payment fee chargedcard_payment_not_recognised: card payment not recognisedcard_payment_wrong_exchange_rate: card payment wrong exchange ratecard_swallowed: card swallowedcash_withdrawal_charge: cash withdrawal chargecash_withdrawal_not_recognised: cash withdrawal not recognisedchange_pin: change pincompromised_card: compromised cardcontactless_not_working: contactless not workingcountry_support: country supportdeclined_card_payment: declined card paymentdeclined_cash_withdrawal: declined cash withdrawaldeclined_transfer: declined transferdirect_debit_payment_not_recognised: direct debit payment not recogniseddisposable_card_limits: disposable card limitsedit_personal_details: edit personal detailsexchange_charge: exchange chargeexchange_rate: exchange rateexchange_via_app: exchange via appextra_charge_on_statement: extra charge on statementfailed_transfer: failed transferfiat_currency_support: fiat currency supportget_disposable_virtual_card: get disposable virtual cardget_physical_card: get physical cardgetting_spare_card: getting spare cardgetting_virtual_card: getting virtual cardlost_or_stolen_card: lost or stolen cardlost_or_stolen_phone: lost or stolen phoneorder_physical_card: order physical cardpasscode_forgotten: passcode forgottenpending_card_payment: pending card paymentpending_cash_withdrawal: pending cash withdrawalpending_top_up: pending top uppending_transfer: pending transferpin_blocked: pin blockedreceiving_money: receiving moneyrequest_refund: request refundreverted_card_payment?: reverted card payment?supported_cards_and_currencies: supported cards and currenciesterminate_account: terminate accounttop_up_by_bank_transfer_charge: top up by bank transfer chargetop_up_by_card_charge: top up by card chargetop_up_by_cash_or_cheque: top up by cash or chequetop_up_failed: top up failedtop_up_limits: top up limitstop_up_reverted: top up revertedtopping_up_by_card: topping up by cardtransaction_charged_twice: transaction charged twicetransfer_fee_charged: transfer fee chargedtransfer_into_account: transfer into accounttransfer_not_received_by_recipient: transfer not received by recipienttransfer_timing: transfer timingunable_to_verify_identity: unable to verify identityverify_my_identity: verify my identityverify_source_of_funds: verify source of fundsverify_top_up: verify top upvirtual_card_not_working: virtual card not workingvisa_or_mastercard: visa or mastercardwhy_verify_identity: why verify identitywrong_amount_of_cash_received: wrong amount of cash receivedwrong_exchange_rate_for_cash_withdrawal: wrong exchange rate for cash withdrawalEvery model below, this one and the baselines, was scored by the same code on the same frozen test splits, with its decision policy calibrated on the same calib splits. Bold = this model.
| model | params | builtin accuracy | b77 accuracy (primary) | builtin ROC-AUC | b77 ROC-AUC |
|---|---|---|---|---|---|
| final-s1 (this model) | 22.74M | β | 0.9374 | β | β |
| ampemallrd-s1 (BYOSM experiment) | 22.74M | 0.9340 | 0.9337 | β | β |
| suite | dataset | test items | accuracy | 95% CI | precision | recall | ROC-AUC | avg precision | decision threshold |
|---|---|---|---|---|---|---|---|---|---|
| b77 | mteb/banking77 | 2460 | 0.9374 | 0.928-0.948 | β | β | β | β | β |
pip install huggingface_hub numpy onnxruntime tokenizers
from huggingface_hub import snapshot_download
import sys
path = snapshot_download("bsye/byosm-intent")
sys.path.insert(0, path)
from byosm_rt import load
m = load(path)
print(m.predict("so what I wanted to ask was"))
emb = m.encode(...) # the learned representation (JEPA-style), for probes / retrieval / other heads
python byosm_rt.py serve . --port 8800
# GET /v1/models Β· POST /v1/intent/predict Β· POST /v1/intent/encode
spec.yaml (included in this repo).mteb/banking77: role labeledbyosm improve from the previous board):manual (from spec.yaml): train.layer_decay_floor=0.5 train.probe_epochs=0 train.ema=true train.seed=1manual (from ampemallrd-s1): train.holdout_test=autogit clone https://github.com/bsye/BYOSM && cd BYOSM && pip install -e .
# put spec.yaml from this repo at specialists/intent/spec.yaml, then:
byosm build intent && byosm board intent && byosm export intent