wikillm

Paper · 2020-04-15 · cs.CL, cs.SI

Framing COVID-19: How we conceptualize and discuss the pandemic on Twitter

Collects about 200k English tweets with COVID-19 hashtags (March-April 2020), keeps one tweet per user, and runs LDA topic models (4 and 16 topics). It counts tweets containing WAR, MONSTER, STORM and TSUNAMI lexicons against a literal FAMILY control. WAR appears in about 5% of tweets, the most-used figurative frame, and mostly with treatment and diagnosis topics. Author-reported.

Topic modellingConceptual metaphorframingconceptual-metaphorcovid-19topic-modellingsocial-mediacorpus-analysis

arXivPDFMarkdown11 min read

AI-compiled by claude-haiku-5-5 on 2026-11-06, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

When people talk about a new disease, they often borrow words from another area of life. War words such as "fight", "battle" and "enemy" are the most common example. This paper asks how that happens on Twitter during the first COVID-19 lockdown months.

The authors collected a large set of English tweets about the pandemic. They kept one tweet per person and dropped retweets, so that a few very active accounts did not dominate. A topic model then grouped the words into themes such as news reporting, community support, politics and daily reactions to the outbreak. A word-counting step checked how often tweets used war words, compared with words from other figurative images (monsters, storms, tsunamis) and with plain family words used as a control.

The main finding is that war language is the most common of the figurative images, but it is mostly used when people talk about treatment and diagnosis. It is rarely used for things like keeping family close or respecting distancing rules. The authors suggest that a set of different images, a "metaphor menu", would let people describe more parts of the situation.

TL;DR

  • Tweet corpus about COVID-19 from 20 March to 2 April 2020, English, one tweet per user, retweets dropped p. 6-7.
  • LDA topic models with 4 and 16 topics; 4 topics are labelled communications and reporting, community and social compassion, politics, and reacting to the epidemic p. 9-11.
  • Tweets containing a WAR lexicon term are about 5% of the corpus; FAMILY, the literal control, is about 12% tab. 2.
  • WAR tweets fall mostly in the reaction and communications topics, and in treatment and diagnosis subtopics, not in the community or family topics p. 13-15.
  • All numbers are author-reported on a single 2-week corpus, with one replication on a public dataset. No code is published.

Problem

Metaphors shape how people think about illness, and war metaphors for disease are common in public discourse p. 4. Earlier studies of this were mostly qualitative or small-scale corpus analyses p. 2. The paper asks three questions: which topics people discuss about COVID-19 on Twitter p. 2; how far the WAR frame is used, and for which topics p. 2; and how the WAR frame compares with other figurative frames and a literal control p. 2. The authors assume the target population is mostly non-expert communicators, so they treat the tweets as a sample of everyday usage p. 2, p. 22.

Method

The PDF has no numbered sections, so citations use the printed page numbers p. N, and table and figure numbers as printed.

Overview: build a balanced corpus of tweets p. 6; find topics with LDA p. 8-11; build lexicons for each frame from word-similarity and metaphor resources p. 12, p. 16-17; count tweets that contain each lexicon p. 17-18; check the results on newer corpora p. 19-20.

  1. Collect tweets. Using the official streaming API through Tweepy, collect tweets that contain at least one COVID-19 hashtag or keyword, over 14 days, aiming for 25,000 per day p. 6 tab. 1. The API only lets the authors read the recent past, and the rate limit is 180 requests per 15 minutes p. 6.
  2. Balance the corpus. Drop retweets. Keep only the first tweet of each user not already collected p. 6-7. The final corpus has 203,756 tweets p. 7 tab. 1. The authors say the sample is English and mainly from users in the USA p. 7.
Pseudocode
# Build a balanced corpus: one tweet per user, no retweets  [p. 6-7]
# Input:  stream of tweets (text, user, is_retweet, lang)
# Output: list of kept tweets (text, timestamp)

