File size: 1,886 Bytes
963e0da
 
 
 
 
 
 
 
 
 
 
 
 
 
54dbb4d
963e0da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7e76d84
 
 
 
 
 
 
 
963e0da
7e76d84
963e0da
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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()