Commit
·
b3b327d
1
Parent(s):
fbdaedd
Fix missing comma
Browse files
app.py
CHANGED
|
@@ -1,8 +1,14 @@
|
|
| 1 |
import gradio as gr
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
|
|
|
| 3 |
model_card = "microsoft/mdeberta-v3-base"
|
| 4 |
finetuned_model = "MatteoFasulo/mdeberta-v3-base-subjectivity-sentiment-multilingual"
|
| 5 |
|
|
|
|
| 6 |
class CustomModel(PreTrainedModel):
|
| 7 |
config_class = DebertaV2Config
|
| 8 |
|
|
@@ -32,6 +38,7 @@ class CustomModel(PreTrainedModel):
|
|
| 32 |
|
| 33 |
return {'logits': logits}
|
| 34 |
|
|
|
|
| 35 |
def load_tokenizer(model_name: str):
|
| 36 |
return AutoTokenizer.from_pretrained(model_name)
|
| 37 |
|
|
@@ -52,11 +59,13 @@ def load_model(model_card: str, finetuned_model: str):
|
|
| 52 |
|
| 53 |
return model
|
| 54 |
|
|
|
|
| 55 |
def get_sentiment_values(text: str):
|
| 56 |
pipe = pipeline("sentiment-analysis", model="cardiffnlp/twitter-xlm-roberta-base-sentiment", tokenizer="cardiffnlp/twitter-xlm-roberta-base-sentiment", top_k=None)
|
| 57 |
sentiments = pipe(text)[0]
|
| 58 |
return {k:v for k,v in [(list(sentiment.values())[0], list(sentiment.values())[1]) for sentiment in sentiments]}
|
| 59 |
|
|
|
|
| 60 |
def predict_subjectivity(text):
|
| 61 |
sentiment_values = get_sentiment_values(text)
|
| 62 |
|
|
@@ -73,6 +82,7 @@ def predict_subjectivity(text):
|
|
| 73 |
|
| 74 |
return predicted_class
|
| 75 |
|
|
|
|
| 76 |
demo = gr.Interface(
|
| 77 |
fn=predict_subjectivity,
|
| 78 |
inputs=gr.Textbox(
|
|
@@ -85,8 +95,9 @@ demo = gr.Interface(
|
|
| 85 |
info="Whether the sentence is subjective or objective."
|
| 86 |
),
|
| 87 |
title='Subjectivity Detection',
|
| 88 |
-
description='Detect if a sentence is subjective or objective using a pre-trained model.'
|
| 89 |
theme='huggingface',
|
| 90 |
)
|
| 91 |
|
|
|
|
| 92 |
demo.launch()
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
+
import torch
|
| 3 |
+
from transformers import DebertaV2Model, DebertaV2Config, AutoTokenizer, PreTrainedModel, ContextPooler
|
| 4 |
+
from transformers import pipeline
|
| 5 |
+
import torch.nn as nn
|
| 6 |
|
| 7 |
+
# Define the model and tokenizer
|
| 8 |
model_card = "microsoft/mdeberta-v3-base"
|
| 9 |
finetuned_model = "MatteoFasulo/mdeberta-v3-base-subjectivity-sentiment-multilingual"
|
| 10 |
|
| 11 |
+
# Custom model class for combining sentiment analysis with subjectivity detection
|
| 12 |
class CustomModel(PreTrainedModel):
|
| 13 |
config_class = DebertaV2Config
|
| 14 |
|
|
|
|
| 38 |
|
| 39 |
return {'logits': logits}
|
| 40 |
|
| 41 |
+
# Load the pre-trained tokenizer
|
| 42 |
def load_tokenizer(model_name: str):
|
| 43 |
return AutoTokenizer.from_pretrained(model_name)
|
| 44 |
|
|
|
|
| 59 |
|
| 60 |
return model
|
| 61 |
|
| 62 |
+
# Get sentiment values using a pre-trained sentiment analysis model
|
| 63 |
def get_sentiment_values(text: str):
|
| 64 |
pipe = pipeline("sentiment-analysis", model="cardiffnlp/twitter-xlm-roberta-base-sentiment", tokenizer="cardiffnlp/twitter-xlm-roberta-base-sentiment", top_k=None)
|
| 65 |
sentiments = pipe(text)[0]
|
| 66 |
return {k:v for k,v in [(list(sentiment.values())[0], list(sentiment.values())[1]) for sentiment in sentiments]}
|
| 67 |
|
| 68 |
+
# Predict the subjectivity of a sentence
|
| 69 |
def predict_subjectivity(text):
|
| 70 |
sentiment_values = get_sentiment_values(text)
|
| 71 |
|
|
|
|
| 82 |
|
| 83 |
return predicted_class
|
| 84 |
|
| 85 |
+
# Create a Gradio interface
|
| 86 |
demo = gr.Interface(
|
| 87 |
fn=predict_subjectivity,
|
| 88 |
inputs=gr.Textbox(
|
|
|
|
| 95 |
info="Whether the sentence is subjective or objective."
|
| 96 |
),
|
| 97 |
title='Subjectivity Detection',
|
| 98 |
+
description='Detect if a sentence is subjective or objective using a pre-trained model.',
|
| 99 |
theme='huggingface',
|
| 100 |
)
|
| 101 |
|
| 102 |
+
# Launch the interface
|
| 103 |
demo.launch()
|