Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.feature_extraction.text import CountVectorizer | |
| from sklearn.naive_bayes import MultinomialNB | |
| from sklearn.metrics import accuracy_score, classification_report | |
| # Load the dataset | |
| def load_data(): | |
| df = pd.read_csv("tweet_emotions.csv") | |
| return df | |
| df = load_data() | |
| # Train a Naive Bayes classifier | |
| def train_classifier(data): | |
| vectorizer = CountVectorizer() | |
| X = vectorizer.fit_transform(data['content']) | |
| y = data['sentiment'] | |
| X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) | |
| naive_bayes_model = MultinomialNB() | |
| naive_bayes_model.fit(X_train, y_train) | |
| return naive_bayes_model, vectorizer, X_test, y_test | |
| naive_bayes_model, vectorizer, X_test, y_test = train_classifier(df) | |
| # Streamlit UI | |
| st.title("Emotion Detection App") | |
| # User input | |
| tweet = st.text_area("Enter a tweet:") | |
| # Emotion detection | |
| if st.button("Detect Emotion"): | |
| tweet_vectorized = vectorizer.transform([tweet]) | |
| prediction = naive_bayes_model.predict(tweet_vectorized) | |
| st.success(f"Predicted Emotion: {prediction[0]}") | |
| # Display the dataset | |
| st.subheader("Dataset Preview:") | |
| st.write(df.head()) | |
| # Model evaluation | |
| st.subheader("Model Evaluation:") | |
| y_pred = naive_bayes_model.predict(X_test) | |
| accuracy = accuracy_score(y_test, y_pred) | |
| classification_rep = classification_report(y_test, y_pred) | |
| st.write(f"Accuracy: {accuracy:.4f}") | |
| st.write("Classification Report:\n", classification_rep) | |