Spaces:
Sleeping
Sleeping
import pandas as pd | |
import streamlit as st | |
import warnings | |
warnings.filterwarnings("ignore") | |
from sklearn.model_selection import train_test_split | |
from sklearn.feature_extraction.text import CountVectorizer | |
from sklearn.pipeline import Pipeline | |
from sklearn.naive_bayes import MultinomialNB | |
from sklearn.metrics import accuracy_score | |
# Load and clean data | |
df = pd.read_csv(r"C:\Users\91879\Downloads\New_emotions.csv") | |
print(df.columns) | |
df.drop_duplicates(inplace=True) | |
x = df["sentence"] | |
y = df["emotion"] | |
# Split data | |
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=29) | |
# Build model | |
model = Pipeline([ | |
("vectorizer", CountVectorizer()), | |
("classifier", MultinomialNB(alpha=2)) | |
]) | |
model.fit(x, y) | |
y_predict = model.predict(x_test) | |
# Streamlit App | |
st.title("Emotion Detection from Text π") | |
st.write("Model Accuracy:", accuracy_score(y_test, y_predict)) | |
# User input | |
sentence = st.text_input("Enter a sentence:") | |
if st.button("Predict Emotion"): | |
if sentence: | |
prediction = model.predict([sentence])[0] | |
st.write("Predicted Emotion:", prediction) | |
# Show emoji | |
emojis = { | |
"sad": "π’π’", | |
"love": "β€οΈβ€οΈ", | |
"surprise": "π¦π¦", | |
"joy": "ππ", | |
"anger": "π π ", | |
"fear": "π¨π¨" | |
} | |
st.write("Emoji:", emojis.get(prediction, "π€")) | |
user_data = pd.DataFrame([[sentence, prediction]], columns=["sentence", "predicted_emotion"]) | |
st.write(user_data) | |