Zan18A's picture
Update app.py
72a57e5 verified
Raw
History Blame Contribute Delete
1.22 kB
import gradio as gr
import tensorflow as tf
import pickle
import re
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
nltk.download('stopwords')
nltk.download('wordnet')
# Load model
model = tf.keras.models.load_model("sentiment_cnn.keras")
# Load tokenizer
with open("tokenizer.pkl", "rb") as f:
tokenizer = pickle.load(f)
max_len = 80
pattern = re.compile(r"(?:\@|https?\://)\S+|[^\w\s#]")
lemm = WordNetLemmatizer()
stop_words = set(stopwords.words("english"))
def preprocess(text):
text = text.lower()
text = pattern.sub("", text)
tokens = text.split()
tokens = [lemm.lemmatize(t) for t in tokens if t not in stop_words and len(t) > 1]
return " ".join(tokens)
def predict(text):
clean = preprocess(text)
seq = tokenizer.texts_to_sequences([clean])
pad = tf.keras.preprocessing.sequence.pad_sequences(seq, maxlen=max_len)
pred = model.predict(pad)[0][0]
return "Positive " if pred > 0.5 else "Negative "
demo = gr.Interface(
fn=predict,
inputs=gr.Textbox(lines=3, placeholder="Enter tweet here..."),
outputs="text",
title="Twitter Sentiment Analyzer",
description="CNN based sentiment classifier"
)
demo.launch()