SerifeGokdas's picture
created project
dfb3177 verified
import streamlit as st
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
import joblib
import tensorflow as tf
from sentence_transformers import SentenceTransformer
import torch
import re
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
import nltk
nltk.download('stopwords')
nltk.download('wordnet')
from transformers import AutoTokenizer
# Tokenizer'ı başlatıyoruz
tokenizer = AutoTokenizer.from_pretrained("alibayram/tr_tokenizer", use_fast=True)
embedding_model = SentenceTransformer('sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2')
# Model dosyaları
log_reg_model = joblib.load('logistic_regression_model.pkl') # Logistic Regression modeli
#lstm_model = tf.keras.models.load_model('lstm_model.h5') # LSTM model
nn_model = joblib.load('neural_network_model.pkl') # Neural network modeli
rf_model = joblib.load('random_forest_model.pkl') # Random Forest modeli
svm_model = joblib.load('support_vector_machine_model.pkl') # SVM modeli
xgboost_model = joblib.load('xgboost_model.pkl') # XGBoost modeli
# Preprocessing ve veri hazırlığı için fonksiyonlar
def preprocess_text(text):
STOPWORDS = set(stopwords.words('turkish'))
STOPWORDS.add('mi')
# Küçük harfe çevirme
text = text.lower()
# Noktalama işaretlerini kaldır
text = re.sub(r'[^\w\s]', '', text)
# Stopwords kaldır ve lemmatization uygula
text = " ".join([word for word in text.split() if word not in STOPWORDS])
return text
def tokenize_text(text):
tokens = tokenizer.tokenize(text)
return tokens
def vectorize_text(text):
# Tokenized listeyi string'e dönüştürelim
titles_as_strings = [' '.join(eval(tokens)) for tokens in text]
# Metni vektöre dönüştürme
return embedding_model.encode(titles_as_strings)
def vectorize_text(text):
# Her bir başlığı string olarak kabul ederek işleme alıyoruz
titles_as_strings = [' '.join(tokens) if isinstance(tokens, list) else tokens for tokens in text]
# Metni vektöre dönüştürme
return embedding_model.encode(titles_as_strings)
# Tahmin fonksiyonları
def predict_logistic_regression(text):
return log_reg_model.predict(text)
def predict_neural_network(text):
return nn_model.predict(text)
def predict_random_forest(text):
return rf_model.predict(text)
def predict_svm(text):
return svm_model.predict(text)
def predict_xgboost(text):
return xgboost_model.predict(text)
# Streamlit arayüzü
st.title("Haber Başlığı Doğruluk Tahmin Aracı")
# Kullanıcıdan haber başlığını alma
news_title = st.text_input("Haber Başlığını Girin:")
title_preprocesed=preprocess_text(news_title)
title_tokenized=tokenize_text(title_preprocesed)
title_vectorized=vectorize_text(title_tokenized)
# Model Seçim kutusu
model_choice = st.selectbox(
"Hangi modeli kullanmak istersiniz?",
("Logistic Regression", "LSTM","Neural Network", "Random Forest", "Support Vector Machine", "XGBoost")
)
# "Tahmin Et" butonu
if st.button("Tahmin Et"):
if news_title:
# Seçilen modele göre tahmin yapma
if model_choice == "Logistic Regression":
prediction = predict_logistic_regression(title_vectorized)
elif model_choice == "Neural Network":
prediction = predict_neural_network(title_vectorized)
elif model_choice == "Random Forest":
prediction = predict_random_forest(title_vectorized)
elif model_choice == "Support Vector Machine":
prediction = predict_svm(title_vectorized)
elif model_choice == "XGBoost":
prediction = predict_xgboost(title_vectorized)
# Tahmin Sonucunu Gösterme
if prediction[0] == 1:
st.write(f"**Tahmin:** Bu haber başlığı doğru.")
else:
st.write(f"**Tahmin:** Bu haber başlığı yanlış.")
# Tüm modellerin tahminlerini yazma
st.write("### Tüm Modellerin Tahminleri:")
st.write(f"**Logistic Regression Tahmini:** {'Doğru' if predict_logistic_regression(title_vectorized)[0] == 1 else 'Yanlış'}")
st.write(f"**Neural Network Tahmini:** {'Doğru' if predict_neural_network(title_vectorized)[0] == 1 else 'Yanlış'}")
st.write(f"**Random Forest Tahmini:** {'Doğru' if predict_random_forest(title_vectorized)[0] == 1 else 'Yanlış'}")
st.write(f"**SVM Tahmini:** {'Doğru' if predict_svm(title_vectorized)[0] == 1 else 'Yanlış'}")
st.write(f"**XGBoost Tahmini:** {'Doğru' if predict_xgboost(title_vectorized)[0] == 1 else 'Yanlış'}")
else:
st.write("Lütfen bir haber başlığı girin.")