Description
This is a Bert-based model, which can be used to classify texts into 77 banking-related classes. This is a Multiclass model, meaning only one label will be returned as an output.
The classes are the following:
- 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
- Refund_not_showing_up
- 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
Predicted Entities
activate_my_card, age_limit, 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, apple_pay_or_google_pay, 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, atm_support, 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, automatic_top_up, 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, balance_not_updated_after_bank_transfer, receiving_money, Refund_not_showing_up, 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, balance_not_updated_after_cheque_or_cash_deposit, 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, beneficiary_not_allowed, 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, cancel_transfer, card_about_to_expire
How to use
document_assembler = nlp.DocumentAssembler() \
.setInputCol('text') \
.setOutputCol('document')
tokenizer = nlp.Tokenizer() \
.setInputCols(['document']) \
.setOutputCol('token')
sequenceClassifier = finance.BertForSequenceClassification \
.pretrained('finclf_bert_banking77', 'en', 'finance/models') \
.setInputCols(['token', 'document']) \
.setOutputCol('class') \
.setCaseSensitive(True) \
.setMaxSentenceLength(512)
pipeline = nlp.Pipeline(
stages=[
document_assembler,
tokenizer,
sequenceClassifier])
example = spark.createDataFrame([['I am still waiting on my card?']]).toDF("text")
result = pipeline.fit(example).transform(example)
Results
['atm_support']
Model Information
| Model Name: | finclf_bert_banking77 |
| Compatibility: | Finance NLP 1.0.0+ |
| License: | Licensed |
| Edition: | Official |
| Input Labels: | [document, token] |
| Output Labels: | [class] |
| Language: | en |
| Size: | 410.1 MB |
| Case sensitive: | true |
| Max sentence length: | 512 |
References
Banking77 dataset (https://paperswithcode.com/dataset/banking77-oos) and in-house data augmentation
Benchmarking
label Score
Loss 0.3031957447528839
Accuracy 0.9363636363636364
Macro_F1 0.9364655956915154
Micro_F1 0.9363636363636364
Weighted_F1 0.9364655956915157
Macro_Precision 0.9396792003322154
Micro_Precision 0.9363636363636364
Weighted_Precision 0.9396792003322155
Macro_Recall 0.9363636363636365
Micro_Recall 0.9363636363636364
Weighted_Recall 0.9363636363636364