Published April 19, 2021 | Version 1.1
Dataset Open

War of Words II: Enriched Models of Law-Making Processes


  • 1. EPFL


This upload contains the dataset presented and used in the paper:

Victor Kristof, Aswin Suresh, Matthias Grossglauser, Patrick Thiran, War of Words II: Enriched Models of Law-Making Processes, The Web Conference 2021, April 19-23, 2021, Ljubljana, Slovenia

The code to process and use the dataset can be found on GitHub.

This is a follow-up work to War of Words: The Competitive Dynamics of Legislative Processes.

The dataset is split into two legislature periods of the European Parliament, the 7th (war-of-words-2-ep7.txt) and the 8th (war-of-words-2-ep8.txt) legislature. Here is a snippet to load the dataset (for EP8 in this example) in Python:

import json

with open('path/to/war-of-words-2-ep8.txt') as f:
    dataset = [json.loads(l) for l in f.readlines()]

In the two text files, each line is a data point representing a conflict between edits. It is encoded as a JSON list of dictionaries, where each dictionary is an edit. Each edit has the following structure:

  'edit_id': 163187,                     // Unique edit identifier
  'edit_type': 'insert',                 // One of 'insert', 'delete', or 'replace'
  'accepted': True,                      // Label
  'dossier_ref': 'ENVI-AD(2012)487738',  // Reference to dossier (see below)
  'dossier_type': 'opinion',             // One of 'opinion' or 'report'
  'date': '2017-03-02',                  // Date of vote of all amendments for this dossier
  'legal_act': 'regulation',             // One of 'regulation', 'directive', or 'decision'
  'committee': 'BUDG',                   // Committee in which this edit was proposed
  'outsider': False,                     // Whether the above committee is the reporting committee
  'article_type': 'recital',             // One of 7 article types
  'source': 'BUDG-AM(2017)599742',       // Reference to original document of the amendment
  'justification': None,                 // The text of the optional justification (or None)
  'edit_indices': {...},                 // Indices of edit in the amendment (see below)
  'text_original': [...],                // Original text reported in the source document (see below)
  'text_amended': [...],                 // Amended text reported in the source document (see below)
  'authors': [                           // List of authors
      'id': 88882,                       // Unique MEP identifier (see below)
      'name': 'Victor NEGRESCU',         // MEP full name
      'gender': 'M',                     // Gender as reported on the Parliament database
      'nationality': 'Romania',          // One of 28 nationalities
      'group': 'Group of the Progressive Alliance of Socialists and Democrats in the European Parliament',                             // One 9 political groups
      'rapporteur': False                // Whether the MEP is rapporteur for this dossier

The text_original and text_amended keys contain the portion of text reported in the `source` document. The text is tokenized as a list of terms (words, numbers, punctuation, ...). These two keys are not the actual edit. This is because the amendments are reported as an edited paragraph (which also gives some context to the edit). An amendment contains one or more edits. To access the actual text of the edit, use the `edit_indices` key, which is a dictionary (such as `{'i1': 80, 'i2': 80, 'j1': 80, 'j2': 101}`). The `i1` and `i2` keys are the first and last indices of the change in the original text, and the `j1` and `j2` keys are the first and last indices of the amended text. Hence, you can access the text of the edit by doing:

idx = edit['edit_indices']
i1, i2, j1, j2 = idx['i1'], idx['i2'], idx['j1'], idx['j2']
old = edit['text_original'][i1:i2]
new = edit['text_amended'][j1:j2]

print(f'"{old}" is replaced by "{new}"')

If an edit is an insertion, then `i1 == i2`. If it is a deletion, then `j1 == j2`. Read the documentation of difflib to learn more about how these indices are obtained.

You can assume that:

  • Each data point has at least one edit.
  • If there is only one edit, then it is in conflict with the status quo (see Section 2 of the paper).
  • If there are two or more edits in conflict, then they are all in conflict against each other and they are in conflict with the status quo (see Section 2 of the paper).
  • At most one edit is accepted in each data point.
  • In each legislature, each edit has a unique identifier.

You can find the original documents where the amendments were proposed using the `source` key, which has the format `COMM-AM(YEAR)PENUMBER`. Use the following search tools for EP7 and EP8 (the PE number field should be enough, adding a "." to fit the required format).

The parliamentarians (MEPs, for Member of the European Parliament) have a unique identifier that you can use to get more details about them on the Parliament website: Go to, where MEP_ID is the id of the MEP of interest.

Don't hesitate to reach out to me if you have any questions!


To cite this work:

  author = {Kristof, Victor and Suresh, Aswin and Grossglauser, Matthias and Thiran, Patrick},
  title = {War of Words II: Enriched Models for Law-Making Processes},
  year = {2021},
  booktitle = {Proceedings of The Web Conference 2021},
  TODO: pages = {2803–2809},
  numpages = {12},
  location = {Ljubljana, Solvenia},
  series = {WWW '21}



Files (1.1 GB)

Name Size Download all
92.3 kB Preview Download
753.4 kB Preview Download
86.7 MB Preview Download
449.0 MB Preview Download
607.4 MB Preview Download

Additional details

Related works

Dataset: 10.1145/3366423.3380041 (DOI)
Is documented by
Conference paper: 10.1145/3442381.3450131 (DOI)