Sentence Frame Classifier

A RoBERTa-based model for detecting media frames at the sentence level. This model can classify sentences into 10 different frame categories and thus can be employed to detect frames across different text types (i.e. articles and comments, but also social media etc.). For more information, please refer to this paper.

Model Description

This model was trained to identify media frames in text at the sentence level. It's based on the Media Frame Corpus Card et al. 2015 and extends to online discussion contexts Hartmann et al., 2019, making it suitable for analyzing both professional journalism and user-generated content. Although trained as a multi-class classifier, probabilities for all labels can be extracted, enabling its use in multi-label classification settings.

Frame Categories

The model classifies sentences into these 10 frame categories:

  • Economic β€” Economic costs, benefits, or implications
  • Morality β€” Moral or ethical considerations
  • Fairness and Equality β€” Issues of fairness, equality, or discrimination
  • Legality and Crime β€” Legal aspects, constitutionality, crime, and punishment
  • Political and Policies β€” Political processes, policy prescriptions, and evaluations
  • Security and Defense β€” Security threats, defense, or public safety
  • Health and Safety β€” Health risks, safety concerns, or medical implications
  • Cultural Identity β€” Cultural values, traditions, or identity issues
  • Public Opinion β€” Public sentiment, polls, or popular support
  • None/Other

Performance

  • Macro F1: 0.66

Usage

from transformers import pipeline

classifier = pipeline("text-classification", model="mattdr/cross-domain-frame-classifier")

text = "The new policy will cost taxpayers millions of dollars while providing few benefits."
result = classifier(text)
print(result)
# [{'label': 'Economic', 'score': 0.89}]

examples = [
    "The economy of the country is improving steadily.",
    "The public strongly supports this initiative according to recent polls.",
    "We must protect our children from these dangerous substances."
]

for text in examples:
    result = classifier(text)
    print(f"Text: {text}")
    print(f"Frame: {result[0]['label']} (confidence: {result[0]['score']:.2f})")
    print()

Citation

For more information and if you use this model, please cite the following paper:

@misc{guida2025retainreframecomputationalframework,
      title={Retain or Reframe? A Computational Framework for the Analysis of Framing in News Articles and Reader Comments}, 
      author={Matteo Guida and Yulia Otmakhova and Eduard Hovy and Lea Frermann},
      year={2025},
      eprint={2507.04612},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2507.04612}, 
}
Downloads last month
24
Safetensors
Model size
355M params
Tensor type
F32
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ 1 Ask for provider support