Add banking intents mapping module

This commit introduces a new Python module, banking_intents.py, which maps intent labels (0-76) to their corresponding intent names for the Banking77 application. The module includes functions to retrieve intent names by label and vice versa, along with a utility to display all intents. This addition enhances the application's ability to handle various banking-related queries effectively.
This commit is contained in:
Hope Ogbons
2025-10-31 03:19:49 +01:00
parent 69fd8fd99c
commit 8368944a43

View File

@@ -0,0 +1,148 @@
"""
Banking77 Intent Mapping
Maps label numbers (0-76) to intent names
"""
INTENT_LABELS = [
"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"
]
def get_intent(label_number):
"""
Get intent name from label number.
Args:
label_number (int): Label from 0 to 76
Returns:
str: Intent name
Example:
>>> get_intent(0)
'activate_my_card'
>>> get_intent(25)
'declined_card_payment'
"""
if 0 <= label_number <= 76:
return INTENT_LABELS[label_number]
else:
raise ValueError(f"Label must be between 0 and 76, got {label_number}")
def get_label(intent_name):
"""
Get label number from intent name.
Args:
intent_name (str): Intent name
Returns:
int: Label number (0-76)
Example:
>>> get_label('activate_my_card')
0
>>> get_label('declined_card_payment')
25
"""
try:
return INTENT_LABELS.index(intent_name)
except ValueError:
raise ValueError(f"Intent '{intent_name}' not found in labels")
# Quick access
def show_all_intents():
"""Display all 77 intents with their labels"""
for i, intent in enumerate(INTENT_LABELS):
print(f"{i}\t{intent}")
if __name__ == "__main__":
# Test the functions
print("Testing get_intent:")
print(f"Label 0: {get_intent(0)}")
print(f"Label 25: {get_intent(25)}")
print(f"Label 76: {get_intent(76)}")
print("\nTesting get_label:")
print(f"'activate_my_card': {get_label('activate_my_card')}")
print(f"'declined_card_payment': {get_label('declined_card_payment')}")