File size: 1,809 Bytes
397ed79
d66b74a
 
 
397ed79
8a02fed
 
 
397ed79
8a02fed
4a21f8f
 
d66b74a
8a02fed
 
d66b74a
397ed79
 
defc0a9
 
 
8a02fed
397ed79
8a02fed
397ed79
 
 
 
 
 
 
 
8a02fed
397ed79
 
8a02fed
397ed79
8a02fed
397ed79
d66b74a
397ed79
 
8a02fed
d66b74a
397ed79
 
8a02fed
 
 
 
 
 
 
 
 
397ed79
d66b74a
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
import os
import gradio as gr
from transformers import AutoTokenizer, AutoModel
from scipy.special import softmax
from huggingface_hub import login

# Load environment variables
from dotenv import load_dotenv
load_dotenv()

# Get the token from the environment variable
access_token = os.getenv("access_token")

# Log in to Hugging Face (commented out for now)
# login(access_token)

# Requirements
model_path = "imalexianne/distilbert-base-uncased"
# tokenizer = AutoTokenizer.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path, revision="main", use_auth_token=os.getenv("access_token"))

model = AutoModel.from_pretrained(model_path)

# Preprocessing function
def preprocess(text):
    new_text = []
    for x in text.split(" "):
        x = "@user" if x.startswith("@") and len(x) > 1 else x
        x = "http" if x.startswith("http") else x
        new_text.append(x)
    return " ".join(new_text)

# Function to process the input and return prediction
def sentiment_analysis(text):
    text = preprocess(text)
    encoded_input = tokenizer(text, return_tensors="pt")
    output = model(**encoded_input)
    scores_ = output.logits[0].detach().numpy()
    scores_ = softmax(scores_)
    
    # Format output dict of scores
    labels = ["Negative", "Neutral", "Positive"]
    scores = {l: float(s) for (l, s) in zip(labels, scores_)}
    
    return scores

# Gradio app interface
app = gr.Interface(
    fn=sentiment_analysis,
    inputs=gr.Textbox("Write your text here..."),
    outputs="label",
    title="Sentiment Analysis of Tweets on COVID-19 Vaccines",
    description="Sentiment Analysis of text based on tweets about COVID-19 Vaccines using a fine-tuned 'distilbert-base-uncased' model",
    examples=[["Covid vaccination has no positive impact"]]
)

app.launch()