RCV1: Hierarchical Topic Coding
Hierarchical multi-label Topic coding of newswire stories, based on Reuters Corpus Volume 1 (Lewis, Yang, Rose, and Li, JMLR 2004). Annotators read an English news story and assign all applicable Topic codes from a tree-structured taxonomy spanning CCAT (Corporate/Industrial), ECAT (Economics), GCAT (Government/Social), and MCAT (Markets), following the documented Reuters coding policies: at least one Topic code per story and the most specific appropriate codes. Note that the original RCV1 coding was production editorial work by Reuters editors, partly machine-assisted, under the Reuters Business Briefing coding policies; this task recreates the manual Topic-coding judgment in isolation.
About this dataset
Reuters Corpus Volume 1 (RCV1) is an archive of 806,791 English newswire stories produced by Reuters journalists between August 1996 and August 1997, and remains one of the most influential benchmarks for multi-label text categorization. Each story carries category codes from three sets — Topics, Industries, and Regions — assigned to support retrieval in the Reuters Business Briefing product.
Topic codes capture the major subjects of a story and are organized in four hierarchical groups: CCAT (Corporate/Industrial), ECAT (Economics), GCAT (Government/Social), and MCAT (Markets). Lewis et al. determined that 103 Topic codes were actually available for assignment, alongside 354 valid Industry codes and 366 Region codes. Two documented coding policies governed assignment: the Minimum Code Policy (each story needed at least one Topic code and one Region code) and the Hierarchy Policy (assign the most specific appropriate codes, with ancestors added, usually automatically).
Unlike purpose-built research annotation, RCV1's labels came from a production editorial workflow: stories first passed through a rule-based autocoder (TIS), stories failing the Minimum Code check were routed to human editors, and all stories entered a holding queue that editors reviewed every six hours. The paper documents this pipeline in detail, which is one reason RCV1 is also a case study in how real-world coding practice shapes benchmark data.
This config uses Potato's hierarchical_multiselect scheme to recreate the manual Topic-coding judgment: an expandable code tree with search, no auto-propagation (matching the instruction to select the most specific codes and leave ancestor expansion to downstream processing), and a required-selection constraint reflecting the Minimum Code Policy. The taxonomy is a representative subset of the 103 valid Topic codes; Region and Industry coding are omitted. The sample stories are self-authored newswire-style texts, not Reuters articles.
- Documents
- 806,791 (RCV1-v1); 804,414 (RCV1-v2)
- Period
- August 1996 - August 1997
- Valid Topic codes
- 103, in 4 hierarchical groups (CCAT, ECAT, GCAT, MCAT)
- Valid Industry codes
- 354
- Valid Region codes
- 366
- Coding effort
- ~12 person-years (one estimate)
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# RCV1 — Hierarchical Topic Coding of Newswire Stories
# Based on the Reuters Corpus Volume 1 benchmark:
# David D. Lewis, Yiming Yang, Tony G. Rose, and Fan Li (2004), "RCV1: A New
# Benchmark Collection for Text Categorization Research." Journal of Machine
# Learning Research 5:361-397.
# Paper: https://www.jmlr.org/papers/v5/lewis04a.html (no DOI; JMLR URL canonical)
# Dataset: https://trec.nist.gov/data/reuters/reuters.html
#
# Task: assign hierarchical Topic codes to an English newswire story. RCV1's
# Topic codes are organized in four hierarchical groups — CCAT (Corporate/
# Industrial), ECAT (Economics), GCAT (Government/Social), and MCAT (Markets) —
# with 103 codes available for assignment. Coding followed two documented
# Reuters policies: the Minimum Code Policy (every story gets at least one Topic
# code and one Region code) and the Hierarchy Policy (assign the most specific
# appropriate codes; ancestors are added, usually automatically).
#
# CAVEAT: the original RCV1 coding was production editorial work by Reuters
# editors, partly machine-assisted (a rule-based autocoder followed by manual
# editing and holding-queue correction), following the Reuters Business Briefing
# coding policies. This config recreates the manual Topic-coding judgment as a
# standalone annotation task.
#
# Deliberate simplifications: (1) only Topic coding is included — the Region
# codes (366) and Industry codes (354) required by the full workflow are
# omitted, so the Minimum Code Policy's Region requirement is not enforced;
# (2) the taxonomy below is a representative subset of the 103 valid Topic
# codes, not the complete set; (3) ancestor codes are not auto-assigned —
# select the most specific codes and let downstream hierarchical expansion add
# ancestors, per the Hierarchy Policy.
#
# The two coding policies in the instructions are reproduced verbatim from
# Section 2.3 of the paper; the surrounding instructions are adapted from
# Sections 2.2-2.4 — the paper does not publish Reuters' full annotator-facing
# coding guidelines.
annotation_task_name: "RCV1: Hierarchical Topic Coding"
task_dir: "."
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "text"
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
port: 8000
server_name: localhost
annotation_schemes:
- annotation_type: hierarchical_multiselect
name: topic_codes
description: "Select all Topic codes that capture the major subjects of this story. Assign the most specific appropriate codes; do not add ancestor codes yourself."
auto_select_children: false
auto_select_parent: false
show_search: true
max_selections: null
expand_depth: 1
taxonomy:
"CCAT (Corporate/Industrial)":
"C15 Performance":
- "C151 Accounts/Earnings"
- "C152 Comment/Forecasts"
"C17 Funding/Capital":
- "C171 Share Capital"
- "C172 Bonds/Debt Issues"
- "C173 Loans/Credits"
- "C174 Credit Ratings"
"C18 Ownership Changes":
- "C181 Mergers/Acquisitions"
- "C182 Asset Transfers"
- "C183 Privatisations"
"C41 Management":
- "C411 Management Moves"
"ECAT (Economics)":
"E12 Monetary/Economic":
- "E121 Money Supply"
"E13 Inflation/Prices":
- "E131 Consumer Prices"
- "E132 Wholesale Prices"
"E21 Government Finance":
- "E211 Expenditure/Revenue"
- "E212 Government Borrowing"
"E51 Trade/Reserves":
- "E511 Balance of Payments"
- "E512 Merchandise Trade"
- "E513 Reserves"
"GCAT (Government/Social)":
- "GCRIM Crime, Law Enforcement"
- "GDEF Defence"
- "GDIP International Relations"
- "GDIS Disasters and Accidents"
- "GENV Environment and Natural World"
- "GHEA Health"
- "GPOL Domestic Politics"
- "GSCI Science and Technology"
- "GSPO Sports"
- "GVIO War, Civil War"
- "GVOTE Elections"
- "GWEA Weather"
"MCAT (Markets)":
"M13 Money Markets":
- "M131 Interbank Markets"
- "M132 Forex Markets"
"M14 Commodity Markets":
- "M141 Soft Commodities"
- "M142 Metals Trading"
- "M143 Energy Markets"
label_requirement:
required: true
annotation_instructions: |
You are coding an English newswire story with Topic codes from the Reuters
category scheme. Topic codes capture the major subjects of a story and are
organized in four hierarchical groups: CCAT (Corporate/Industrial), ECAT
(Economics), GCAT (Government/Social), and MCAT (Markets).
Reuters' guidance for coding included two broad policies (reproduced verbatim
from Section 2.3 of Lewis et al., 2004):
1. **Minimum Code Policy:** "Each story was required to have at least one
Topic code and one Region code."
2. **Hierarchy Policy:** "Coding was to assign the most specific appropriate
codes from the Topic and Industry sets, as well as (usually automatically)
all ancestors of those codes. In contrast to some coding systems, there was
no limit on the number of codes with the same parent that could be applied."
Applying these policies in this task:
- Assign **at least one Topic code** to every story. (Region coding is not part
of this task.)
- Select the **most specific** appropriate codes in the tree. Do not add
ancestor codes yourself; ancestors are added automatically downstream.
- You may assign as many codes as apply, including several codes with the same
parent.
- Code the major subjects of the story, not passing mentions. For example, a
story about a company's quarterly results belongs under C15 Performance
(most specifically C151 Accounts/Earnings), while a story about a merger
belongs under C181 Mergers/Acquisitions.
html_layout: |
<div style="padding: 15px; max-width: 820px; margin: auto;">
<div style="background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 8px; padding: 6px 12px; margin-bottom: 8px; font-size: 13px; color: #475569;">
<strong>Dateline:</strong> {{dateline}}
</div>
<div style="background: #ffffff; border: 1px solid #d1d5db; border-radius: 8px; padding: 16px;">
<h3 style="font-size: 18px; margin: 0 0 10px 0; color: #111827;">{{title}}</h3>
<p style="font-size: 15px; line-height: 1.7; margin: 0; color: #374151;">{{text}}</p>
</div>
</div>
allow_all_users: true
instances_per_annotator: 40
annotation_per_instance: 2
allow_skip: true
Sample Datasample-data.json
[
{
"id": "rcv1_001",
"dateline": "FRANKFURT",
"title": "German engineering group posts higher first-half profit, raises outlook",
"text": "A German industrial engineering group on Tuesday reported a 12 percent rise in first-half operating profit, citing strong demand for its turbine components in Asia. The company raised its full-year earnings forecast and said order books were at their highest level in five years. Analysts said the results beat consensus expectations and several brokerages lifted their price targets."
},
{
"id": "rcv1_002",
"dateline": "LONDON",
"title": "Sterling firms against dollar as rate expectations shift",
"text": "Sterling rose against the dollar in early European trading on Thursday as dealers priced in a growing likelihood of a rise in British interest rates before year-end. The pound touched a three-month high before easing back slightly. Money market rates also edged higher, while gilts were little changed in thin trade."
}
]
// ... and 8 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/text/topic-classification/rcv1-hierarchical-topic-coding potato start config.yaml
Dataset & paper
David D. Lewis, Yiming Yang, Tony G. Rose, and Fan Li. 2004. RCV1: A New Benchmark Collection for Text Categorization Research. Journal of Machine Learning Research 5:361-397.
Citation (BibTeX)
@article{lewis2004rcv1,
title = {{RCV1}: A New Benchmark Collection for Text Categorization Research},
author = {Lewis, David D. and Yang, Yiming and Rose, Tony G. and Li, Fan},
journal = {Journal of Machine Learning Research},
volume = {5},
pages = {361--397},
year = {2004},
url = {https://www.jmlr.org/papers/v5/lewis04a.html}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
DWIE Document-Level Entity Annotation and Linking
Document-level entity mention annotation with knowledge-base linking based on DWIE (Zaporojets, Deleu, Develder, and Demeester, Information Processing & Management 2021). Annotators mark every entity mention in a full news article, assign an entity type, and link mentions to Wikipedia/Wikidata entries, leaving NIL entities unlinked. Complements the mention-level AIDA CoNLL-YAGO task (text/entity-linking/aida-conll-entity-disambiguation): AIDA presents one pre-marked mention at a time for disambiguation, whereas DWIE is entity-centric and document-level — annotators find all mentions themselves and keep links consistent across each entity's coreferent mentions.
ECB+ Cross-Document Event Coreference
Cross-document event coreference annotation based on the ECB+ corpus (Cybulska and Vossen, LREC 2014). Annotators mark event mentions — actions with their times, locations, and human and non-human participants — across multiple news documents describing similar but distinct event instances, and build shared event records that link coreferent event descriptions across documents by citing evidence spans. Complements the within-document MAVEN-ERE task (text/coreference/maven-ere-event-coreference): MAVEN-ERE links event mentions inside a single document, whereas ECB+ requires deciding whether descriptions in different documents refer to the same real-world event instance or merely to the same event type.
News Headline Emotion Roles (GoodNewsEveryone)
Annotate emotions in news headlines with semantic roles. Based on Bostan et al., LREC 2020. Identify emotion, experiencer, cause, target, and textual cue.