import gradio as gr from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB # Training data data = [ ("I love this movie!", "positive"), ("This is terrible.", "negative"), ("What a great experience!", "positive"), ("I hate waiting in line.", "negative"), ("The weather is nice today.", "positive"), ("I'm so disappointed.", "negative"), ("It was okay, not great.", "negative"), ("Fantastic service!", "positive"), ("Worst day ever.", "negative"), ("Such a beautiful moment.", "positive"), ] X = [sentence for sentence, label in data] y = [label for sentence, label in data] vectorizer = TfidfVectorizer() X_vectorized = vectorizer.fit_transform(X) model = MultinomialNB() model.fit(X_vectorized, y) # Prediction function def predict_sentiment(text): vector = vectorizer.transform([text]) prediction = model.predict(vector)[0] if prediction == "positive": return "✅ POSITIVE 😊" else: return "❌ NEGATIVE 😠" # Gradio Interface demo = gr.Interface( fn=predict_sentiment, inputs=gr.Textbox(lines=3, placeholder="Type your sentence here..."), outputs="text", title="💬 LM Studios Sentiment Detector", description="Type something and see how it *feels*. This AI knows the tone of your message.", theme="default", flagging_mode="never", live=False ) demo.launch()