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 = '''

Structured Sentiment Analysis for Norwegian

This space provides a gradio demo of a pretrained model for structured sentiment analysis (SSA) of Norwegian text, trained on the NoReC_fine dataset by the Language Technology Group at the University of Oslo. It implements a method described in the paper Direct parsing to sentiment graphs by Samuel et al. 2022.
For a given sentence, the model will attempt to identify the following components if it is found to be sentiment-bearing:


To download the model and find more in-depth documentation, please see https://huggingface.co/ltg/ssa-perin

''' 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()