mazed's picture
Update app.py
4084f84 verified
import re
import gradio as gr
import pandas as pd
import tensorflow as tf
from nltk.stem import WordNetLemmatizer
from nltk.corpus import stopwords
import nltk
# Download necessary NLTK data
nltk.download('stopwords')
nltk.download('wordnet')
nltk.download('omw-1.4')
nltk.download('averaged_perceptron_tagger')
from nltk.corpus import wordnet
lemmatizer= WordNetLemmatizer()
def get_wordnet_pos(word):
"""Map POS tag to first character lemmatize() accepts."""
tag = nltk.pos_tag([word])[0][1][0].upper()
tag_dict = {
'J': wordnet.ADJ,
'N': wordnet.NOUN,
'V': wordnet.VERB,
'R': wordnet.ADV
}
return tag_dict.get(tag, wordnet.NOUN)
def lemmatize_content(content):
lemmatized_content = re.sub('[^a-zA-Z]', ' ', content)
lemmatized_content = lemmatized_content.lower()
lemmatized_content = lemmatized_content.split()
lemmatized_content = [
lemmatizer.lemmatize(word, get_wordnet_pos(word))
for word in lemmatized_content
if word not in stopwords.words('english')
]
lemmatized_content = ' '.join(lemmatized_content)
return lemmatized_content
#load the model
model = tf.keras.models.load_model('twitter_sentiment_analysis_epoch4.h5')
loaded_model = tf.keras.models.load_model('vectorizer_model')
loaded_vectorizer = loaded_model.layers[0]
def score_comment(comment):
# Preprocess the comment
comment = lemmatize_content(comment)
# Vectorize the input comment
vectorized_comment = loaded_vectorizer([comment])
# Predict using the loaded model
result = model.predict(vectorized_comment)
# Generate the output text based on predictions
text = ''
if result<0.5:
text= 'Negative'
else:
text = 'Positive'
return text
interface = gr.Interface(
fn=score_comment,
inputs=gr.Textbox(lines=2, placeholder='Tweet to score'),
outputs='text'
)
interface.launch()