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"> | |
| 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 <a href="https://github.com/ltgoslo/norec_fine">NoReC_fine</a> 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> | |
| For a given sentence, the model will attempt to identify the following components if it is found to be sentiment-bearing: | |
| <ul> | |
| <li> <i>source expressions</i> (the opinion holder), </li> | |
| <li> <i>target expressions</i> (what the opinion is directed towards), </li> | |
| <li> <i>polar expressions</i> (the part of the text indicating that an opinion is expressed), </li> | |
| <li> and finally the <i>polarity</i> (positive or negative). </li> | |
| </ul> | |
| <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() | |