import gradio as gr import nltk from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfVectorizer import joblib from nltk.stem.porter import PorterStemmer from nltk.corpus import stopwords import re nltk.download('stopwords') # import warnings # from sklearn.exceptions import InconsistentVersionWarning # warnings.filterwarnings("ignore", category=InconsistentVersionWarning) ps = PorterStemmer() def preprocess_for_bow_and_tfidf(text): corpus = [] text = re.sub('[^a-zA-Z0-9$£€¥%]',' ',text) text = text.lower() text = text.split() text = [ps.stem(t) for t in text if t not in stopwords.words('english')] corpus.append(' '.join(text)) return corpus vectorizer = joblib.load('./vectorizer.pkl') nb_classifier = joblib.load('./nb_classifier.pkl') tfidf_vectorizer = joblib.load('./tfidf_vectorizer.pkl') random_forest = joblib.load('./random_forest.pkl') def classify(text,choice): corpus=[text] if(choice == 1): corpus = preprocess_for_bow(text) features = vectorizer.transform(corpus).toarray() prediction = nb_classifier.predict(features) elif(choice == 2): corpus = preprocess_for_bow_and_tfidf features = tfidf_vectorizer.transform(corpus).toarray() prediction = random_forest.predict(features) if(prediction == 1): return "Fake News" else: return "Not Fake News" GUI = gr.Interface( inputs = ['text', gr.Radio( choices = [("Naive Bayes",1) , ("Random Forest",2) ] , value = 1 , label = "Model") ], outputs = ['text'], fn = classify, title = "Fake News Detection System" ) GUI.launch(debug = True)