Skip to content
Showcase/ChaosNLI: NLI Label Distributions
intermediatetext

ChaosNLI: NLI Label Distributions

Distributional annotation of Natural Language Inference judgments, based on ChaosNLI (Nie, Zhou, and Bansal, EMNLP 2020). Given a context and a statement, the annotator first makes the original 3-way judgment (Entailment / Neutral / Contradiction), then distributes 100 points across the three labels to express a belief distribution. Framing caveat: ChaosNLI's label distributions were collected as 100 independent categorical judgments per item from different crowd-workers; this showcase config demonstrates Potato's soft_label scheme as a direct-elicitation alternative that captures the same distributional signal per annotator.

About this dataset

ChaosNLI (Collective HumAn OpinionS for NLI) asks what the full distribution of human judgments — rather than a single majority label — reveals about natural language inference. Nie, Zhou, and Bansal collected 100 fresh annotations for each of 4,645 examples drawn from the SNLI and MNLI-matched development sets (low-agreement subsets) and the entire Abductive-NLI development set, for a total of 464,500 annotations.

With 100 opinions per item, the picture changes substantially: the original majority label fails to match the new prevailing human opinion on 10% to 31% of the data depending on the subset, and large human disagreements persist on a noticeable fraction of examples. The paper argues that models should be evaluated on their ability to predict the distribution over human judgments, not just a single gold label, and shows that state-of-the-art models capture these distributions poorly.

The original collection kept the standard 3-way categorical labeling schema: each Mechanical Turk worker made one single-choice judgment per item under the compressed instructions reproduced in Figure 1 of the paper, with an on-boarding test, a training phase, and continuous performance tracking against a set of unanimous examples for quality control.

This config pairs the original categorical judgment (radio) with Potato's soft_label scheme, in which the annotator allocates 100 points across Entailment, Neutral, and Contradiction with constrained sliders and a live distribution chart. Where ChaosNLI reconstructs a distribution by aggregating 100 one-shot votes, the soft_label scheme elicits each annotator's belief distribution directly — a cheaper way to capture the same distributional signal, at the cost of departing from the paper's exact protocol. The sample items are self-authored SNLI/MNLI-style pairs designed to invite disagreement, not rows from the released dataset.

Examples
4,645 (1,514 SNLI + 1,599 MNLI-m + 1,532 Abductive-NLI)
Annotations per example
100
Total annotations
464,500
Label schema
3-way (Entailment / Neutral / Contradiction); H1/H2 for Abductive-NLI
Majority label changed
10% (alphaNLI), 20% (SNLI), 31% (MNLI-m) of collected data
Submit

Configuration Fileconfig.yaml

This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.

yaml
# ChaosNLI — Label Distributions for Natural Language Inference
# Based on the ChaosNLI dataset:
#   Yixin Nie, Xiang Zhou, and Mohit Bansal (2020), "What Can We Learn from
#   Collective Human Opinions on Natural Language Inference Data?" Proceedings of
#   the 2020 Conference on Empirical Methods in Natural Language Processing
#   (EMNLP), pp. 9131-9143.
#   DOI: 10.18653/v1/2020.emnlp-main.734
#   Paper: https://aclanthology.org/2020.emnlp-main.734/
#   Dataset: https://github.com/easonnie/ChaosNLI
#
# Task: given a context (premise) and a statement (hypothesis), judge whether the
# statement is definitely correct (Entailment), definitely incorrect
# (Contradiction), or neither (Neutral).
#
# FRAMING CAVEAT: ChaosNLI's label distributions were collected as 100
# independent single-choice categorical judgments per item from different
# crowd-workers; no individual annotator ever produced a distribution. This
# showcase config demonstrates Potato's soft_label scheme as a direct-elicitation
# alternative: each annotator first gives the original 3-way categorical judgment
# (radio), then distributes 100 points across the three labels — capturing the
# same distributional signal ChaosNLI aggregates over a crowd, but per annotator.
#
# Annotation instructions reproduced verbatim from Figure 1 (Section 3.2) of the
# paper — the compressed Mechanical Turker instructions for the NLI collections
# (the Abductive-NLI variant is omitted); the trailing note on the point
# allocation is a showcase addition.

annotation_task_name: "ChaosNLI: NLI Label Distributions"
task_dir: "."

data_files:
  - sample-data.json

item_properties:
  id_key: "id"
  text_key: "statement"

