MVP Novel Translator: Penerjemah yang Paham Fandom
Kasus yang bikin saya sadar GPT mentah nggak cukup:
Ada novel fanfiksi, ditulis orang China, fandom-nya dari grup K-pop Korea. Penulis pakai transliterasi Mandarin untuk nama karakter asli Korea. Kalau saya lempar mentah ke GPT untuk translate ke Bahasa Indonesia, hasilnya:
- Nama karakter: sebagian diterjemahkan literal, sebagian hilang konteks.
- Istilah fandom (nama album, lagu, era): diterjemahkan sebagai kata biasa.
- Nuansa budaya Korea yang sudah di-absorp ke narasi China: ter-rusak lagi.
Saya butuh sistem terjemahan yang tahu konteks fandom. Bukan sekadar translator.
Lahirlah MVP Novel Translator.
Arsitektur
Sistem ini bukan aplikasi monolithic. Saya pilih n8n sebagai workflow engine + PostgreSQL sebagai database + frontend Express untuk upload & review.
Flow Utama
- Upload: User upload novel (biasanya
.txtatau chunk paragraf) via frontend Express. - Preprocessing: Workflow n8n clean text, deteksi bahasa sumber, split jadi chunks yang manageable untuk LLM.
- Fandom detection: Pattern matching untuk deteksi fandom dari istilah/nama yang muncul. Kalau novel sebut "뷔" atau "BTS" atau "HYBE" — fandom K-pop BTS.
- Glossary lookup: Query PostgreSQL untuk glossary entity per fandom. Tiap entity punya:
original_term,translated_term,context_notes,confidence_score. - Translation call: Panggil GPT-4.1 via OpenRouter dengan:
- System prompt yang include glossary relevan
- User prompt: chunk text + "pertahankan translasi sesuai glossary"
- Entity extraction: Deteksi entity baru yang nggak ada di glossary. Score confidence-nya.
- Save + route:
- Confidence tinggi → auto-approve, masuk glossary.
- Confidence rendah → masuk review manual.
- Review flow: Workflow
review.jsonterima webhook approve/edit/reject, update glossary.
Kenapa n8n, Bukan Kode Node.js Biasa?
Pertanyaan valid. Saya pilih n8n karena:
- Visual debugging. Saat entity resolution salah, saya bisa trace step by step di UI — lebih cepat daripada log-based debugging.
- Iterasi cepat. Tweak prompt GPT atau logic branching tanpa redeploy.
- Composable workflow.
mvp_translation_v4.json(main),review.json(approval),bulk.json(batch) — semua stand-alone tapi connected via webhook.
Trade-off: n8n self-hosted = satu more thing to maintain. Tapi untuk proyek eksplorasi seperti ini, worth it.
Entity Resolution + Confidence Scoring
Bagian yang paling saya suka secara teknis.
Saat GPT-4 extract entity dari translation hasil, setiap entity dapat skor confidence berdasarkan:
- Konsistensi: Sama term di chunk berbeda → skor naik.
- Context match: Ada di kalimat yang sesuai dengan pattern fandom → skor naik.
- Format: Title case, kapital, formatting khas nama → skor naik.
Threshold yang saya set:
>= 0.8→ auto-approve (masuk glossary langsung)0.5 - 0.8→ masuk review manual< 0.5→ dibuang (kemungkinan noise)
Versioning v1 → v4
Saya iterate workflow ini 4 kali:
- v1: Sekadar translate per chunk. Tidak ada glossary.
- v2: Tambah glossary manual (di
translator backendfolder lama, sekarang deprecated). - v3: Tambah entity extraction tapi belum ada confidence scoring.
- v4: Full system dengan confidence + review flow.
Tiap versi saya simpan untuk dokumentasi iterasi. Di portofolio, yang saya tampilkan adalah v4.
Frontend
Frontend saya bikin dengan Express + multer (upload) + pg (langsung ke PostgreSQL). Tujuannya minimal: upload novel, trigger workflow n8n via webhook, tampilkan hasil + UI review untuk entity baru.
Bukan pretty UI — tapi berfungsi. Prioritas saya adalah nge-validasi konsep translasi yang bener. UI bisa di-polish nanti.
Pelajaran
- Translation is about context, not language. LLM generik gagal di niche domain. Glossary + context = game changer.
- n8n underrated untuk workflow eksperimental. Visual debugging doang sudah worth it.
- Confidence scoring bikin sistem jadi honest. Kalau sistem nggak yakin, dia minta review manusia — bukan pura-pura yakin.
- Iterasi cepat > versi sempurna. v1 saya jelek. v4 decent. Tanpa v1, nggak ada v4.
Stack: n8n + OpenRouter GPT-4.1 + PostgreSQL + LangChain + Express + pg + multer.
Kalau Anda kerja di domain translation khusus (legal, medical, manga, dsb), saya rasa pola context-aware ini applicable. DM saya kalau mau compare notes.