def build_corpus(stream, hashtags):
    # Keep English tweets that contain a COVID-19 hashtag  [p. 6]
    seen_users = set()
    kept = []
    for tweet in stream:
        if tweet.lang != "en" or tweet.is_retweet:
            continue
        if not any(tag in tweet.text for tag in hashtags):
            continue
        # Keep only the first tweet from each user  [p. 6-7]
        if tweet.user in seen_users:
            continue
        seen_users.add(tweet.user)
        kept.append(tweet)
    return kept
  1. Preprocess. Tokenise with gensim's simple_preprocess; drop tokens shorter than 3 characters; remove stopwords (including a list from Stone et al. and Twitter-specific stopwords); remove COVID words ("covid", "coronavirus", "corona", "virus", "nCov19"); build a bag of words p. 9. There is no lemmatisation and no part-of-speech tagging, on purpose p. 9. The result is 415,329 tokens (inflected forms) p. 9.
  2. Topic model. Run gensim LDA-Multicore on the bag of words. The authors report N = 4 topics (6 passes) and N = 16 topics p. 8-9. Topics are unlabelled; the authors name them by reading the top words p. 10. A tf-idf LDA model was also trained; the authors do not discuss it p. 9.
  3. Build the WAR lexicon. Start from words related to "war" retrieved from the relatedwords web service, then add 12 units from the MetaNet WAR frame, drop compounds and two misspellings. The result has 91 units p. 12. The list is given in full on p. 12.
  4. Assume metaphor. Every use of a WAR unit is treated as a metaphorical use. The authors did not run MIPVU annotation; they checked a subsample by hand and accept some literal uses (for example soldiers who catch COVID-19) as a limitation p. 13.
  5. Assign WAR tweets to topics. Collect all tweets that contain at least one WAR term and ask the trained LDA model for the topic probability of each one. Average those probabilities per topic p. 13-15 fig. 4 fig. 5.
  6. Build alternative lexicons. STORM (57 units), MONSTER (51), TSUNAMI (50) and the literal FAMILY (66) come from relatedwords; the keyword seeds "virus" and "epidemic" were used in the MetaphorMagnet tool p. 16-17. TSUNAMI and STORM were kept apart because their dictionary definitions differ p. 16. FLOOD was dropped because it overlapped too much with STORM and TSUNAMI p. 16.
  7. Count frame use. For each frame, count tweets containing at least one lexicon unit. To make frames comparable, use only the top 30 or top 50 units of each lexicon, ranked by how often they are used p. 18. Shares are reported as a percentage of all tweets tab. 2.
  8. Replicate. Repeat the counts on a second 2-week corpus built with the same rules, and on the Lamsal Coronavirus Tweets Dataset (2 weeks and 2 months), filtered to English, unique-tweeter tweets p. 19 tab. 3.
Pseudocode
# Share of tweets using each frame, at a fixed lexicon size  [p. 17-18]
# Input:  tweets (list of token sets), frames (dict name -> list of units)
# Output: dict name -> share of all tweets

def frame_shares(tweets, 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(tweets, u))
        top = set(ranked[:cutoff])
        # Count tweets that contain at least one unit from the top list  [p. 17]
        hits = sum(1 for t in tweets if t.tokens & top)
        shares[name] = hits / len(tweets)
    return shares

Note that cutoff is 30 or 50 in the paper p. 18. The pseudocode above is our own rendering of the description; the paper gives no code.

Hyperparameters

LDA settings

NameValueWhereNotes
Topic modelLatent Dirichlet Allocation, gensim LDA-Multicorep. 8parallel training on CPUs
Topics (N)4 and 16p. 9chosen by exploring several values and checking coherence p. 9
Passes, N = 46p. 9as stated in the text
Passes, N = 16not statedp. 9
Random seednot statedp. 15authors note LDA is random
Minimum token length3 charactersp. 9
Preprocessed vocabulary415,329 tokensp. 9inflected forms, no lemmatisation
Hashtags and keywordsCOVID-19 set, listedp. 6the list is not repeated here

