--- title: Sentiment Analysis emoji: 🤔 colorFrom: purple colorTo: yellow sdk: gradio sdk_version: 3.1.7 app_file: app.py pinned: false --- This space provides a gradio demo and an easy-to-run wrapper of the pre-trained model for structured sentiment analysis in Norwegian language, pre-trained on the [NoReC dataset](https://huggingface.co/datasets/norec). This space containt an implementation of method described in "Direct parsing to sentiment graphs" (Samuel _et al._, ACL 2022). The main repository that also contains the scripts for training the model, can be found on the project [github](https://github.com/jerbarnes/direct_parsing_to_sent_graph). The proposed method suggests three different ways to encode the sentiment graph: "node-centric", "labeled-edge", and "opinion-tuple". The current model uses the "labeled-edge" graph encoding, and achieves the following results on the held-out set of the NoReC dataset: | Unlabeled sentiment tuple F1 | Target F1 | Relative polarity precision | |:----------------------------:|:----------:|:---------------------------:| | 0.434 | 0.541 | 0.926 | In "Word Substitution with Masked Language Models as Data Augmentation for Sentiment Analysis", we analyzed data augmentation strategies for improving performance of the model. Using masked-language modeling (MLM), we augmented the sentences with MLM-substituted words inside, outside, or inside+outside the actual sentiment tuples. The results below show that augmentation may be improve the model performance. This space, however, runs the original model trained without augmentation. | | Augmentation rate | Unlabeled sentiment tuple F1 | Target F1 | Relative polarity precision | |----------------|-------------------|------------------------------|-----------|-----------------------------| | Baseline | 0% | 43.39 | 54.13 | 92.59 | | Outside | 59% | **45.08** | 56.18 | 92.95 | | Inside | 9% | 43.38 | 55.62 | 92.49 | | Inside+Outside | 27% | 44.12 | **56.44** | **93.19** | The model can be easily used for predicting sentiment tuples as follows: ```python >>> import model_wrapper >>> model = model_wrapper.PredictionModel() >>> model.predict(['vi liker svart kaffe']) [{'sent_id': '0', 'text': 'vi liker svart kaffe', 'opinions': [{'Source': [['vi'], ['0:2']], 'Target': [['svart', 'kaffe'], ['9:14', '15:20']], 'Polar_expression': [['liker'], ['3:8']], 'Polarity': 'Positive'}]}] ```