import gradio as gr from sentiwordnet_calculator import SentimentPipeline pipe = SentimentPipeline("Tanor/SRGPTSENTPOS4", "Tanor/SRGPTSENTNEG4") def calculate(text): result = pipe(text) # Visual representation visual = result # Numerical representation numerical = {key: round(value, 2) for key, value in result.items()} # Create a formatted string numerical_str = ", ".join(f"{key}: {value}" for key, value in numerical.items()) return visual, numerical_str iface = gr.Interface( fn=calculate, inputs=gr.inputs.Textbox(lines=5, placeholder="Enter your text here..."), outputs=[gr.outputs.Label(num_top_classes=3), "text"], title="Sentiment Analysis for Serbian", description=""" This tool performs sentiment analysis on the input text using a model trained on Serbian dictionary definitions. The pretrained model [sr-gpt2-large model by Mihailo Škorić](https://huggingface.co/JeRTeh/sr-gpt2-large), was fine-tuned on selected definitions from the Serbian WordNet. Please limit the input to 300 tokens. The outputs represent the Positive (POS), Negative (NEG), and Objective (OBJ) sentiment scores. """, examples=[ ["osoba koja ne prihvata nove ideje"], ["intenzivna ojađenost"], ["uopštenih osećanja tuge"], ["žalostan zbog gubitka ili uskraćenosti"], ["činjenje dobra; osećaj dobrotvornosti"], ["Jako pozitivno osećanje poštovanja i privrežen..."], ["usrećiti ili zadovoljiti"], ["Korisna ili vredna osobina"], ] ) iface.launch()