Spaces:
Sleeping
Sleeping
| import joblib | |
| import numpy as np | |
| import re | |
| import string | |
| from nltk.corpus import stopwords | |
| from nltk.stem import PorterStemmer | |
| from nltk.tokenize import TweetTokenizer | |
| import nltk | |
| import pickle | |
| import gradio as gr | |
| with open("freqs.pkl","rb") as fp: | |
| freqs = pickle.load(fp) | |
| fp.close() | |
| model = joblib.load("sentiment1.pkl") | |
| nltk.download("stopwords") | |
| stop = stopwords.words("english") | |
| punc = string.punctuation | |
| def process_tweet(tweet): | |
| stemmer = PorterStemmer() | |
| tweet2 = re.sub(r'^RT[\s]+',"",tweet) | |
| tweet2 = re.sub(r'https?://[^\s\n\r]+','',tweet2) | |
| tweet2 = re.sub(r'#','',tweet2) | |
| tokenizer = TweetTokenizer(preserve_case=False, strip_handles=True, reduce_len=True) | |
| tokens = tokenizer.tokenize(tweet2) | |
| tokens_new = [] | |
| for word in tokens: | |
| if (word not in stop and word not in punc): | |
| tokens_new.append(stemmer.stem(word)) | |
| else: | |
| continue | |
| return tokens_new | |
| def extract_features(tweets, freqs): | |
| m = len(tweets) | |
| original_row = np.array([1,0,0]) | |
| x = np.tile(original_row, (m, 1)) | |
| count = 0 | |
| for i in range(0,m): | |
| for word in process_tweet(tweets[i]): | |
| x[i][1]+=freqs.get((word,1),0) | |
| x[i][2]+=freqs.get((word,0),0) | |
| if "not" in tweets[0]: | |
| if(x[0][1]>x[0][2]): x[0][2]=x[0][1]+50 | |
| else: x[0][1]=x[0][2]+50 | |
| return x | |
| def predict(tweet,freqs=freqs): | |
| arr = [tweet] | |
| x= extract_features(arr,freqs) | |
| res = model.predict(x) | |
| if (res==0): return "Negative comment" | |
| else: return "Positive comment" | |
| with gr.Blocks() as demo: | |
| Tweet = gr.Textbox(label = "Tweet",placeholder="Enter your tweet here") | |
| out = gr.Textbox(label = "Sentiment") | |
| with gr.Row(): | |
| gr.Markdown("## Text examples") | |
| gr.Examples(["I am not good", "I am :)", "it is bad"], inputs = Tweet, outputs=out,fn = predict) | |
| btn = gr.Button(value= "Submit") | |
| btn.click(fn = predict, inputs = Tweet, outputs = out) | |
| demo.launch() | |