/ Модель

Характеристики

Контекст
512 токенов
Параметры
25,9 млн
Лицензия
MIT
Архитектура
bert · dense
Базовая модель
all-MiniLM-L6-v2
Библиотека
setfit
Опубликована
1 сен 2026

indian-transaction-categorizer

Классификация текстаТекст → label3 профессии

SetFit-классификатор относит индийские банковские и карточные операции к 21 категории личных финансов.

116скачиваний за 30 дней0лайковвеса обновлены3 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Sumeetgpt разработал классификатор SetFit для автоматической категоризации описаний индийских банковских и карточных операций. Модель находит одну из 21 категорий личных финансов, включая продукты и питание, коммунальные платежи, поездки, зарплату, переводы между собственными счетами, платежи по кредитам и другие доходы или расходы. Она обрабатывает как банковские записи в форматах UPI, NEFT, IMPS, ACH и POS, так и обычные текстовые описания операций.

В основе — дообученный энкодер предложений sentence-transformers/all-MiniLM-L6-v2 с классификационной головой LogisticRegression; модель содержит 25,9 млн параметров и использует библиотеку SetFit. Контекст — до 512 токенов. Обучение проводилось на 970 синтетических примерах без реальных пользовательских транзакций; автор сообщает точность 94,6% на отложенном синтетическом наборе и 90% на небольшом наборе вручную составленных описаний. Модель предназначена для локального учета личных финансов и выпущена под лицензией MIT.

Оценки не подтверждены на реальных банковских выписках, поэтому результаты на практических данных могут отличаться. Некоторые зачисления, например проценты, дивиденды и кэшбэк, могут быть неоднозначны; для новых версий также следует учитывать, что появились три дополнительных класса.

Сценарии применения

  • категоризация UPI-платежей по магазинам и сервисам
  • распределение списаний NEFT, IMPS и POS по расходным категориям
  • выделение зарплаты и прочих поступлений
  • распознавание переводов между собственными счетами
  • отделение платежей по кредиту от покупок в рассрочку
  • автоматическая сортировка транзакций в приложении учета бюджета

Ограничения

Модель обучена только на синтетических данных и не оценивалась на реальных банковских выписках, поэтому качество на пользовательских транзакциях не гарантируется. Проценты, дивиденды и кэшбэк могут путаться с переводами в инвестиции и сбережения.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Indian Bank Transaction Categorizer (SetFit)

A SetFit text classifier that categorizes Indian bank/credit-card transaction narrations (UPI, NEFT, IMPS, ACH, POS) into everyday personal-finance spending categories.

It was built for a personal local-first finance tracker, after an explicit search turned up no public dataset that pairs real Indian narration formats with category labels — datasets either have real-looking Indian bank text with no labels (built for OCR/document-AI), or have category labels attached to generic Western merchant names with an "India" tag that doesn't reflect the actual UPI/NEFT/IMPS text shape. This model closes that specific gap using entirely synthetic, privacy-safe training data — see the companion training dataset, which also includes the generator script.

What's new in this version (v3)

Three categories were added, driven by real gaps found running this model in production:

  • Salary — split out of Income & Deposits so recurring paycheck income can be tracked separately from one-off credits (refunds, interest, cashback).
  • Internal Transfer — money moved between two accounts the same person/household owns (e.g. "SELF FUND TRANSFER", "MOB/SELFFT/..."). Previously these either inflated spend/investment totals or scattered across unrelated categories.
  • Loan Payment — loan EMI repayments. The training data specifically teaches the model to tell a loan EMI (numeric-reference-only narrations like ECS EMI 100826 or <ref>_EMI_<date>) apart from a retail purchase paid via no-cost EMI (e.g. EMI Uniqlo), which stays categorized as the thing actually bought.

⚠️ Breaking change: model.predict(...) can now return 3 new label strings it never returned before. If your code maps predictions through a fixed switch/dict keyed on the old 18 categories, update it to handle (or explicitly ignore) Salary, Internal Transfer, and Loan Payment before upgrading.

What it does

Classifies a transaction description into one of 21 categories:

Groceries · Eating Out · Kids Activities · Shopping & Clothing · Medicine & Pharmacy · Hospital & Medical · Utilities · Rent & Mortgage · Loan Payment · Transportation & Gas · Entertainment & Subscriptions · Travel · Insurance · Education · Personal Care · Investments & Savings Transfer · ATM & Cash · Fees & Interest · Salary · Income & Deposits · Internal Transfer

It handles two input styles, both seen during training:

  • Bank-narration shapes, e.g. UPI/Swiggy Instamart/swiggy123@ybl/Payment/HDFC, NEFT Dr-HDFC0000953-SURESH VERMA-Blinkit
  • Plain-language descriptions, e.g. "paid electricity bill BESCOM online", "SIP auto debit HDFC Flexicap fund"

Training data

970 rows, entirely synthetic, generated from:

  • Real public brand names (Swiggy, Zomato, BigBasket, PharmEasy, Netflix, Zerodha, IRCTC, etc.) and real company names used only as employer examples (Infosys, TCS, Akamai, etc.) — these are just facts about which businesses/employers exist, not personal data.
  • Randomly generated reference numbers, UPI VPAs, and person names (drawn from a generic name pool) — nothing here corresponds to any real person or real transaction.
  • Templates mirror narration shapes reverse-engineered while building statement parsers for ICICI, HDFC, Axis, and Scapia (India), and while building a real-time bank-alert-email parser — not copied from any real statement or email content.

Nothing in this model was trained on real user transaction data. The generator script is included in the [Budgeter repo] (synthetic_indian_generator.py) if you want to inspect or extend it.

Evaluation

Test setAccuracyHigh-confidence wrong (≥0.6, would slip past a review gate)
Held-out synthetic (unseen seed, 370 rows)94.6%0
Hand-crafted natural-language set, not from the generator's templates (30 rows)90.0%1

The held-out misses cluster almost entirely around one genuinely ambiguous boundary — "Interest Credit" / "Dividend Credit" / "Cashback Credit" vs. Investments & Savings Transfer — and land at low confidence, so in the source app these get flagged for human review rather than silently misfiled. Zero held-out misses are confidently wrong, which matters more in practice than the raw accuracy number.

Honest limitation: this is trained entirely on synthetic data. It has not been evaluated against real bank statements (for privacy reasons, it never will be by the original author) — treat the numbers above as a reasonable proxy, not a guarantee, and validate against your own data before relying on it.

Usage

from setfit import SetFitModel

model = SetFitModel.from_pretrained("Sumeetgpt/indian-transaction-categorizer")
model.predict(["UPI/Swiggy Instamart/swiggy@ybl/Payment/HDFC"])
# ['Groceries']

probs = model.predict_proba(["UPI/Swiggy Instamart/swiggy@ybl/Payment/HDFC"])[0]
# use max(probs) as a confidence score; gate low-confidence predictions for human review

Model Details

  • Model Type: SetFit
  • Sentence Transformer body: sentence-transformers/all-MiniLM-L6-v2
  • Classification head: LogisticRegression
  • Training: contrastive fine-tuning, 2 epochs, 20 iterations, batch size 16
  • License: MIT

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · setfit

Нельзя запустить

Модели SetFit требуют отдельного рантайма.

Класс архитектуры
BertModel
Ревизия весов
2033135

0 моделей