Aspect-Based Sentiment Analysis (Original ABSA)
Identify aspect terms in review text and classify their sentiment polarity, based on SemEval-2014 Task 4 (Pontiki et al.). Annotators highlight aspect terms and assign sentiment labels across restaurant and laptop review domains.
Configuration Fileconfig.yaml
# Original ABSA - Aspect-Based Sentiment Analysis
# Based on Pontiki et al., SemEval 2014
# Paper: https://aclanthology.org/S14-2004/
# Dataset: https://alt.qcri.org/semeval2014/task4/
#
# This task requires annotators to identify aspect terms in review text
# and classify the sentiment polarity expressed toward each aspect.
# The task covers two domains: restaurant reviews and laptop reviews.
#
# Aspect terms are specific features or attributes mentioned in the review
# (e.g., "battery life", "screen", "pasta", "service").
#
# Sentiment Labels:
# - Positive: The opinion toward the aspect is favorable
# - Negative: The opinion toward the aspect is unfavorable
# - Neutral: The aspect is mentioned factually without sentiment
# - Conflict: Both positive and negative sentiments are expressed
annotation_task_name: "Original ABSA - Aspect-Based Sentiment Analysis"
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: span
name: aspect_term_spans
description: "Highlight all aspect terms (specific features or attributes) mentioned in the review."
labels:
- "Aspect Term"
tooltips:
"Aspect Term": "A specific feature, attribute, or entity being evaluated (e.g., battery life, pasta, service, screen resolution)"
- annotation_type: radio
name: sentiment_polarity
description: "What is the overall sentiment polarity of this review toward the identified aspects?"
labels:
- "Positive"
- "Negative"
- "Neutral"
- "Conflict"
keyboard_shortcuts:
"Positive": "1"
"Negative": "2"
"Neutral": "3"
"Conflict": "4"
tooltips:
"Positive": "The opinion expressed toward the aspect is clearly favorable or positive"
"Negative": "The opinion expressed toward the aspect is clearly unfavorable or negative"
"Neutral": "The aspect is mentioned factually without expressing positive or negative sentiment"
"Conflict": "Both positive and negative sentiments are expressed toward the aspect"
annotation_instructions: |
You will be shown review text from the restaurant or laptop domain.
**Step 1: Aspect Term Identification**
Highlight all aspect terms in the text. An aspect term is a specific
feature, attribute, or entity being discussed or evaluated. Examples:
- Restaurant: food, service, ambiance, price, waiter, pizza, dessert menu
- Laptop: battery life, screen, keyboard, trackpad, processor, fan noise
**Step 2: Sentiment Classification**
Classify the overall sentiment polarity:
- **Positive**: Favorable opinion (e.g., "excellent sushi", "fast boot time")
- **Negative**: Unfavorable opinion (e.g., "slow service", "cheap trackpad")
- **Neutral**: Factual mention without sentiment (e.g., "the menu has 10 items")
- **Conflict**: Mixed sentiments (e.g., "the food is great but overpriced")
html_layout: |
<div style="padding: 15px; max-width: 800px; margin: auto;">
<div style="background: #eff6ff; border: 1px solid #93c5fd; border-radius: 8px; padding: 16px; margin-bottom: 16px;">
<strong style="color: #1e40af;">Review Text:</strong>
<p style="font-size: 16px; line-height: 1.7; margin: 8px 0 0 0;">{{text}}</p>
</div>
<div style="background: #f5f3ff; border: 1px solid #c4b5fd; border-radius: 8px; padding: 12px; margin-bottom: 16px;">
<strong style="color: #5b21b6;">Domain:</strong>
<span style="font-size: 15px; margin-left: 8px; text-transform: capitalize;">{{domain}}</span>
</div>
</div>
allow_all_users: true
instances_per_annotator: 50
annotation_per_instance: 2
allow_skip: true
skip_reason_required: false
Sample Datasample-data.json
[
{
"id": "absa_001",
"text": "The sushi was excellent but the service was incredibly slow, and we had to wait over 30 minutes for our appetizers to arrive.",
"domain": "restaurant"
},
{
"id": "absa_002",
"text": "The battery life on this laptop is outstanding, easily lasting 10 hours on a single charge, but the trackpad feels cheap and unresponsive.",
"domain": "laptop"
}
]
// ... 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/semeval/2014/task04-absa-original potato start config.yaml
Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
Aspect-Based Sentiment Analysis
Identification of aspect terms in review text with sentiment polarity classification for each aspect. Based on SemEval-2016 Task 5 (ABSA).
Analysis of Clinical Text: Disorder Identification and Normalization
Identify disorder mentions and their attributes in clinical discharge summaries, based on SemEval-2015 Task 14 (Elhadad et al.). Annotators mark disorder spans, body locations, severity indicators, and classify the assertion status of each disorder.
Causal Medical Claim Detection and PICO Extraction
Detection of causal claims in medical texts and extraction of PICO (Population, Intervention, Comparator, Outcome) elements. Based on SemEval-2023 Task 8 (Khetan et al.).