--- license: cc-by-nc-sa-4.0 datasets: - Blablablab/ALOE --- ### Model Description The model classifies an *appraisal* given a sentence and is trained on [ALOE](https://huggingface.co/datasets/Blablablab/ALOE) dataset. **Input:** a sentence **Labels:** No Label, Pleasantness, Anticipated Effort, Certainty, Objective Experience, Self-Other Agency, Situational Control, Advice, Trope **Output:** logits (in order of labels) **Model architecture**: OpenPrompt_+RoBERTa **Developed by:** Jiamin Yang ### Model Performance ##### Overall performance | Macro-F1 | Recall | Precision | | :------: | :----: | :-------: | | 0.56 | 0.57 | 0.58 | ##### Per-label performance | Label | Recall | Precision | | -------------------- | :----: | :-------: | | No Label | 0.34 | 0.64 | | Pleasantness | 0.69 | 0.54 | | Anticipated Effort | 0.46 | 0.46 | | Certainty | 0.58 | 0.47 | | Objective Experience | 0.58 | 0.69 | | Self-Other Agency | 0.62 | 0.55 | | Situational Control | 0.31 | 0.55 | | Advice | 0.72 | 0.66 | | Trope | 0.80 | 0.67 | ### Getting Started ```python import torch from openprompt.plms import load_plm from openprompt.prompts import ManualTemplate from openprompt.prompts import ManualVerbalizer from openprompt import PromptForClassification from openprompt.data_utils import InputExample from openprompt import PromptDataLoader checkpoint_file = 'your_path_to/empathy-appraisal-span.pt' plm, tokenizer, model_config, WrapperClass = load_plm('roberta', 'roberta-large') template_text = 'The sentence {"placeholder":"text_a"} has the label {"mask"}.' template = ManualTemplate(tokenizer=tokenizer, text=template_text) num_classes = 9 label_words = [['No Label'], ['Pleasantness'], ['Anticipated Effort'], ['Certainty'], ['Objective Experience'], ['Self-Other Agency'], ['Situational Control'], ['Advice'], ['Trope']] verbalizer = ManualVerbalizer(tokenizer, num_classes=num_classes, label_words=label_words) prompt_model = PromptForClassification(plm=plm,template=template, verbalizer=verbalizer, freeze_plm=False).to('cuda') checkpoint = torch.load(checkpoint_file) state_dict = checkpoint['model_state_dict'] # depend on the version of torch del state_dict['prompt_model.plm.roberta.embeddings.position_ids'] prompt_model.load_state_dict(state_dict) # use the model dataset = [ InputExample( guid = 0, text_a = "I am sorry for your loss", ), InputExample( guid = 1, text_a = "It's not your fault", ), ] data_loader = PromptDataLoader(dataset=dataset, template=template, tokenizer=tokenizer, tokenizer_wrapper_class=WrapperClass, max_seq_length=512, batch_size=2, shuffle=False, teacher_forcing=False, predict_eos_token=False, truncate_method='head') prompt_model.eval() with torch.no_grad(): for batch in data_loader: logits = prompt_model(batch.to('cuda')) preds = torch.argmax(logits, dim = -1) print(preds) #[8, 5] ```