Collection and frame lexicons

NameValueWhereNotes
Collection window20.03.2020 to 02.04.2020 (14 days)tab. 1
Target per day25,000 collectedp. 6 tab. 1filtered counts per day vary
Retweetsdroppedp. 6
Usersone tweet eachp. 6-7
WAR lexicon91 unitsp. 12
STORM lexicon57 unitsp. 16
MONSTER lexicon51 unitsp. 16
TSUNAMI lexicon50 unitsp. 17
FAMILY lexicon (control)66 unitsp. 17
Cutoffs compared30 and 50 unitsp. 18
Replication corpora401,582 (2 weeks), 1,213,420 (2 months)tab. 3Lamsal dataset

Results

Author-reported. Setup: English tweets with COVID-19 hashtags, 14 days from 20 March to 2 April 2020, 203,756 tweets after filtering p. 6-7 tab. 1. Frames are counted by lexicon presence p. 17-18. No baselines beyond the literal FAMILY control are reported.

Topic model, N = 4 topics p. 9-10 fig. 2:

TopicTop words (LDA weights as printed)Label given by the authors
Ipandemic, news, data, update, world, youtubeCommunications and Reporting p. 10
IItimes, friends, family, share, Italy, tryingCommunity and Social Compassion p. 10
IIIpeople, cases, Trump, like, China, deathsPolitics p. 10
IVhome, help, stay, people, time, needReacting to the epidemic p. 10

The 16-topic model adds finer topics, for example on masks and nurses, on online learning, on ventilators and patients, and on testing and positive cases p. 11 fig. 3.

Frame share, the lexicon-presence count, at 30 and 50 units tab. 2:

FrameTweets with at least one unit (30 units)Share (30 units)Tweets (50 units)Share (50 units)
WAR10,1074.96%10,7045.25%
FAMILY (literal control)24,26911.91%24,56312.06%
STORM3,0171.48%3,0351.49%
MONSTER1,3480.66%1,3820.68%
TSUNAMI2,2171.09%2,3041.13%

With the full 91-unit WAR list, the text reports 10,846 tweets (5.32%) p. 13.

Replication across corpora tab. 3:

CorpusWARFAMILYSTORMMONSTERTSUNAMITweets
Wicke and Bolognesi, 2 weeks5.32%12.06%1.49%0.68%1.13%203,756
Lamsal, 2 weeks6.94%8.60%1.06%0.70%1.05%401,582
Wicke and Bolognesi, 2 months5.54%9.95%1.67%0.67%1.25%654,354
Lamsal, 2 months6.55%8.14%1.24%0.72%1.24%1,213,420

All four rows keep the same order: FAMILY > WAR > STORM + TSUNAMI + MONSTER p. 20. Cochran's Q across the five frames is significant in every corpus (p < 0.0001) tab. 3.

WAR topic placement p. 13-15 fig. 4 fig. 5:

  • Among the 4 topics, WAR tweets are most likely in Reacting to the epidemic (topic IV, the highest average probability) and in Communications and Reporting (topic I). Politics (topic III) is next. Community and Social Compassion (topic II) is lowest, roughly a third of the top value. Values are read from the bar chart fig. 4.
  • Among the 16 topics, the highest WAR averages are in topics 10 (diagnostics and treatment), 2 (online learning), 7 (health care workers and help) and 11 (news and world), with topic 3 (friends, family, share) low fig. 5 p. 15.

Dominant WAR units: fight (29.76% of WAR matches), fighting, war, combat, threat, battle, front line, military, peace p. 13.

Paper vs code

No official code. The paper names an OSF repository, which holds the tweet IDs and the extra LDA model p. 7, p. 9, and interactive pyLDAvis viewers through short bit.ly links p. 11. None of these is a code repository. We searched the paper text, the arXiv metadata, and the GitHub repository search for "framing covid-19 twitter wicke", which returned no results.

