Spaces:
Sleeping
Sleeping
File size: 3,213 Bytes
22e79e9 76a5498 6faef23 22e79e9 6faef23 408d82e d7c00d2 fc88870 408d82e ddcf57e 48f8060 ddcf57e c88cb15 ddcf57e fc88870 408d82e fc88870 408d82e ddcf57e 408d82e fc88870 ddcf57e c88cb15 ddcf57e d7c00d2 ddcf57e c88cb15 ddcf57e c88cb15 c9ea4fb f4dfdd5 ddcf57e f4dfdd5 ddcf57e c88cb15 ddcf57e f4dfdd5 c88cb15 ddcf57e f4dfdd5 c88cb15 | 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 | import pandas as pd
import numpy as np
import re
import streamlit as st
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, accuracy_score
# Streamlit uygulamasının başlığı
st.image("https://miro.medium.com/v2/resize:fit:4800/format:webp/1*g_FtJ2rBkxOSbk2dCj0N4g.jpeg")
st.title("IMDB Comment Analysis")
st.write("Do you want to watch a movie? And are you one of those who look at the reviews before choosing?")
st.write("Write the review and press the button to let us guess the emotion! Let us tell you if it's worth watching!")
# Veri setini yükle
@st.cache_data # Bu dekoratör verileri önbelleğe alarak performansı artırır
def load_data():
try:
df = pd.read_csv("src/IMDB_Dataset.csv") # "src/" klasörünü kaldırdım, doğrudan dosya adı
return df
except FileNotFoundError:
st.error("IMDB_Dataset.csv not found.")
return None
df = load_data()
if df is None:
st.stop() # Dosya bulunamazsa uygulamayı durdur
# Metin temizleme fonksiyonu
def temizle(temiz_veri):
temiz_veri = temiz_veri.lower() # küçük harfe çevir
temiz_veri = re.sub(r'<.*?>', '', temiz_veri) # HTML etiketlerini kaldır
temiz_veri = re.sub(r'\d+', '', temiz_veri) # sayıları kaldır
temiz_veri = re.sub(r'\s+', ' ', temiz_veri).strip() # fazla boşlukları kaldır
temiz_veri = re.sub(r'http\S+', '', temiz_veri) # URL'leri kaldır
temiz_veri = re.sub(r'[^\w\s]', '', temiz_veri) # noktalama işaretlerini kaldır
return temiz_veri
# Modeli eğitmek için fonksiyon
@st.cache_data # Model eğitimini önbelleğe al
def train_model():
df["temiz_veri"] = df["review"].apply(temizle)
X_train, X_test, y_train, y_test = train_test_split(df['temiz_veri'], df['sentiment'], test_size=0.4, random_state=42)
tfidf = TfidfVectorizer(stop_words='english', ngram_range=(1, 2))
X_train_tfidf = tfidf.fit_transform(X_train)
X_test_tfidf = tfidf.transform(X_test)
lr = LogisticRegression()
lr.fit(X_train_tfidf, y_train)
y_pred_lr = lr.predict(X_test_tfidf)
accuracy = accuracy_score(y_test, y_pred_lr)
return lr, tfidf, accuracy
lr, tfidf, accuracy = train_model()
st.write(f"Model Accuracy: %{accuracy}") # Yüzde formatını düzgün göster
# Kullanıcı etkileşimi
yorum_tahmin = st.text_area("The comment you want to check:") # text_input yerine text_area kullandım
if st.button("Predict"):
if not yorum_tahmin.strip():
st.warning("Nothing to predict :( Make sure to add something")
else:
temiz_yorum = temizle(yorum_tahmin)
X_yeni = tfidf.transform([temiz_yorum]) # Temizlenmiş yorumu kullan
tahmin = lr.predict(X_yeni)
st.subheader("Result:")
st.write(f"**Predicted Emotion:** {tahmin[0].capitalize()}")
if tahmin[0] == "positive":
st.success("You should definitely watch this movie! 🤩")
st.balloons() # Küçük bir kutlama efekti
else:
st.error("Naah... This movie isn't worth to watch..🥱") |