Spaces:
Runtime error
Runtime error
import gradio as gr | |
import model_wrapper | |
model = model_wrapper.PredictionModel() | |
def pretty_print_opinion(opinion_dict): | |
res = [] | |
maxlen = max([len(key) for key in opinion_dict.keys()]) + 2 | |
maxlen = 0 | |
for key, value in opinion_dict.items(): | |
if key == 'Polarity': | |
res.append(f'{(key + ":").ljust(maxlen)} {value}') | |
else: | |
res.append(f'{(key + ":").ljust(maxlen)} \'{" ".join(value[0])}\'') | |
return '\n'.join(res) + '\n' | |
def predict(text): | |
print(f'Input message "{text}"') | |
try: | |
predictions = model.predict([text]) | |
prediction = predictions[0] | |
results = [] | |
if not prediction['opinions']: | |
return 'No opinions detected' | |
for opinion in prediction['opinions']: | |
results.append(pretty_print_opinion(opinion)) | |
print(f'Successfully predicted SA for input message "{text}": {results}') | |
return '\n'.join(results) | |
except Exception as e: | |
print(f'Error for input message "{text}": {e}') | |
raise e | |
markdown_text = ''' | |
<h1>Structured Sentiment Analysis for Norwegian</h1> | |
<p align="left"> | |
<br> | |
This space provides a gradio demo of a <a href="https://huggingface.co/ltg/ssa-perin">pretrained model</a> for structured sentiment analysis (SSA) of Norwegian text, trained on the [NoReC_fine](https://github.com/ltgoslo/norec_fine) dataset by the <a href"https://www.mn.uio.no/ifi/english/research/groups/ltg/">Language Technology Group</a> at the University of Oslo. It implements a method described in the paper <a href="https://aclanthology.org/2022.acl-short.51/">Direct parsing to sentiment graphs</a> by Samuel et al. 2022. | |
<br> | |
The model will attempt to identify the following components for a given sentence it deems to be sentiment-bearing: _source expressions_ (the opinion holder), _target expressions_ (what the opinion is directed towards), _polar expressions_ (the part of the text indicating that an opinion is expressed), and finally the _polarity_ (positive or negative). | |
<br> | |
To download the model and find more in-depth documentation, please see <a href="https://huggingface.co/ltg/ssa-perin">https://huggingface.co/ltg/ssa-perin</a> | |
</p> | |
''' | |
with gr.Blocks() as demo: | |
gr.Markdown(markdown_text) | |
with gr.Row() as row: | |
text_input = gr.Textbox(label="input") | |
text_output = gr.Textbox(label="output") | |
with gr.Row() as row: | |
text_button = gr.Button("submit") | |
text_button.click(fn=predict, inputs=text_input, outputs=text_output) | |
demo.launch() | |