File size: 4,156 Bytes
04e7b78
9604b3c
 
d3061d0
9604b3c
 
 
d3061d0
 
 
 
 
 
68c3408
 
d3061d0
068f0da
 
9604b3c
d3061d0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8230311
d3061d0
 
 
 
 
 
 
 
8230311
 
 
 
 
 
 
 
 
68c3408
8230311
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68c3408
d3061d0
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import gradio as gr
from transformers import pipeline

# Initialize the classifier
classifier = pipeline("zero-shot-classification", model="tasksource/ModernBERT-base-nli")

def zeroShotClassification(text_input, candidate_labels):
    # Clean and process the labels
    labels = [label.strip() for label in candidate_labels.split(',')]
    
    # Get predictions
    prediction = classifier(text_input, labels)
    
    # For Label component: Return raw scores (not percentage strings)
    results = {label: score for label, score in zip(prediction['labels'], prediction['scores'])}
    

    return results, ''

# Create the interface
demo = gr.Interface(
    fn=zeroShotClassification,
    inputs=[
        gr.Textbox(
            label="✍️ Input Text",
            placeholder="Enter the text you want to classify...",
            lines=3,
            elem_classes=["example-text"]
        ),
        gr.Textbox(
            label="🏷️ Category Labels",
            placeholder="Enter comma-separated categories (e.g., happy, sad, excited, confused)",
            lines=2,
            elem_classes=["example-text"]
        )
    ],
    outputs=[
        gr.Label(label="📊 Classification Results"),
        gr.Markdown(label="📈 Detailed Analysis", elem_classes=["markdown-text"])
    ],
    title="🤖 Zero-Shot Text Classification with ModernBERT",
    description="""
    Classify any text into categories of your choice using advanced AI! 
    
    **How to use:**
    1. Enter your text in the first box
    2. Add comma-separated category labels in the second box
    3. Click submit to see how your text matches each category
    
    Try the examples below or create your own classifications!
    """,
    examples=[
        ["One day I will see the world", "travel, adventure, dreams, future"],
        ["The movie had amazing special effects but a weak plot", "entertainment, technology, criticism, story"],
        ["This new phone has an amazing camera and great battery life", "technology, photography, consumer, review"],
        ["Mix flour, sugar, and eggs until well combined", "cooking, baking, instructions, food"],
        ["Scientists discovered a new species of butterfly in the Amazon", "science, nature, discovery, environment"],
        ["The team scored in the final minute to win the championship", "sports, victory, competition, excitement"],
        ["The painting uses vibrant colors to express deep emotions", "art, emotion, creativity, analysis"]
    ],
    cache_examples=False,
    css="""
    footer {display:none !important}
    .output-markdown{display:none !important}
    .gradio-container {
        font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;
        max-width: 1200px !important;
    }
    .gr-button-primary {
        background: linear-gradient(90deg, #11142D, #253885) !important;
        border: none !important;
        color: white !important;
        border-radius: 12px !important;
        transition: all 0.3s ease !important;
    }
    .gr-button-primary:hover {
        transform: translateY(-2px) !important;
        box-shadow: 0 4px 12px rgba(17, 20, 45, 0.3) !important;
        background: linear-gradient(90deg, #253885, #4285F4) !important;
    }
    .gr-input, .gr-textarea {
        border-radius: 8px !important;
        border: 2px solid #E2E8F0 !important;
        padding: 12px !important;
        font-size: 16px !important;
    }
    .gr-input:focus, .gr-textarea:focus {
        border-color: #253885 !important;
        box-shadow: 0 0 0 3px rgba(37, 56, 133, 0.2) !important;
    }
    .gr-panel {
        border-radius: 16px !important;
        box-shadow: 0 4px 15px -1px rgba(0, 0, 0, 0.1) !important;
        background: white !important;
    }
    .gr-box {
        border-radius: 12px !important;
        background: white !important;
    }
    .markdown-text {
        font-size: 16px !important;
        line-height: 1.6 !important;
    }
    .example-text {
        font-family: 'Inter', sans-serif !important;
        color: #11142D !important;
    }
    """
)

# Launch the app
if __name__ == "__main__":
    demo.launch()