Harshitha-92's picture
Create app.py
851216a verified
Raw
History Blame Contribute Delete
1.51 kB
import gradio as gr
from transformers import pipeline
import json
# Load a zero-shot classification pipeline
classifier = pipeline("zero-shot-classification",
model="facebook/bart-large-mnli")
# Define expense categories
expense_categories = [
"Groceries", "Restaurants", "Coffee Shops", "Transportation",
"Utilities", "Entertainment", "Shopping", "Health", "Travel",
"Education", "Home Improvement", "Personal Care", "Gifts"
]
def categorize_expense(merchant_name, item_description=""):
"""Categorize an expense based on merchant name and optional item description"""
# Combine inputs for better context
input_text = f"{merchant_name} {item_description}".strip()
# Run zero-shot classification
result = classifier(
input_text,
expense_categories,
multi_label=False
)
# Get top 3 categories with their scores
top_categories = []
for category, score in zip(result['labels'][:3], result['scores'][:3]):
top_categories.append({"category": category, "confidence": float(score)})
return json.dumps(top_categories)
# Create interface
iface = gr.Interface(
fn=categorize_expense,
inputs=[
gr.Textbox(label="Merchant Name"),
gr.Textbox(label="Item Description (Optional)")
],
outputs=gr.Textbox(label="Categories"),
title="Reciply Expense Categorizer",
description="Categorize expenses based on merchant name and item description"
)
iface.launch()