import gradio as gr import numpy as np from keras.models import load_model # type: ignore import joblib import nltk import pickle from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from nltk.stem import WordNetLemmatizer import re # Modeli ve TF-IDF vectorizer'ı yükle with open('disaster_model.pkl', 'rb') as f: model = pickle.load(f) vectorizer = joblib.load("tfidf_vectorizer.pkl") # NLTK paketlerini indir nltk.download('stopwords') nltk.download('punkt') nltk.download('wordnet') # Preprocessing fonksiyonları stop_words = set(stopwords.words('english')) lemmatizer = WordNetLemmatizer() def preprocess_text(text): text = text.lower() text = re.sub(r'[^\w\s]', '', text) text = re.sub(r'\s+', ' ', text) text = re.sub(r'\d+', ' ', text) tokens = word_tokenize(text) tokens = [lemmatizer.lemmatize(word) for word in tokens if word not in stop_words] return ' '.join(tokens) def predict_sentiment(text): text = preprocess_text(text) text_vectorized = vectorizer.transform([text]).toarray() prediction = model.predict(text_vectorized) return 'Real Disaster' if prediction > 0.5 else 'Not Real Disaster' # Gradio arayüzü demo = gr.Interface( fn=predict_sentiment, inputs=gr.Textbox(lines=2, placeholder="Enter a tweet here..."), outputs="text", title="Tweet", description="Enter a tweet and get the prediction (preal disaster or not real disaster)." ) if __name__ == "__main__": demo.launch(share=True)