Update README.md
Browse files
README.md
CHANGED
|
@@ -1,4 +1,3 @@
|
|
| 1 |
-
```markdown
|
| 2 |
# Decida-small: 10-Pillar Automated Debate Adjudication Engine
|
| 3 |
|
| 4 |
[](LICENSE)
|
|
@@ -7,26 +6,30 @@
|
|
| 7 |
[-orange.svg)]()
|
| 8 |
[]()
|
| 9 |
|
| 10 |
-
**Decida-small** is an ultra-fast, 10-pillar automated debate adjudication engine tailored specifically for competitive Indonesian parliamentary and online debate tournaments.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
|
| 12 |
---
|
| 13 |
|
| 14 |
-
##
|
| 15 |
|
| 16 |
-
- **Sub-5s Local Inference:** Evaluates two teams across 6 dense multi-paragraph speeches in
|
| 17 |
- **Dedicated Indonesian NLP Stack:** Utilizes fine-tuned IndoBERT (`indobert-base-p1`) for fallacy classification and semantic evaluation tuned to formal Indonesian argumentation register.
|
| 18 |
- **Zero-Daemon / Self-Contained:** 100% Python and PyTorch. Eliminates external Ollama/HTTP dependencies, connection resets, and malformed JSON parsing timeouts.
|
| 19 |
- **Non-Judgmental Grounded Verbalizer:** Combinatorial slot-filling synthesis engine featuring 250+ modular stylistic variants that quotes real evidentiary claims from the winning team to deliver positive adjudication feedback.
|
| 20 |
|
| 21 |
---
|
| 22 |
|
| 23 |
-
##
|
| 24 |
|
| 25 |
-
|
| 26 |
|
| 27 |
-
|
| 28 |
|
| 29 |
-
| Pillar | Metric Dimension | Weight (
|
| 30 |
|:---:|---|:---:|---|
|
| 31 |
| **P1** | **Kepadatan Semantik (Semantic Relevance)** | 10% | Dense cosine similarity vs. motion centroid via `all-MiniLM-L6-v2` |
|
| 32 |
| **P2** | **Integritas Logika (Fallacy & Logic)** | 15% | Fine-tuned IndoBERT Sequence Classifier (`./model_indobert_fallacy`) |
|
|
@@ -41,32 +44,35 @@ $$\text{Final Score} = \sum_{i=1}^{10} (w_i \times P_i)$$
|
|
| 41 |
|
| 42 |
---
|
| 43 |
|
| 44 |
-
##
|
| 45 |
|
| 46 |
```text
|
| 47 |
Mosi: "Dewan ini akan mewajibkan transisi 100% armada transportasi umum ke kendaraan listrik murni (EV) dalam waktu lima tahun ke depan."
|
|
|
|
| 48 |
Waktu Eksekusi: 4.22 detik
|
| 49 |
|
| 50 |
-
Metrik Pilar
|
| 51 |
-
----------------------------------------------------
|
| 52 |
-
P1: Kepadatan Semantik
|
| 53 |
-
P2: Integritas Logika
|
| 54 |
-
P3: Daya Respons/Bantahan
|
| 55 |
-
P4: Struktur A-R-E-L
|
| 56 |
-
P5: Pertarungan Dampak
|
| 57 |
-
P6: Alur Wacana / Dinamika
|
| 58 |
-
P7: Kepadatan Leksikal/Gaya
|
| 59 |
-
P8: Konsistensi Internal Tim
|
| 60 |
-
P9: Pertahanan & Komparasi
|
| 61 |
-
P10: Eksploitasi & Kepadatan
|
| 62 |
-
----------------------------------------------------
|
| 63 |
-
TOTAL SKOR AKHIR
|
| 64 |
-
====================================================
|
|
|
|
| 65 |
Pemenang: TIM AFIRMASI (PRO) (Margin: 1.71)
|
| 66 |
|
| 67 |
-
----------------------------------------------------
|
| 68 |
ULASAN ANALITIS DEWAN JURI (DECIDA-SMALL FEEDBACK):
|
| 69 |
-
----------------------------------------------------
|
|
|
|
| 70 |
Kemenangan dengan margin kompetitif 1.71 poin berhasil direngkuh oleh TIM AFIRMASI (PRO).
|
| 71 |
|
| 72 |
Penguasaan materi mendasar terbukti lewat susunan argumen yang utuh seperti terlihat saat menegaskan bahwa "Berdasarkan laporan Kementerian Lingkungan Hidup, lebih dari 65% polusi partikulat PM2.5 bersumber...", membangun alur berpikir yang meyakinkan.
|
|
@@ -74,65 +80,67 @@ Penguasaan materi mendasar terbukti lewat susunan argumen yang utuh seperti terl
|
|
| 74 |
Memasuki babak pembelaan dan penegasan posisi, alur penalaran tim mengalir secara organik (skor 89.00), di mana pembicara lanjutan bertindak sebagai akselerator kasus yang efektif.
|
| 75 |
|
| 76 |
Keunggulan paling menentukan hadir pada ketelitian berpikir tim, membentengi setiap kesimpulan dengan premis pendukung yang sah. Keberhasilan tim dalam menjaga beban pembuktian secara konsisten menjadi alasan fundamental di balik hasil ini.
|
| 77 |
-
=================================================================
|
| 78 |
|
|
|
|
| 79 |
```
|
| 80 |
|
| 81 |
---
|
| 82 |
|
| 83 |
-
##
|
| 84 |
|
| 85 |
```text
|
| 86 |
decida-small/
|
|
|
|
| 87 |
βββ pillar/
|
| 88 |
β βββ __init__.py
|
| 89 |
-
β βββ nli_client.py
|
| 90 |
-
β βββ verbalizer.py
|
| 91 |
-
β βββ pillar1.py
|
| 92 |
-
β βββ pillar2.py
|
| 93 |
-
β βββ pillar3.py
|
| 94 |
-
β βββ pillar4.py
|
| 95 |
-
β βββ pillar5.py
|
| 96 |
-
β βββ pillar6.py
|
| 97 |
-
β βββ pillar7.py
|
| 98 |
-
β βββ pillar8.py
|
| 99 |
-
β βββ pillar9.py
|
| 100 |
-
β βββ pillar10.py
|
| 101 |
-
|
| 102 |
-
βββ
|
|
|
|
|
|
|
| 103 |
βββ .gitignoxre
|
| 104 |
βββ LICENSE
|
| 105 |
βββ README.md
|
| 106 |
βββ requirements.txt
|
| 107 |
-
βββ run_judger.py
|
| 108 |
-
|
| 109 |
```
|
| 110 |
|
| 111 |
---
|
| 112 |
|
| 113 |
-
##
|
| 114 |
|
| 115 |
### 1. Prerequisites
|
| 116 |
|
| 117 |
-
|
| 118 |
-
|
| 119 |
|
| 120 |
### 2. Clone and Environment Setup
|
| 121 |
|
| 122 |
```bash
|
| 123 |
-
git clone
|
| 124 |
cd decida-small
|
| 125 |
|
| 126 |
python -m venv venv
|
| 127 |
|
| 128 |
-
# Windows (PowerShell)
|
| 129 |
.\venv\Scripts\Activate.ps1
|
| 130 |
-
|
|
|
|
| 131 |
source venv/bin/activate
|
| 132 |
|
| 133 |
pip install --upgrade pip
|
| 134 |
pip install -r requirements.txt
|
| 135 |
-
|
| 136 |
```
|
| 137 |
|
| 138 |
### 3. Weights Configuration
|
|
@@ -141,59 +149,47 @@ Ensure the fine-tuned IndoBERT directory (`./model_indobert_fallacy`) and Senten
|
|
| 141 |
|
| 142 |
```python
|
| 143 |
# pillar/pillar2.py
|
| 144 |
-
MODEL_PATH = "USERNAME_HF/decida-indobert-fallacy"
|
| 145 |
|
|
|
|
| 146 |
```
|
| 147 |
|
| 148 |
---
|
| 149 |
|
| 150 |
-
##
|
| 151 |
|
| 152 |
Run the standard evaluation interface:
|
| 153 |
|
| 154 |
```bash
|
| 155 |
python run_judger.py
|
| 156 |
-
|
| 157 |
```
|
| 158 |
|
| 159 |
-
|
| 160 |
-
|
| 161 |
|
| 162 |
---
|
| 163 |
|
| 164 |
-
##
|
| 165 |
|
| 166 |
Unlike LLM prompt generators that can hallucinate or produce demoralizing critiques, `pillar/verbalizer.py`:
|
| 167 |
|
| 168 |
1. Computes the maximum comparative margin across all 10 pillars.
|
| 169 |
2. Extracts verbatim evidentiary phrases directly from the winning team's text.
|
| 170 |
3. Assembles a 4-paragraph formal critique using a slot-filling combination engine with over 250 verified positive rhetorical options.
|
| 171 |
-
4. Completes execution in **
|
| 172 |
|
| 173 |
---
|
| 174 |
|
| 175 |
-
##
|
| 176 |
|
| 177 |
-
This project is open-sourced under the [MIT License](
|
| 178 |
|
| 179 |
```bibtex
|
| 180 |
@software{decida_small_2026,
|
| 181 |
-
author
|
| 182 |
-
title
|
| 183 |
-
year
|
| 184 |
-
publisher
|
| 185 |
-
journal
|
| 186 |
-
howpublished = {\url{
|
| 187 |
}
|
| 188 |
-
|
| 189 |
-
```
|
| 190 |
-
|
| 191 |
-
```
|
| 192 |
-
|
| 193 |
-
<ElicitationsGroup message="Pilihan langkah berikutnya untuk melengkapi repositori:">
|
| 194 |
-
<Elicitation label="Buat template file LICENSE (MIT)" query="Buatkan teks lengkap file LICENSE berlisensi MIT untuk proyek Decida-small tahun 2026."/>
|
| 195 |
-
<Elicitation label="Buatkan file upload_model.py otomatis ke Hugging Face Hub" query="Buatkan skrip lengkap upload_model.py untuk push folder model_indobert_fallacy ke Hugging Face Hub dengan validasi token otomatis."/>
|
| 196 |
-
<Elicitation label="Buatkan unit test PyTest (test_engine.py)" query="Buatkan berkas tests/test_engine.py untuk memverifikasi eksekusi 10 pilar dan verbalizer sebelum di-push ke GitHub."/>
|
| 197 |
-
</ElicitationsGroup>
|
| 198 |
-
|
| 199 |
```
|
|
|
|
|
|
|
| 1 |
# Decida-small: 10-Pillar Automated Debate Adjudication Engine
|
| 2 |
|
| 3 |
[](LICENSE)
|
|
|
|
| 6 |
[-orange.svg)]()
|
| 7 |
[]()
|
| 8 |
|
| 9 |
+
**Decida-small** is an ultra-fast, 10-pillar automated debate adjudication engine tailored specifically for competitive Indonesian parliamentary and online debate tournaments.
|
| 10 |
+
|
| 11 |
+
Powered by fine-tuned **IndoBERT**, **Sentence-Transformers**, and local **DeBERTa NLI Cross-Encoders**, it evaluates multi-turn Affirmative vs. Opposition cases across 10 analytical dimensions, producing calibrated floating-point scores and constructive verbal feedback in approximately 4.2 seconds, without external LLM calls or cloud dependencies.
|
| 12 |
+
|
| 13 |
+
**Author: Christopher Alberto Hamonangan**
|
| 14 |
|
| 15 |
---
|
| 16 |
|
| 17 |
+
## Core Highlights
|
| 18 |
|
| 19 |
+
- **Sub-5s Local Inference:** Evaluates two teams across 6 dense multi-paragraph speeches in approximately 4.22 seconds on consumer GPU hardware.
|
| 20 |
- **Dedicated Indonesian NLP Stack:** Utilizes fine-tuned IndoBERT (`indobert-base-p1`) for fallacy classification and semantic evaluation tuned to formal Indonesian argumentation register.
|
| 21 |
- **Zero-Daemon / Self-Contained:** 100% Python and PyTorch. Eliminates external Ollama/HTTP dependencies, connection resets, and malformed JSON parsing timeouts.
|
| 22 |
- **Non-Judgmental Grounded Verbalizer:** Combinatorial slot-filling synthesis engine featuring 250+ modular stylistic variants that quotes real evidentiary claims from the winning team to deliver positive adjudication feedback.
|
| 23 |
|
| 24 |
---
|
| 25 |
|
| 26 |
+
## 10 Evaluation Pillars & Scoring Topology
|
| 27 |
|
| 28 |
+
The total final score is computed as a weighted sum with a 100% aggregate weight:
|
| 29 |
|
| 30 |
+
Final Score = Ξ£ (w_i Γ P_i), for i = 1 to 10
|
| 31 |
|
| 32 |
+
| Pillar | Metric Dimension | Weight (\(w_i\)) | Underlying Method / Model |
|
| 33 |
|:---:|---|:---:|---|
|
| 34 |
| **P1** | **Kepadatan Semantik (Semantic Relevance)** | 10% | Dense cosine similarity vs. motion centroid via `all-MiniLM-L6-v2` |
|
| 35 |
| **P2** | **Integritas Logika (Fallacy & Logic)** | 15% | Fine-tuned IndoBERT Sequence Classifier (`./model_indobert_fallacy`) |
|
|
|
|
| 44 |
|
| 45 |
---
|
| 46 |
|
| 47 |
+
## Benchmark Run Sample
|
| 48 |
|
| 49 |
```text
|
| 50 |
Mosi: "Dewan ini akan mewajibkan transisi 100% armada transportasi umum ke kendaraan listrik murni (EV) dalam waktu lima tahun ke depan."
|
| 51 |
+
|
| 52 |
Waktu Eksekusi: 4.22 detik
|
| 53 |
|
| 54 |
+
Metrik Pilar | TIM PRO | TIM KONTRA
|
| 55 |
+
----------------------------------------------------
|
| 56 |
+
P1: Kepadatan Semantik | 82.65 | 80.92
|
| 57 |
+
P2: Integritas Logika | 75.00 | 25.00
|
| 58 |
+
P3: Daya Respons/Bantahan | 66.67 | 78.33
|
| 59 |
+
P4: Struktur A-R-E-L | 52.50 | 59.17
|
| 60 |
+
P5: Pertarungan Dampak | 57.85 | 83.38
|
| 61 |
+
P6: Alur Wacana / Dinamika | 91.56 | 93.20
|
| 62 |
+
P7: Kepadatan Leksikal/Gaya | 56.75 | 78.59
|
| 63 |
+
P8: Konsistensi Internal Tim | 89.00 | 83.12
|
| 64 |
+
P9: Pertahanan & Komparasi | 49.14 | 53.90
|
| 65 |
+
P10: Eksploitasi & Kepadatan | 81.93 | 84.72
|
| 66 |
+
----------------------------------------------------
|
| 67 |
+
TOTAL SKOR AKHIR | 69.10 | 67.39
|
| 68 |
+
====================================================
|
| 69 |
+
|
| 70 |
Pemenang: TIM AFIRMASI (PRO) (Margin: 1.71)
|
| 71 |
|
| 72 |
+
----------------------------------------------------
|
| 73 |
ULASAN ANALITIS DEWAN JURI (DECIDA-SMALL FEEDBACK):
|
| 74 |
+
----------------------------------------------------
|
| 75 |
+
|
| 76 |
Kemenangan dengan margin kompetitif 1.71 poin berhasil direngkuh oleh TIM AFIRMASI (PRO).
|
| 77 |
|
| 78 |
Penguasaan materi mendasar terbukti lewat susunan argumen yang utuh seperti terlihat saat menegaskan bahwa "Berdasarkan laporan Kementerian Lingkungan Hidup, lebih dari 65% polusi partikulat PM2.5 bersumber...", membangun alur berpikir yang meyakinkan.
|
|
|
|
| 80 |
Memasuki babak pembelaan dan penegasan posisi, alur penalaran tim mengalir secara organik (skor 89.00), di mana pembicara lanjutan bertindak sebagai akselerator kasus yang efektif.
|
| 81 |
|
| 82 |
Keunggulan paling menentukan hadir pada ketelitian berpikir tim, membentengi setiap kesimpulan dengan premis pendukung yang sah. Keberhasilan tim dalam menjaga beban pembuktian secara konsisten menjadi alasan fundamental di balik hasil ini.
|
|
|
|
| 83 |
|
| 84 |
+
====================================================
|
| 85 |
```
|
| 86 |
|
| 87 |
---
|
| 88 |
|
| 89 |
+
## Repository Structure
|
| 90 |
|
| 91 |
```text
|
| 92 |
decida-small/
|
| 93 |
+
β
|
| 94 |
βββ pillar/
|
| 95 |
β βββ __init__.py
|
| 96 |
+
β βββ nli_client.py # Local PyTorch batch NLI Cross-Encoder wrapper
|
| 97 |
+
β βββ verbalizer.py # Combinatorial grounded feedback generator (~0.001s)
|
| 98 |
+
β βββ pillar1.py # P1: Semantic density & motion relevance
|
| 99 |
+
β βββ pillar2.py # P2: Logical integrity (IndoBERT fallacy detection)
|
| 100 |
+
β βββ pillar3.py # P3: Rebuttal validity & direct clash
|
| 101 |
+
β βββ pillar4.py # P4: A-R-E-L structure analysis
|
| 102 |
+
β βββ pillar5.py # P5: Impact weighing & clash balance
|
| 103 |
+
β βββ pillar6.py # P6: Discourse trajectory & flow
|
| 104 |
+
β βββ pillar7.py # P7: Lexical density, register, & diversity
|
| 105 |
+
β βββ pillar8.py # P8: Multi-turn internal team consistency
|
| 106 |
+
β βββ pillar9.py # P9: Premise defense & comparative delta
|
| 107 |
+
β βββ pillar10.py # P10: Strategic premise exploitation & density
|
| 108 |
+
β
|
| 109 |
+
βββ model_indobert_fallacy/ # Fine-tuned weights (or pull via Hugging Face Hub)
|
| 110 |
+
βββ model_minilm/ # Local sentence-transformer cache
|
| 111 |
+
β
|
| 112 |
βββ .gitignoxre
|
| 113 |
βββ LICENSE
|
| 114 |
βββ README.md
|
| 115 |
βββ requirements.txt
|
| 116 |
+
βββ run_judger.py # CLI driver script with batch execution benchmark
|
|
|
|
| 117 |
```
|
| 118 |
|
| 119 |
---
|
| 120 |
|
| 121 |
+
## Installation & Setup
|
| 122 |
|
| 123 |
### 1. Prerequisites
|
| 124 |
|
| 125 |
+
- Python 3.10 or higher
|
| 126 |
+
- NVIDIA CUDA-compatible GPU (recommended for sub-5s performance) or modern multi-core CPU
|
| 127 |
|
| 128 |
### 2. Clone and Environment Setup
|
| 129 |
|
| 130 |
```bash
|
| 131 |
+
git clone https://github.com/USERNAME/decida-small.git
|
| 132 |
cd decida-small
|
| 133 |
|
| 134 |
python -m venv venv
|
| 135 |
|
| 136 |
+
# Windows (PowerShell)
|
| 137 |
.\venv\Scripts\Activate.ps1
|
| 138 |
+
|
| 139 |
+
# Linux / macOS
|
| 140 |
source venv/bin/activate
|
| 141 |
|
| 142 |
pip install --upgrade pip
|
| 143 |
pip install -r requirements.txt
|
|
|
|
| 144 |
```
|
| 145 |
|
| 146 |
### 3. Weights Configuration
|
|
|
|
| 149 |
|
| 150 |
```python
|
| 151 |
# pillar/pillar2.py
|
|
|
|
| 152 |
|
| 153 |
+
MODEL_PATH = "USERNAME_HF/decida-indobert-fallacy"
|
| 154 |
```
|
| 155 |
|
| 156 |
---
|
| 157 |
|
| 158 |
+
## Usage
|
| 159 |
|
| 160 |
Run the standard evaluation interface:
|
| 161 |
|
| 162 |
```bash
|
| 163 |
python run_judger.py
|
|
|
|
| 164 |
```
|
| 165 |
|
| 166 |
+
- **Mode 1 (Template):** Automatically loads the built-in EV fleet transition motion along with 3 Affirmative and 3 Opposition speeches for immediate profiling.
|
| 167 |
+
- **Mode 2 (Live):** Prompts for interactive speech-by-speech input with live multi-line terminal entry (`--end` to conclude debate turns).
|
| 168 |
|
| 169 |
---
|
| 170 |
|
| 171 |
+
## Verbalizer Architecture
|
| 172 |
|
| 173 |
Unlike LLM prompt generators that can hallucinate or produce demoralizing critiques, `pillar/verbalizer.py`:
|
| 174 |
|
| 175 |
1. Computes the maximum comparative margin across all 10 pillars.
|
| 176 |
2. Extracts verbatim evidentiary phrases directly from the winning team's text.
|
| 177 |
3. Assembles a 4-paragraph formal critique using a slot-filling combination engine with over 250 verified positive rhetorical options.
|
| 178 |
+
4. Completes execution in **less than 0.002 seconds**.
|
| 179 |
|
| 180 |
---
|
| 181 |
|
| 182 |
+
## Citation & License
|
| 183 |
|
| 184 |
+
This project is open-sourced under the [MIT License](LICENSE).
|
| 185 |
|
| 186 |
```bibtex
|
| 187 |
@software{decida_small_2026,
|
| 188 |
+
author = {Christopher Alberto Hamonangan},
|
| 189 |
+
title = {Decida-small: 10-Pillar Automated Debate Adjudication Engine for Indonesian Debate},
|
| 190 |
+
year = {2026},
|
| 191 |
+
publisher = {Huggingface},
|
| 192 |
+
journal = {Huggingface Organization},
|
| 193 |
+
howpublished = {\url{https://huggingface.co/BhinnekaAI/Decida-small}
|
| 194 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 195 |
```
|