Skip to content
Showcase/Narrative Story Similarity
intermediatetext

Narrative Story Similarity

SemEval-2026 Task 4: judging narrative similarity between short stories. In the comparative setting (Track A), annotators see an anchor story and two candidate stories and decide which candidate is structurally more similar to the anchor. Narrative similarity is considered across three orthogonal dimensions: abstract theme, course of action, and outcomes. (Track B of the shared task learns story embeddings that reflect these human judgments.)

Select all that apply:

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
# Narrative Story Similarity
# Based on Hatzel et al., SemEval-2026 Task 4
# Paper: https://aclanthology.org/2026.semeval-1.429/
# Task page: https://narrative-similarity-task.github.io/
#
# Track A (Comparative Narrative Similarity) is a pairwise choice: given an
# anchor story and two candidate stories, decide which candidate is
# structurally more similar to the anchor. Similarity is judged across
# three orthogonal dimensions:
#   - Abstract theme: the underlying idea/message
#   - Course of action: the sequence of events/what the characters do
#   - Outcomes: how things turn out
# (Track B of the shared task learns embeddings reflecting these judgments.)
# This showcase models Track A plus a note of which dimensions drove the
# decision.

annotation_task_name: "Narrative Story Similarity"
task_dir: "."

data_files:
  - sample-data.json

item_properties:
  id_key: "id"
  text_key: "anchor"

output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

port: 8000
server_name: localhost

annotation_schemes:
  - annotation_type: radio
    name: more_similar
    description: "Which candidate story is more similar to the anchor story?"
    labels:
      - "Story A"
      - "Story B"
    keyboard_shortcuts:
      "Story A": "1"
      "Story B": "2"

  - annotation_type: multiselect
    name: similarity_dimensions
    description: "Which dimension(s) made your chosen story more similar? (Select all that apply)"
    labels:
      - "Abstract theme"
      - "Course of action"
      - "Outcomes"

annotation_instructions: |
  Read the anchor story and the two candidate stories (A and B). Decide
  which candidate is structurally more similar to the anchor, considering
  the abstract theme, the course of action, and the outcomes. Then indicate
  which of those dimensions drove your decision.

html_layout: |
  <div style="padding: 15px; max-width: 860px; margin: auto;">
    <div style="background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px; padding: 14px; margin-bottom: 10px;">
      <strong style="color: #92400e;">Anchor story:</strong>
      <p style="font-size: 15px; line-height: 1.6; margin: 6px 0 0 0;">{{anchor}}</p>
    </div>
    <div style="background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 8px; padding: 14px; margin-bottom: 10px;">
      <strong style="color: #1e40af;">Story A:</strong>
      <p style="font-size: 15px; line-height: 1.6; margin: 6px 0 0 0;">{{story_a}}</p>
    </div>
    <div style="background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 8px; padding: 14px;">
      <strong style="color: #166534;">Story B:</strong>
      <p style="font-size: 15px; line-height: 1.6; margin: 6px 0 0 0;">{{story_b}}</p>
    </div>
  </div>

allow_all_users: true
instances_per_annotator: 40
annotation_per_instance: 3
allow_skip: true

Sample Datasample-data.json

json
[
  {
    "id": "nss_001",
    "anchor": "A young fox leaves its den to find food during a harsh winter, braving the cold and outwitting a hungry wolf before returning home with a rabbit.",
    "story_a": "A stray cat wanders the city in a snowstorm searching for scraps, dodging a pack of dogs, and finally carries a fish back to her kittens.",
    "story_b": "A wealthy merchant hosts a lavish winter feast, showing off his riches to impress the guests who fill his warm and glittering hall."
  },
  {
    "id": "nss_002",
    "anchor": "A student stays up all night studying for an exam, nearly gives up, but pushes through and passes with the highest grade in the class.",
    "story_a": "A runner trains for months for a marathon, wants to quit at mile twenty, but finds a second wind and crosses the finish line.",
    "story_b": "A tourist gets lost in a foreign city, asks a kind stranger for directions, and ends up discovering a beautiful hidden garden."
  }
]

// ... and 6 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/semeval/2026/task04-narrative-similarity
potato start config.yaml

Dataset & paper

Hatzel et al., SemEval 2026 (Task 4)

Citation (BibTeX)

bibtex
@inproceedings{hatzel-etal-2026-semeval,
    title = "{S}em{E}val-2026 Task 4: Narrative Story Similarity and Narrative Representation Learning",
    author = "Hatzel, Hans Ole  and Artemova, Ekaterina  and Stiemer, Haimo Paul  and Gius, Evelyn  and Biemann, Chris",
    booktitle = "Proceedings of the 20th International Workshop on Semantic Evaluation (SemEval-2026)",
    year = "2026",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2026.semeval-1.429",
    pages = "3460--3478"
}

Details

Annotation Types

radiomultiselect

Domain

NLPNarrative UnderstandingSemEval

Use Cases

Semantic SimilarityNarrative AnalysisRepresentation Learning

Tags

semevalsemeval-2026shared-tasknarrativestory-similaritysemantic-similarity

Found an issue or want to improve this design?

Open an Issue