Spaces:
Runtime error
Runtime error
File size: 3,229 Bytes
a1b658b 5cc287d 635ba57 7ce2ced 44dda57 e0c5905 312343a e0c5905 312343a e0c5905 635ba57 5cc287d 635ba57 5cc287d 358197a 5cc287d a1b658b 7ce2ced a1b658b 7ce2ced 7687d77 7ce2ced 4b4aa45 7ce2ced faf997c 02b403e 7ce2ced 44dda57 a1b658b e0c5905 1039cd8 e0c5905 a1b658b 9a29a07 a1b658b bca4095 1039cd8 e0c5905 3d4e13e |
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 69 70 71 72 73 74 |
import gradio as gr
from model import DepressionClassifier
import torch
from huggingface_hub import hf_hub_download
import transformers
from transformers import BertModel, BertTokenizer
from PIL import Image
import requests
import os
import tweepy
import pandas as pd
#from dotenv import load_dotenv
consumer_key = 'I64Mtu7Kel6TZjSJaZmuDfKXu'
consumer_secret = 'ul7KfBJN7m8f86MAe4Cd8yBi9kklBGvqIFBSS2ZndsM4uy8I9b'
access_token = '1612188039123505152-wt420WPJTsKJ2ggf97g5CMkAuMcLOp'
access_token_secret = 'eOozLppemYIgDZY4zrSZzARQjOgxUKd5MUunUYdXp2Rwm'
class_names = ['Not Depressed', 'Depressed']
pt_file = hf_hub_download(repo_id="liangc40/sentimental_analysis", filename="model.pt")
model = DepressionClassifier(len(class_names), 'bert-base-cased')
model.load_state_dict(torch.load(pt_file, map_location=torch.device('cpu')))
model.eval()
def analyse(text):
#text = "I'm depressed"
#model = model.to('cpu')
tokenizer = BertTokenizer.from_pretrained('bert-base-cased')
encoding = tokenizer.encode_plus(text, max_length=32, add_special_tokens=True, # Add '[CLS]' and '[SEP]'
return_token_type_ids=False,
pad_to_max_length=True,
return_attention_mask=True,
return_tensors='pt')
outputs = model(input_ids = encoding['input_ids'], attention_mask = encoding['attention_mask'])
_, preds = torch.max(outputs, dim=1)
face_url = "https://raw.githubusercontent.com/liangc40/ID2223_Sentimental_Analysis_Project/main/Image/"+ str(preds.cpu().detach().numpy()[0]) + ".png"
img = Image.open(requests.get(face_url, stream=True).raw)
#print(preds)
return img
def tweets(search_words):
label_list=['Non-depressed','Depressed']
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
tweets = tweepy.Cursor(api.search_tweets,
q=search_words,
lang="en",
).items(10)
tweet_content = [i.text for i in tweets]
pred = [i for i in analyse(tweet_content)]
label = [label_list[j] for j in pred]
df = pd.DataFrame(list(zip(tweet_content, label)),columns =['Ten tweets'+' on '+search_words, 'sentiment'])
return df
with gr.Blocks() as demo:
gr.Markdown("<h1><center>Sentiment Analysis with Fine-tuned BERT Model")
inputs_text=gr.Textbox(placeholder='Type your text for which you want know the sentiment', label='Text')
text_button = gr.Button('Analyse Sentiment')
output_text_sentiment = gr.Image(type="pil")
text_button.click(analyse, inputs = inputs_text, outputs = output_text_sentiment)
search_words=gr.Textbox(placeholder='Type your key word to search the tweets (500 characters maximum)', label='Text')
text_button_tweet = gr.Button('Analyse Sentiment from 10 realated tweets')
output_tweet_sentiment = gr.Textbox(placeholder='Sentiment for 10 realated tweets')
text_button.click(tweets, inputs = search_words, outputs = output_tweet_sentiment)
if __name__ == "__main__":
demo.launch() |