Skip to content
Showcase/NusaX - Sentiment Analysis for Indonesian Local Languages
beginnertext

NusaX - Sentiment Analysis for Indonesian Local Languages

Three-way sentiment annotation for low-resource Indonesian languages, following the NusaX scheme (Winata et al., EACL 2023, Outstanding Paper): the first high-quality human-annotated parallel sentiment corpus for 10 Indonesian local languages - Acehnese, Balinese, Banjarese, Buginese, Javanese, Madurese, Minangkabau, Ngaju, Sundanese and Toba Batak - plus Indonesian and English. Built by the IndoNLP community, it mirrors AfriSenti and IndicNLP-SA for a different, underrepresented language region. Annotators label each text as positive, negative, or neutral; sample items include an English gloss for reference only.

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
# NusaX - Sentiment Analysis for Indonesian Local Languages
# Based on Winata et al., EACL 2023 (Outstanding Paper)
# Paper: https://aclanthology.org/2023.eacl-main.57/
# Dataset: https://github.com/IndoNLP/nusax
#
# NusaX is the first high-quality, human-annotated parallel sentiment corpus
# for 10 low-resource Indonesian local languages (Acehnese, Balinese,
# Banjarese, Buginese, Javanese, Madurese, Minangkabau, Ngaju, Sundanese,
# Toba Batak), alongside Indonesian and English. It was created by the
# IndoNLP community and demonstrates the same participatory, native-speaker
# annotation model as Masakhane (Africa) and AfriSenti.
#
# Sentiment Labels:
# - Positive: expresses approval, satisfaction, happiness, or praise
# - Negative: expresses disapproval, dissatisfaction, sadness, or criticism
# - Neutral: factual or balanced, with no clear positive or negative stance
#
# Annotation Guidelines:
# 1. Read the text in the source language (an English gloss is provided for
#    reference in this showcase only).
# 2. Judge the overall sentiment expressed by the author.
# 3. Focus on attitude and tone, not merely the topic.

annotation_task_name: "NusaX - Indonesian Local Language Sentiment"
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: radio
    name: sentiment
    description: "What is the overall sentiment of this text?"
    labels:
      - "Positive"
      - "Negative"
      - "Neutral"
    keyboard_shortcuts:
      "Positive": "1"
      "Negative": "2"
      "Neutral": "3"
    tooltips:
      "Positive": "Expresses approval, satisfaction, happiness, or praise"
      "Negative": "Expresses disapproval, dissatisfaction, sadness, or criticism"
      "Neutral": "Factual or balanced, with no clear positive or negative stance"

annotation_instructions: |
  You will see a short text written in an Indonesian local language, with its
  language identifier and (for this showcase only) an English gloss. Classify
  the overall sentiment as Positive, Negative, or Neutral, based on the
  author's attitude and tone rather than the topic alone.

html_layout: |
  <div style="padding: 15px; max-width: 800px; margin: auto;">
    <div style="background: #ecfdf5; border: 1px solid #a7f3d0; border-radius: 8px; padding: 12px; margin-bottom: 12px;">
      <strong style="color: #065f46;">Language:</strong>
      <span style="font-size: 15px; margin-left: 8px;">{{language}}</span>
    </div>
    <div style="background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px; padding: 16px; margin-bottom: 8px;">
      <strong style="color: #0369a1;">Text:</strong>
      <p style="font-size: 17px; line-height: 1.7; margin: 8px 0 0 0;">{{text}}</p>
    </div>
    <div style="color: #6b7280; font-size: 13px; font-style: italic; margin-bottom: 16px;">
      English gloss (reference only): {{gloss}}
    </div>
  </div>

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

Sample Datasample-data.json

json
[
  {
    "id": "nsx_001",
    "language": "Indonesian (ind)",
    "text": "Makanan di restoran ini sangat enak dan pelayanannya ramah sekali.",
    "gloss": "The food at this restaurant is very tasty and the service is very friendly."
  },
  {
    "id": "nsx_002",
    "language": "Indonesian (ind)",
    "text": "Saya kecewa karena paket saya datang terlambat lagi minggu ini.",
    "gloss": "I am disappointed because my package arrived late again this week."
  }
]

// ... 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/cross-lingual/nusax-indonesian-sentiment
potato start config.yaml

Dataset & paper

Winata et al., EACL 2023

Citation (BibTeX)

bibtex
@inproceedings{winata-etal-2023-nusax,
    title = "{N}usa{X}: Multilingual Parallel Sentiment Dataset for 10 {I}ndonesian Local Languages",
    author = "Winata, Genta Indra  and Aji, Alham Fikri  and Cahyawijaya, Samuel  and Mahendra, Rahmad  and Koto, Fajri  and others",
    booktitle = "Proceedings of the 17th Conference of the European Chapter of the Association for Computational Linguistics",
    month = may,
    year = "2023",
    address = "Dubrovnik, Croatia",
    publisher = "Association for Computational Linguistics",
    pages = "815--834",
    url = "https://aclanthology.org/2023.eacl-main.57"
}

Details

Annotation Types

radio

Domain

NLPSentiment AnalysisMultilingual NLPLow-Resource Languages

Use Cases

Sentiment AnalysisMultilingual NLPLow-Resource LanguagesIndonesian Local Languages

Tags

sentimentsentiment-analysisindonesian-languagesjavanesesundanesemultilinguallow-resourcenusaxindonlpeacl2023

Found an issue or want to improve this design?

Open an Issue

Related Designs

MasakhaNER 2.0 - Named Entity Recognition for African Languages

Span-level named entity recognition for African-language text, following the MasakhaNER 2.0 annotation scheme (Adelani et al., EMNLP 2022): the largest human-annotated NER dataset for African languages, covering 20 languages such as Swahili, Hausa, Yoruba, Igbo, Nigerian-Pidgin and isiZulu. Native-speaker annotators, trained on the MUC-6 guidelines, highlight four entity types - Person (PER), Organization (ORG), Location (LOC) and Date & Time (DATE) - then confirm the overall entity composition of the sentence. Illustrative sample items include an English gloss for reference only; real annotation is done by native speakers without glosses.

spanradio

MasakhaNEWS - News Topic Classification for African Languages

Single-label news topic classification for African-language news articles, following the MasakhaNEWS scheme (Adelani et al., IJCNLP-AACL 2023), the largest news topic benchmark for African languages, covering 16 languages such as Amharic, Hausa, Yoruba, Swahili, Somali, Lingala and isiXhosa. Masakhane community annotators label each headline/article into one of eight topics: business, entertainment, health, politics, religion, sports, technology, or uncategorized. Illustrative sample items include an English gloss for reference only.

radio

AfriHate - Hate and Abusive Language for African Languages

Multilingual content-moderation annotation following the AfriHate scheme (Muhammad et al., NAACL 2025), a collection of hate speech and abusive language datasets for 15 African languages including Amharic, Hausa, Igbo, Yoruba, Swahili, Somali and isiZulu. Native speakers familiar with the regional culture assign each tweet a three-way label - hate, abusive, or neutral - and, when the tweet is hateful, mark the targeted attribute (e.g. ethnicity, religion, politics, gender). Sample items are mild, constructed illustrations that avoid real slurs or targeting of real groups; an English gloss is provided for reference only.

radiomultiselect