output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

port: 8000
server_name: localhost

annotation_schemes:
  - annotation_type: radio
    name: nli_label
    description: "Choose the correct category for the given pair of context and statement."
    labels:
      - "Definitely correct (Entailment)"
      - "Neither (Neutral)"
      - "Definitely incorrect (Contradiction)"
    keyboard_shortcuts:
      "Definitely correct (Entailment)": "1"
      "Neither (Neutral)": "2"
      "Definitely incorrect (Contradiction)": "3"
    tooltips:
      "Definitely correct (Entailment)": "Given the context, the statement is definitely correct"
      "Neither (Neutral)": "The statement is neither definitely correct nor definitely incorrect"
      "Definitely incorrect (Contradiction)": "Given the context, the statement is definitely incorrect"

  - annotation_type: soft_label
    name: nli_label_distribution
    description: "Now distribute 100 points across the three categories to reflect how a large group of careful readers would judge this pair."
    total: 100
    min_per_label: 0
    show_distribution_chart: true
    labels:
      - "Entailment"
      - "Neutral"
      - "Contradiction"
    label_requirement:
      required: true

annotation_instructions: |
  Given a context, a statement can be either:

  - **Definitely correct (Entailment)**; or
  - **Definitely incorrect (Contradiction)**; or
  - **Neither (Neutral)**.

  Your goal is to choose the correct category for a given pair of context and
  statement.

  An automatic detector will estimate your annotation accuracy on this task. If
  your estimated accuracy is too low, you might be **disqualified**.

  If you feel **uncertain** about some examples, just choose the best category you
  believe the statement should be in.

  Examples:

  > **Context:** *A guitarist is playing in a band.*
  > **Statement:** *Some people are performing.*
  > **Answer:** The statement is **definitely correct**.

  [Showcase addition: after choosing your single best category, distribute 100
  points across Entailment / Neutral / Contradiction to express how plausible each
  category is. ChaosNLI collected this distribution by aggregating 100 independent
  single-choice judgments per item; here you report your belief distribution
  directly.]

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>Source:</strong> {{source}}
    </div>
    <div style="background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 8px; padding: 16px; margin-bottom: 8px;">
      <strong style="color: #1e40af;">Context:</strong>
      <p style="font-size: 16px; line-height: 1.6; margin: 8px 0 0 0;">{{context}}</p>
    </div>
    <div style="background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px; padding: 16px;">
      <strong style="color: #92400e;">Statement:</strong>
      <p style="font-size: 16px; line-height: 1.6; margin: 8px 0 0 0;">{{statement}}</p>
    </div>
  </div>

allow_all_users: true
instances_per_annotator: 50
annotation_per_instance: 3
allow_skip: true

Sample Datasample-data.json

json
[
  {
    "id": "chaosnli_001",
    "source": "SNLI-style",
    "context": "A woman in a yellow raincoat is waiting at a bus stop while holding a closed umbrella.",
    "statement": "The woman is prepared for rain."
  },
  {
    "id": "chaosnli_002",
    "source": "SNLI-style",
    "context": "Two children are building a sandcastle near the water's edge as a dog watches them.",
    "statement": "The children are on vacation with their parents."
  }
]

// ... and 8 more items

Get This Design

View on GitHub

Clone or download from the repository

Quick start:

git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/text/natural-language-inference/chaosnli-label-distributions
potato start config.yaml

Dataset & paper

Yixin Nie, Xiang Zhou, and Mohit Bansal. 2020. What Can We Learn from Collective Human Opinions on Natural Language Inference Data? In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), pages 9131-9143.

Citation (BibTeX)

bibtex
@inproceedings{nie-etal-2020-learn,
    title = "What Can We Learn from Collective Human Opinions on Natural Language Inference Data?",
    author = "Nie, Yixin  and
      Zhou, Xiang  and
      Bansal, Mohit",
    booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP)",
    month = nov,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2020.emnlp-main.734/",
    doi = "10.18653/v1/2020.emnlp-main.734",
    pages = "9131--9143"
}

Details

Annotation Types

radiosoft_label

Domain

NLPNatural Language Inference

Use Cases

Label Distribution LearningAnnotator DisagreementHuman Label Variation

Tags

nlisoft-labelslabel-distributionsannotator-disagreementsnlimnlihuman-label-variation

Found an issue or want to improve this design?

Open an Issue