ทำไมชื่อตัวละครถึงเพี้ยน — และ msg แก้ยังไง
ปัญหาเดียวที่ทำให้คนเลิกอ่านนิยายแปล AI — พร้อมตัวอย่างจริงจาก Beware of Chicken และวิธีที่ msg ล็อกชื่อได้ตลอดทั้งเรื่อง
ปัญหา: ชื่อตัวเอกเพี้ยนระหว่างทาง
เมื่อ AI แปลนิยายยาว ๆ (50+ ตอน) ชื่อตัวละครมักเริ่มเพี้ยนตั้งแต่ตอนที่ 5-10 เพราะโมเดลไม่มี "หน่วยความจำ" ว่าตอนที่แล้วแปลชื่อนี้ว่าอะไร — มันแปลใหม่ทุกตอนโดยดูจาก context ของตอนนั้น ๆ
ตัวอย่างจริง: "Lu Ri" ใน Beware of Chicken
ต้นฉบับภาษาอังกฤษมีตัวเอกชื่อ "Lu Ri" — แค่ชื่อเดียว Google Translate แปลได้ 4 แบบ ในตอนเดียว:
- "Lu Ri" (ค้างอังกฤษ)
- "ลู่รี"
- "ลูรี"
- "ลูริ"
- "หลู่ รื่อ"
ในขณะที่ msg แปลเป็น "หลู่ รื่อ" คงที่ทั้ง 6 ครั้งที่ปรากฏในตอน — เพราะคลังคำล็อกไว้ตั้งแต่ต้น
ตัวอย่างอื่น ๆ ที่พบในการทดสอบเดียวกัน
- "Jin Rou" → Google: "Jin Rou" / "ค้างอังกฤษ" / "โลกจินโหรว" (ผิดความหมาย) · msg: "จิน โร่ว" คงที่ 9 ครั้ง
- "Cloudy Sword Sect" → Google: "สำนัก Cloudy Sword" (อังกฤษค้าง) · msg: "สำนักดาบเมฆา"
- "sect" → Google: ปน "นิกาย" / "สำนัก" (9 vs 1 ครั้ง) · msg: "สำนัก" คงที่
ทำไม AI ถึงเพี้ยน
มี 3 สาเหตุหลัก:
- ไม่มีความจำระหว่างตอน — โมเดลแปลแต่ละตอนแยกกัน ไม่รู้ว่าตอนที่แล้วแปลชื่อนี้ว่าอะไร ตัดสินใจใหม่ทุกครั้ง
- คำอังกฤษหลายเสียงหลายความหมาย — "Lu" อาจเป็นชื่อ หรือคำอื่น (เช่น "ลู่" ในจีน) "Ri" อาจเป็น verb หรือนาม โมเดลเดาตาม local context ไม่ใช่ตาม "ชื่อตัวเอก"
- โทเค็นภาษาจีน/ญี่ปุ่น — ชื่อในนิยายจีน/ญี่ปุ่นที่ทับศัพท์ด้วยอักษรโรมัน (Pinyin/Romaji) มักถูกตีความเป็นคำอังกฤษ ไม่ใช่ชื่อ
msg แก้ยังไง: คลังคำ
เมื่อคุณนำเข้าเรื่องใหม่ ระบบจะแนะนำชื่อที่พบบ่อยในตอนแรก (เรียงตามความถี่ top-40) คุณตรวจแล้ว "ยืนยัน" ว่าแต่ละชื่อแปลว่าอะไร — แค่นี้:
- Lu Ri → หลู่ รื่อ
- Jin Rou → จิน โร่ว
- Cloudy Sword Sect → สำนักดาบเมฆา
ทุกครั้งที่ AI แปลตอนถัดไป ระบบจะ inject คลังคำเข้า system prompt ทันที — บอก AI ว่า "ชื่อเหล่านี้แปลว่าอย่างนี้เสมอ ห้ามเปลี่ยน" ผลคือชื่อคงที่ทั้งเรื่อง แม้แต่ข้าม 60-100+ ตอน
ทำไม DeepL / Google Translate ทำไม่ได้
DeepL Pro มี glossary ได้ — แต่จำกัดจำนวนคำ และต้องส่งเป็นไฟล์ทีละ lot ไม่ได้ persistent per-chapter context Google Translate ไม่มี glossary API สำหรับผู้ใช้ทั่วไป
msg เก็บคลังคำใน database ต่อเรื่อง (RLS owner-scoped) — ทุกตอนที่แปลจะ load glossary ของเรื่องนั้นมา inject ให้อัตโนมัติ ไม่ต้องส่งซ้ำ
แก้ชื่อในคลังคำทีหลังได้ไหม
ได้ — ถ้าคุณเห็นว่า msg แปลชื่อผิด ก็แก้ในคลังคำ แล้วเลือก "อัปเดตตอนที่มีคำนี้" — ระบบจะ re-enqueue เฉพาะตอนที่คำนั้นปรากฏ (เก็บค่าแก้แยกจากค่าแปล เพื่อไม่ให้โดนเรียกเก็บซ้ำ)