---
kind: concept
slug: conceptual-metaphor
title: Conceptual metaphor
summary: >-
  Measuring which figurative source domains (war, monsters, storms) a corpus uses for a target topic such as a disease, and how often. The one covered study counts tweets that match frame lexicons, compares them with a literal control and splits them by topic. Every lexicon match is counted as metaphor, a limitation the authors state. All numbers are single-corpus and author-reported.
tags: [framing, metaphor, corpus-analysis, social-media]
papers: ["2004.06986"]
related: [topic-modelling]
status: draft
updated_at: 2026-11-06
---

## Overview

A conceptual metaphor maps a familiar domain onto a less familiar one, for
example describing an illness as an enemy to be fought. Corpus studies ask
which source domains appear for a given target, how often, and in which
contexts. Only one paper card in the wiki covers this concept, so this page
describes that study's approach and the choices it makes. The shared core is
to define each frame by a set of words, count the texts that use them, and
compare the counts with a literal baseline [arxiv:2004.06986 p. 17-18].

## Variants

### Lexicon-presence counting

Build one word list per frame, then count the texts that contain at least one
word from the list. The authors rank each list by usage and compare only the
top 30 or top 50 units, so that frames with different list sizes can be
compared [arxiv:2004.06986 p. 18]. A literal control frame (FAMILY) is
counted the same way. Reported shares on the authors' corpus: WAR 4.96% at 30
units and 5.25% at 50 units, against 11.91% and 12.06% for the control
[arxiv:2004.06986 tab. 2]. Card: [Framing COVID-19: How we conceptualize and
discuss the pandemic on Twitter](/papers/2004.06986).

### Topic-conditioned frame use

The same study trains an LDA topic model on the corpus and then averages the
topic probabilities of the tweets that match a frame. This shows which
discussion topics the frame sits in. In the 4-topic model, WAR tweets have
their highest average probability in the topic the authors label reacting to
the epidemic, and the lowest in community and social compassion [arxiv:2004.06986 p. 13-15].
The topic labels are the authors' reading of the top words, and the topics
change between runs because no seed is given [arxiv:2004.06986 p. 10, p. 15].

### Manual metaphor identification (not used)

The paper names MIPVU as the reference procedure for identifying metaphorical
language, but does not apply it. It checked a subsample by hand, accepted that
some matches are literal, and states that a full MIPVU check would change the
WAR share [arxiv:2004.06986 p. 13]. No card in the wiki reports a MIPVU run.

## When to use which

| Situation | Use | Why |
|---|---|---|
| Large corpus, no annotators, need frequencies per frame | Lexicon-presence counting | The study runs on about 200,000 tweets this way; it counts every lexicon match as metaphor [arxiv:2004.06986 p. 13, tab. 1] |
| Need to know which topics a frame appears in | Topic-conditioned use, on top of counting | The study fits LDA on the same corpus; topics come without labels [arxiv:2004.06986 p. 10] |
| Need an accurate metaphor share for a claim | Manual identification (MIPVU), not shown in any card | The study says its share includes literal uses and was not measured [arxiv:2004.06986 p. 13] |
| Comparing frames fairly | Same list size per frame, plus a literal control | The study uses top-30 and top-50 cutoffs and a FAMILY control [arxiv:2004.06986 tab. 2] |

## Implementation sketch

The shape of lexicon-presence counting, adapted from the study's description
[arxiv:2004.06986 p. 17-18]. The paper gives no code.

```pseudocode
# Share of texts using each frame, at a fixed lexicon size  [p. 17-18]
# Input:  texts (sets of tokens), frames (dict name -> list of units)
# Output: dict name -> share of all texts

def frame_shares(texts, frames, cutoff):
    shares = {}
    for name, units in frames.items():
        # Rank units by how often they occur in the corpus  [p. 18]
        ranked = sorted(units, key=lambda u: -occurrences(texts, u))
        top = set(ranked[:cutoff])
        # Count texts that contain at least one unit from the top list  [p. 17]
        hits = sum(1 for t in texts if t & top)
        shares[name] = hits / len(texts)
    return shares
```

Where implementations differ: the study does not say whether frequency
means texts or token occurrences, and a rebuild should choose one and report it
[arxiv:2004.06986 p. 18].

## Contradictions

None between cards. A cross-corpus difference: on the authors' 2-week corpus
WAR is 5.32% of tweets, while on the Lamsal 2-week dataset it is 6.94%, and
FAMILY falls from 12.06% to 8.60% [arxiv:2004.06986 tab. 3]. The authors put
most of this down to keyword choice, since the Lamsal dataset includes the
keyword "corona", which the authors excluded [arxiv:2004.06986 p. 20]. Both
figures are reported as they appear in the study.

## Papers

- [Framing COVID-19: How we conceptualize and discuss the pandemic on Twitter](/papers/2004.06986): lexicon counts of war, monster, storm and tsunami frames against a literal control, with topic placement for war tweets.