Pitfalls

  • Tweet IDs only. The public dataset stores tweet IDs, not text, because of Twitter's redistribution terms p. 7. An implementer must re-fetch the text from the API, and deleted or protected tweets will drop out, so counts will not match. The licence of the OSF dataset is not stated in the paper.
  • Dedup scope unclear. The text says "the first tweet on that day by users whose tweets we have not collected yet" p. 7. It is not clear whether the one-tweet rule applies to the whole 14-day window or to each day. The text gives only the 14-day total of 203,756 unique-tweeter tweets p. 7.
  • 25,000 is a target. Table 1 pairs cumulative filtered counts with cumulative collected counts, which reach 350,000 collected by 2 April. The filtered total is 203,756, so a daily reading of 25,000 does not match the kept tweets tab. 1.
  • Small inconsistencies in reported counts. FAMILY is 24,568 tweets in the text p. 17 and 24,563 in Table 2 at 50 units tab. 2. WAR is 10,846 (5.32%) with 91 units in the text p. 13 and 10,704 (5.25%) at 50 units in the table. Use the table values with the stated cutoff.
  • Metaphor is assumed. All WAR unit matches are counted as metaphorical p. 13. The authors accept literal use as a limitation, but did not measure it. A MIPVU check would change the WAR share.
  • Ranking method. The 30 and 50 cutoffs keep the most frequently used units p. 18, but the paper does not say whether frequency means tweets or token occurrences. A rebuild should choose one and report it.
  • LDA is random. The text notes that retraining gives different topics p. 15 and gives no seed. Topic labels are the authors' reading of the top words p. 10; a rebuild may need new labels.
  • Inflected forms. Words are not lemmatised, so "fight", "fighting" and "fights" count as separate units p. 9. "fight" alone is about a third of the WAR matches p. 13.
  • Ambiguous tokens. The token "us" cannot be separated into "United States" and the pronoun p. 7.
  • Sample bias. The sample is English and mostly from the USA, with the one-tweet-per-user rule and no retweets. The authors say the results describe how American English speakers talk about COVID-19 on Twitter, not Twitter as a whole p. 22.
  • Replication keywords differ. Lamsal's dataset uses the keyword "corona", which this study excludes. The FAMILY share falls by about 3.5 points and WAR rises by about 1.6 points, which the authors put down to keyword choice p. 20.
  • Frame lists are seeds. The lists come from a word-similarity service and MetaNet, plus manual checks. Other researchers might add or drop words, and the paper gives no inter-rater check on the lists.
  • Time-dependence. The authors expect the WAR share to shift as the epidemic moves to a later phase p. 14, p. 21. The 2-month replication shows small changes only tab. 3.
  • Interactive viewers are behind short bit.ly links p. 11. They may stop working; the paper does not archive them.

Lineage

  • Builds on: LDA topic modelling p. 8 (Blei et al., cited as ref. 29 in the paper), and the MetaNet WAR frame for disease metaphors p. 4, p. 12 (ref. 18-19).
  • Method sources: relatedwords for lexical units p. 12, p. 16; MetaphorMagnet for the alternative frames p. 16 (ref. 36); MIPVU as the reference metaphor identification procedure, not used p. 13 (ref. 37).
  • Corpus: the Lamsal Coronavirus Tweets Dataset is used for replication p. 19 (ref. 25).
  • Related: the Pruss et al. Zika topic study p. 3-4 and the War-metaphor work of Sontag and Semino et al. p. 4 (refs. 4, 15, 16). The authors close by proposing a metaphor menu p. 22.
  • Compared against: FAMILY (literal control), STORM, MONSTER, TSUNAMI p. 17.
  • Superseded by: none stated in the wiki.

Source and license

Adapted from “Framing COVID-19: How we conceptualize and discuss the pandemic on Twitter” by Philipp Wicke, Marianna M. Bolognesi (arXiv:2004.06986), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.