File size: 2,105 Bytes
173be42
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from transformers import pipeline

# --- 1. Load your model from the Hugging Face Hub ---
# Replace 'your-username/your-sentiment-model' with the actual name of your model.
# The pipeline will automatically download and cache the model.
try:
    sentiment_pipeline = pipeline(
        "sentiment-analysis",
        model="Relacosm/mca-sentiment-analyzer-v2" # ⬅️ CHANGE THIS
    )
    print("Model loaded successfully!")
except Exception as e:
    print(f"Error loading model: {e}")
    sentiment_pipeline = None # Handle case where model fails to load

# --- 2. Define the prediction function ---
# This function will take a string of text as input and return the model's prediction.
def predict_sentiment(text):
    if sentiment_pipeline is None:
        return {"error": "Model is not available. Please check the logs."}
    
    # The pipeline returns a list of dictionaries, e.g., [{'label': 'Positive', 'score': 0.99}]
    results = sentiment_pipeline(text)
    
    # We'll return the dictionary directly for Gradio's Label component
    # It will automatically display the label and its confidence score.
    return {result['label']: result['score'] for result in results}

# --- 3. Create the Gradio interface ---
# This creates the web UI with input and output components.
iface = gr.Interface(
    fn=predict_sentiment,
    inputs=gr.Textbox(lines=5, placeholder="Enter your text here..."),
    outputs=gr.Label(num_top_classes=3), # The Label component is great for classification
    title="Sentiment Analysis Demo",
    description="Enter some text to see the sentiment prediction from a fine-tuned model deployed on Hugging Face Spaces.",
    examples=[
        ["The new city planning initiative is fantastic, very forward-thinking."],
        ["I am really concerned about the budget allocation for environmental projects."],
        ["Why was there no public consultation on the new infrastructure project?"]
    ]
)

# --- 4. Launch the app ---
# The launch() method creates a web server and makes the UI accessible.
if __name__ == "__main__":
    iface.launch()