import gradio as gr import numpy as np from transformers import pipeline from model import DepressionClassifier import hopsworks import joblib import torch from huggingface_hub import hf_hub_download import transformers from transformers import BertModel, BertTokenizer from PIL import Image import requests import io 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() #pipe = pipeline(model="liangc40/sentimental_analysis") #project = hopsworks.login(project='liangc40') #fs = project.get_feature_store() #mr = project.get_model_registry() #model = mr.get_model("sentimental_analysis_model", version=1) #model_dir = model.download() #model = joblib.load(model_dir + "/sentimental_analysis_model.pkl") 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) + ".png" r = requests.get(face_url, stream=True) img = Image.open(io.BytesIO(r.content)) #img = Image.open(requests.get(face_url, stream=True).raw) #print(preds) return img with gr.Blocks() as demo: gr.Markdown("

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.Textbox(placeholder='Sentiment of the text.', label='Sentiment') text_button.click(analyse, inputs = inputs_text, outputs = output_text_sentiment) if __name__ == "__main__": demo.launch()