qisan's picture
Upload app.py
61336fa
raw
history blame
2.4 kB
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("<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.Textbox(placeholder='Sentiment of the text.', label='Sentiment')
text_button.click(analyse, inputs = inputs_text, outputs = output_text_sentiment)
if __name__ == "__main__":
demo.launch()