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