ByteBlaze's picture
Update app.py
adeed96 verified
raw
history blame
1.69 kB
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_and_tfidf(text)
features = vectorizer.transform(corpus).toarray()
prediction = nb_classifier.predict(features)
elif(choice == 2):
corpus = preprocess_for_bow_and_tfidf(text)
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)