warin.me

ONLINE NAIVE BAYES · THAI FICTION · FEATURE STORE

นิยายทุกตอน
มีลายพันธุกรรม

อ่านนิยายไปพร้อมกับสำรวจว่าอารมณ์ของเรื่องเคลื่อนจากลึกลับไปสู่ดราม่า หรือจากแฟนตาซีไปสู่แอ็กชันอย่างไร โมเดลเรียนรู้จากตอนที่ผู้เขียนยืนยัน—และลืมได้เมื่อข้อมูลถูกถอนออก

Fiction Gene เริ่มจากคำถามง่าย ๆ ว่า “นิยายหนึ่งเรื่องจำเป็นต้องมี genre เดียวจริงหรือ” แต่ละบทอาจเปลี่ยนจังหวะ อารมณ์ และภาษาตามตัวละครหรือเหตุการณ์ ระบบจึงไม่ได้หยุดที่ป้ายประเภทบนหน้าปก แต่เปลี่ยนทุกตอนให้เป็นชุดสัญญาณที่อ่านได้ทั้งภาพรวมและตามลำดับเวลา ผู้อ่านใช้ค้นหาเรื่องที่ตรงกับรสนิยม นักเขียนใช้ทบทวนจังหวะของงาน และนักศึกษาใช้เห็นการทำงานของ NLP, probability, database และ web visualization ในระบบเดียวกัน

สายเรื่องหกสีไหลออกจากหนังสือนิยายและถักทอเป็นเกลียวดีเอ็นเอ
จีโนมของเรื่อง6 สัญญาณ Gene / Genre

Genre คือประเภทที่ใช้เรียกเรื่อง ส่วน Gene คือสัญญาณที่เราอ่านและติดตามผ่านทุกตอน

รุ่นของโมเดล2,024ทุกการเรียนรู้ตรวจสอบย้อนหลังได้
คลังคำคุณลักษณะ35,114คำที่เก็บเป็นความถี่ระดับเอกสาร
เวลาจำแนก< 1 วินาทีอ่านคุณลักษณะที่เตรียมไว้ ไม่ฝึกใหม่ทั้งชุด
พฤติกรรมของโมเดลสั่งงานชัดเจนการทำนายไม่เท่ากับการเรียนรู้

SYSTEM STATUS · TRANSPARENT BY DESIGN

รู้เสมอว่ากำลังใช้โมเดลไหน และข้อมูลถูกเก็บที่ใด

หน้าสาธิตนี้แยก การวิเคราะห์ในเบราว์เซอร์ ออกจาก โมเดล Online Naive Bayes เชิงวิจัย อย่างชัดเจน เพื่อไม่ให้ผลทดลองถูกตีความว่าเป็นการแก้โมเดลกลางบนเซิร์ฟเวอร์

ENGINE
Browser genre-signal baselineประมวลผลคำสำคัญในเครื่องของผู้ใช้ ใช้สำหรับสาธิต UI และแนวคิด
STORAGE
Local browser storageLearn/Unlearn ในหน้านี้มีผลเฉพาะเบราว์เซอร์นี้ ไม่เปลี่ยนโมเดลกลาง
LEARNING SCOPE
Device-local demonstrationงาน production ต้องส่ง revisioned events ไปยัง API และฐานข้อมูลแบบ transactional

ORIGINAL READING COLLECTION

ชุดนิยายสำหรับอ่านและทดลอง Genre DNA

นิยายสั้นต้นฉบับสำหรับห้องทดลองนี้โดยเฉพาะ ครบหกแนว แต่ละเรื่องมีสามตอน จึงเปิดอ่าน วิเคราะห์ และใช้สอน temporal genre progression ได้โดยไม่พึ่งเนื้อหาภายนอก

CATALOG EXAMPLES

ตัวอย่างรายการนิยาย

ตัวอย่างขนาดเล็กสำหรับแสดงชื่อและหมวดหมู่ ไม่ใช่ชุดข้อมูลรายตอน

MODEL OBSERVATORY

สถานะที่ต้องรู้ก่อนเชื่อผลทำนาย

ค่าที่ไม่มี benchmark รองรับจะแสดงเป็น “ยังไม่วัด” แทนการเติมตัวเลขเพื่อความสวยงาม

ACTIVE ENGINEBrowser baselinekeyword evidence · 6 genre signals
STORAGE SCOPEอุปกรณ์นี้เท่านั้นlocalStorage · ไม่ sync ข้ามเครื่อง
MODEL REVISIONUI baseline 2026.08ไม่ใช่ server model revision
PREDICTION LATENCYยังไม่วัดควรรายงาน median / p95 / p99
MACRO-F1ยังไม่วัดบนหน้านี้V2 paper result แสดงแยกในส่วนงานวิจัย
CALIBRATIONไม่ใช่ probabilityกราฟใช้ normalized relative signal

EXPLAIN PREDICTION

เปิดดูหลักฐาน ไม่ใช่รับเพียงป้ายคำตอบ

ผลวิเคราะห์หนึ่งครั้งควรตอบได้ทั้ง “ทายว่าอะไร” และ “เพราะคำใด”

01

Feature contribution

แสดงคำหรือวลีที่เพิ่มคะแนนให้แต่ละ genre พร้อมน้ำหนักและจำนวนครั้ง เพื่อให้ผู้ใช้ตรวจสอบว่าระบบกำลังจับเนื้อหา ไม่ใช่ชื่อเรื่องหรือคำรั่วจากข้อมูลฝึก

02

Relative genre score

คะแนนในหน้าเว็บเป็นสัญญาณสัมพัทธ์ที่ normalize ให้รวมเป็น 100% เพื่อเปรียบเทียบภายในข้อความเดียวกัน ไม่ใช่ percentile และยังไม่ใช่ calibrated probability

03

Prior & unknown words

งาน production ควรแสดง class prior, อัตราคำที่ไม่อยู่ในพจนานุกรม และ revision ของ tokenizer เพราะสามค่านี้ทำให้คำตอบเปลี่ยนได้แม้ข้อความเหมือนเดิม

GENRE LABORATORY

ให้โมเดลอ่านหนึ่งย่อหน้า

ข้อความถูกตัดคำและลดให้เหลือ feature ที่มีความหมาย จากนั้น Online Naive Bayes เปรียบเทียบหลักฐานของคำกับหกประเภท พร้อม smoothing เพื่อไม่ให้คำที่ไม่เคยพบทำให้ความน่าจะเป็นเป็นศูนย์ การทำนายเป็น read-only และการเรียนรู้จะเกิดขึ้นเมื่อมนุษย์ยืนยัน label เท่านั้น

01
Predict is read-only

การกดวิเคราะห์ไม่เปลี่ยนโมเดล

02
Human-confirmed learning

เรียนรู้เมื่อผู้ดูแลยืนยันประเภทเท่านั้น

03
Reversible events

ทุกการเรียนรู้มี event สำหรับ unlearn

0 ตัวอักษร

TECHNICAL FOUNDATION

จากข้อความไทยสู่ Genre DNA

ออกแบบให้ทุกขั้นตรวจสอบได้ ตั้งแต่การตัดคำจนถึงการอัปเดตสถิติแบบออนไลน์

01

Tokenize & normalize

ทำความสะอาดข้อความ ตัดคำภาษาไทย ตัด stop words และนับคำแบบ document frequency: คำหนึ่งคำมีสิทธิ์เป็นหลักฐานหนึ่งครั้งต่อหนึ่งตอน จึงไม่ปล่อยให้คำที่ซ้ำมากผิดปกติครอบงำผลลัพธ์

02

Feature database

แต่ละ feature เก็บจำนวนตอนที่พบคำนั้น แยกตาม Horror, Mystery, Fantasy, Science Fiction, Action และ Drama พร้อมจำนวนตอนของแต่ละประเภทสำหรับคำนวณ prior และ likelihood

03

Online Naive Bayes

คำนวณคะแนนใน log space เพื่อลดปัญหาเลขเล็กเกินไป ใช้ smoothing รองรับคำที่พบไม่บ่อย และจัดอันดับครบทั้งหกประเภทแทนการตอบเพียง label เดียว

04

Learn, review, unlearn

เมื่อผู้ดูแลยืนยันประเภท ระบบจึงเพิ่มสถิติของตอนนั้น การแก้ label ต้องย้อนผลเดิมก่อนเพิ่มผลใหม่ ทำให้ revision และเหตุการณ์เรียนรู้สามารถตรวจสอบย้อนหลังได้

VERSION 1 · ONLINE PREDICTIONO(u + 6m)

u คือจำนวน token ไม่ซ้ำ และ m คือ feature ที่พบจริง ทำนายจาก sufficient statistics โดยไม่ retrain ทั้ง corpus จึงตอบสนองแบบ interactive เมื่อ feature index อยู่ในหน่วยความจำหรือมี database index

VERSION 2 · SPARSE BATCH MODEL≤ 5,000 features

TF-IDF matrix เป็น sparse และ Naive Bayes ใช้การคูณเมทริกซ์แบบ vectorized ค่าใช้จ่ายจึงขึ้นกับ non-zero features มากกว่าขนาด vocabulary ทั้งหมด เหมาะกับการ train/test ซ้ำอย่างเป็นระบบ

WHY IT FEELS FASTNo neural inference

ไม่มี attention layers, GPU transfer หรือการสร้างข้อความ ผลลัพธ์เกิดจาก tokenization, lookup และการบวก log-probability แต่ latency จริงต้องรายงานจาก benchmark บนเครื่องและข้อมูลชุดเดียวกัน

VERSION 1 · ONLINE MODEL

เรียนรู้ทีละตอนและย้อนกลับได้

Version 1 วางฐานระบบเป็น Online Naive Bayes โดยเก็บจำนวนเอกสารที่พบแต่ละคำแยกตามประเภท การเพิ่มนิยายคือการส่งเหตุการณ์ Learn เข้า feature store ส่วนการลบต้องส่ง Unlearn ด้วย token ชุดเดิม จึงไม่จำเป็นต้องฝึกใหม่ทั้ง corpus ทุกครั้ง จุดเด่นคือความโปร่งใสและต้นทุนการอัปเดตที่ขึ้นกับจำนวนคำเฉพาะในตอน ไม่ใช่ขนาดข้อมูลทั้งหมด

VERSION 2 · FROM POC TO EVIDENCE

พิสูจน์แนวคิดด้วย benchmark และภาพเล่าเรื่อง

V1 แสดงว่าระบบจำแนกและเรียนรู้แบบออนไลน์ทำได้ ส่วน V2 ทดสอบว่าสัญญาณ genre มีประโยชน์จริงหรือไม่ โดยขยายสู่ 120 เรื่อง 3,134 ตอน แยก train 2,193 และ test 941 ตอน จำกัด TF-IDF 5,000 features ใช้ Multinomial Naive Bayes (alpha = 1) และรายงาน accuracy 91% พร้อม precision, recall, F1 และ confusion matrix จากนั้นเปลี่ยน probability ให้เป็น pie chart และ temporal line chartที่ผู้ใช้ตีความได้

CURRENT LAB · AUDITABLE HYBRID

นำความแข็งแรงของสองรุ่นมารวมกัน

ห้องทดลองปัจจุบันรักษาการอัปเดตแบบ event-driven ของ Version 1 และนำ preprocessing, evaluation protocol และ visualization ของ Version 2 มาใช้ร่วมกัน เป้าหมายไม่ใช่เพียงทาย label แต่ทำให้ผู้ใช้เห็นหลักฐาน เห็นความไม่แน่นอน และย้อนผลของข้อมูลที่ถูกถอนออกได้

1. หน่วยข้อมูลและการกำหนด Label

หนึ่งตอนคือหนึ่ง document ส่วนหนึ่งเรื่องคือ sequence ของ documents การ train ด้วย label ระดับเรื่องช่วยสร้างข้อมูลได้รวดเร็ว แต่ต้องยอมรับว่าแต่ละตอนอาจเปลี่ยนอารมณ์ไปอีก genre หนึ่ง ดังนั้น label คือ supervision สำหรับการเรียนรู้ ไม่ใช่ข้อเท็จจริงสมบูรณ์ของทุกย่อหน้า กราฟรายตอนควรถูกอ่านเป็น model evidence ไม่ใช่ใบรับรองวรรณกรรม

ก่อนเพิ่มเรื่องใหม่ ควรเก็บ source, author permission, primary genre, optional secondary genres, chapter order และ content hash การมี content hash ช่วยตรวจข้อมูลซ้ำและทำให้ Unlearn อ้างถึงเอกสารฉบับเดียวกับที่เคย Learn ได้จริง

2. Thai NLP Pipeline

ภาษาไทยไม่มีช่องว่างแบ่งคำเสมอไป จึงต้อง normalize สระและวรรณยุกต์ก่อนใช้ tokenizer แบบ maximum matching เช่น newmm คำเฉพาะจากนิยาย เช่น ชื่อเวทมนตร์ เทคโนโลยี หรือคำทับศัพท์ ควรถูกเพิ่มใน custom dictionary อย่างมี version ไม่เช่นนั้นคำเดียวกันอาจแตกเป็นคนละ token ระหว่างการ Learn และ Unlearn

หลัง tokenization ระบบตัด stop words และ proper nouns ที่ไม่ช่วยจำแนกประเภท Version 2 ทดลอง lemmatization เพื่อลดรูปคำ ส่วน Version 1 นับ presence ต่อ document การใช้ binary document frequency ลดอิทธิพลของคำที่ผู้เขียนจงใจซ้ำและทำให้การอัปเดตออนไลน์ง่ายต่อการย้อนกลับ

3. TF-IDF กับ Online Document Frequency ต่างกันอย่างไร

TF-IDF ให้น้ำหนักสูงกับคำที่พบบ่อยในเอกสารหนึ่งแต่พบไม่บ่อยใน corpus เหมาะกับ batch experiment และโมเดล scikit-learn ขณะที่ online document frequency เก็บเพียงจำนวนตอนที่มีคำนั้นในแต่ละ genre จึงเพิ่มหรือลดสถิติได้โดยตรง Version 2 เด่นด้าน benchmark ที่ทำซ้ำได้ ส่วน Version 1 เด่นด้านการเรียนรู้ต่อเนื่องและการตรวจสอบเหตุการณ์

ทั้งสองวิธีควรใช้ log probability เพื่อหลีกเลี่ยง underflow เมื่อคูณ likelihood ของคำจำนวนมาก และต้องใช้ smoothing เพื่อให้คำที่ยังไม่เคยปรากฏใน genre ใดไม่ทำให้ความน่าจะเป็นทั้งประเภทกลายเป็นศูนย์

4. จากคะแนนสู่ภาพ Genre DNA

Donut chart รวม evidence ของทุกตอนแล้ว normalize เป็นสัดส่วน จึงเหมาะสำหรับตอบว่าเรื่องนี้มีองค์ประกอบใดมากน้อยเพียงใด Line chart รักษาลำดับเวลาและตอบว่าอารมณ์ของเรื่องเคลื่อนที่อย่างไร ทั้งสองภาพตอบคนละคำถามและไม่ควรถูกแทนกัน

ค่าบนกราฟต้องมาจาก probability หรือ score scale เดียวกันทุกตอน หากโมเดลแต่ละ revision ใช้ vocabulary ต่างกัน ควรแสดง revision กำกับ มิฉะนั้นการเปลี่ยนของเส้นอาจเกิดจากโมเดลเปลี่ยน ไม่ใช่เนื้อเรื่องเปลี่ยน

5. การประเมินที่มากกว่า Accuracy

Accuracy 91% ของ Version 2 มาจาก test set 941 ตอน แต่ genre บางคู่มีคำร่วมกันสูง จึงต้องอ่าน precision, recall, F1 และ confusion matrix ราย class ด้วย Fantasy และ Action แยกได้ดีเพราะมี vocabulary เฉพาะกว่า ขณะที่ Drama และ Romance ทับซ้อนกันมากกว่า

สำหรับข้อมูลใหม่ควร split ตามเรื่อง ไม่ใช่สุ่มตอนจากเรื่องเดียวกันไปอยู่ทั้ง train และ test เพราะสำนวน ชื่อตัวละคร และสถานที่อาจรั่วไหล ทำให้คะแนนสูงกว่าการใช้งานจริง การรายงาน macro-F1 และ calibration ช่วยวัดทั้งความยุติธรรมระหว่าง class และความน่าเชื่อถือของ probability

6. Learn และ Unlearn เป็นธุรกรรมเดียวกัน

Learn ต้องบันทึก document id, content hash, tokenizer revision, label, unique tokens และ model revision ใน transaction เดียว หากส่วนใดล้มเหลวต้อง rollback ทั้งหมด Unlearn อ่าน event เดิมแล้วลบจำนวนที่เคยเพิ่มแบบสมมาตร ไม่ใช่ tokenize ข้อความใหม่ด้วย pipeline รุ่นล่าสุด เพราะอาจได้ token คนละชุด

การเปลี่ยน label ทำเป็น Unlearn(label เดิม) แล้ว Learn(label ใหม่) พร้อมเชื่อมสองเหตุการณ์ด้วย review id วิธีนี้ทำให้ audit trail อธิบายได้ว่าใครเปลี่ยนอะไร เมื่อใด และโมเดล revision ใดได้รับผล

7. ข้อจำกัดและจริยธรรมของข้อมูล

การนำงานเขียนมา train ต้องมีสิทธิ์ใช้งานตามวัตถุประสงค์ที่ชัดเจน แยกสิทธิ์สำหรับการวิจัย การเผยแพร่ตัวอย่าง และการให้บริการเชิงพาณิชย์ ระบบควรเก็บ provenance แต่ไม่จำเป็นต้องเผยแพร่ข้อความต้นฉบับต่อผู้ใช้ทั่วไป

Genre เป็นการตีความ ไม่ใช่คุณสมบัติทางกายภาพ ผู้เขียนอาจตั้งใจผสมหลายแนวและ label จากแพลตฟอร์มอาจสะท้อนการตลาดมากกว่าเนื้อหา การให้ผู้ใช้เห็นอันดับรองและ temporal progression จึงซื่อสัตย์กว่าการแสดงคำตอบเดียวโดยไม่มีความไม่แน่นอน

8. เส้นทางทดลองรุ่นถัดไป

สร้าง benchmark แบบ story-grouped cross-validation เปรียบเทียบ Online Naive Bayes, TF-IDF Multinomial NB และ Complement NB บน preprocessing เดียวกัน พร้อมวัด latency, memory, macro-F1, calibration error และเวลาของ Learn/Unlearn จากนั้นจึงพิจารณา Transformer เป็น teacher หรือ baseline โดยไม่ทำให้ระบบหลักสูญเสียความอธิบายได้

เมื่อมีนิยายใหม่ ระบบควรรัน data validation, duplicate detection, train/test isolation และ shadow evaluation ก่อน promote revision ถัดไป หน้าเว็บสามารถเปรียบเทียบ prediction ของ revision ปัจจุบันกับ candidate revision โดยไม่กระทบผู้ใช้จริง

EXPERIMENT NOTEBOOK · FICTION GENE V1 → V2

จากต้นแบบ Online Learning
สู่การทดลองที่วัดผลได้

บทความนี้แยกข้อมูลที่รายงานจาก Version 2 ออกจากข้อเสนอทดลองใหม่ เพื่อให้ผู้อ่านตรวจสอบได้ว่าอะไรคือผลเดิม อะไรคือการตีความ และอะไรยังต้องพิสูจน์

THE CENTRAL QUESTION

เราจำแนก “ประเภทของเรื่อง” หรือกำลังจำ “ลายมือของเรื่องเดิม”?

นิยายหนึ่งเรื่องประกอบด้วยหลายตอนซึ่งใช้ชื่อตัวละคร สถานที่ และสำนวนร่วมกัน หากสุ่มตอนจากเรื่องเดียวกันไปอยู่ทั้ง train และ test โมเดลอาจได้คะแนนสูงเพราะจำเอกลักษณ์ของเรื่อง ไม่ใช่เพราะเข้าใจสัญญาณ genre การทดลองที่ดีจึงต้องแยกข้อมูลระดับเรื่อง รายงาน class imbalance และวัดทั้งคุณภาพคำตอบกับต้นทุนของระบบออนไลน์

DOCUMENTS3,134ตอนนิยายทั้งหมดที่รายงานใน V2
STORIES120เรื่อง ครอบคลุมหกประเภท
TRAIN / TEST2,193 / 941ตอนใน experimental split
FEATURE LIMIT5,000TF-IDF vocabulary ceiling
MODELα = 1Multinomial Naive Bayes smoothing
REPORTED ACCURACY91%ต้องอ่านร่วมกับ per-class metrics
01

คำถามและสมมติฐาน

H1: คำและวลีในภาษาไทยมีสัญญาณเพียงพอให้ sparse probabilistic model แยก Horror, Mystery, Fantasy, Science Fiction, Action และ Drama ได้ดีกว่า majority baseline

H2: temporal probability รายตอนอธิบายการเปลี่ยนโทนภายในเรื่องได้มากกว่า label เดียวระดับเรื่อง

H3: sufficient statistics ทำให้ Learn/Unlearn เร็วกว่าการ train corpus ใหม่ โดยรักษาคำตอบใกล้เคียง batch model เมื่อ preprocessing และ feature space เหมือนกัน

02

หน่วยทดลองและ Leakage

หน่วยที่ classifier รับคือ “ตอน” แต่หน่วยที่ต้องใช้แบ่ง train/test ควรเป็น “เรื่อง” เพราะตอนต่าง ๆ ในเรื่องเดียวกันไม่เป็นอิสระ การ split ระดับเรื่องทำให้ชื่อเฉพาะและสำนวนของผู้เขียนไม่ข้าม partition

ควรคำนวณ content hash เพื่อลบตอนซ้ำ ตรวจ near-duplicate ด้วย character n-gram similarity และไม่ใช้ชื่อเรื่อง หมวดหมู่จากเว็บ หรือ tag ที่บอกคำตอบตรง ๆ เป็น feature การเก็บ chapter order ทำเพื่อ visualization แต่ไม่ควรให้ลำดับกลายเป็นทางลัดของ classifier

03

Preprocessing ที่ทำซ้ำได้

บันทึก Unicode normalization, tokenizer version, custom dictionary revision, stop-word list และกฎ proper-name masking เป็น configuration เดียว ทุก experiment ต้องใช้ pipeline เดียวกันกับ production มิฉะนั้น offline score ไม่อธิบายระบบหน้าเว็บ

สำหรับนิยาย คำประดิษฐ์และชื่อเฉพาะมีจำนวนมาก การลบทิ้งทั้งหมดอาจทำลายสัญญาณ Fantasy/Science Fiction แต่การเก็บทั้งหมดเสี่ยงจำเรื่องเดิม จึงควรทำ ablation สามแบบ: เก็บทั้งหมด, mask named entities และเก็บเฉพาะ entity type

04

Representation และ Model

V2 ใช้ TF-IDF จำกัดไม่เกิน 5,000 features แล้วส่งเข้า Multinomial NB ที่ α=1 จุดแข็งคือ sparse matrix คำนวณเร็วและตรวจ feature weight ได้ ส่วน V1 ใช้ document-presence counts ซึ่งอัปเดตแบบบวก/ลบได้โดยตรง

การเปรียบเทียบที่เป็นธรรมควรใช้ tokenization และ partition เดียวกันกับ Online NB, TF-IDF MNB, Complement NB และ linear baseline พร้อมรายงาน model size, training time, prediction latency และเวลาต่อ Learn/Unlearn ไม่เลือกผู้ชนะจาก accuracy อย่างเดียว

05

Metric ที่ต้องอ่านพร้อมกัน

Accuracy ตอบว่าทายถูกกี่ตอนโดยรวม แต่ class ใหญ่อาจครอบงำผล Macro-F1 ให้ทุก genre น้ำหนักเท่ากัน Weighted-F1 สะท้อน distribution จริง และ confusion matrix แสดงว่าคู่ใดสับสนกัน

ระบบที่แสดง probability ควรวัด log loss, Brier score และ Expected Calibration Error ด้วย หากโมเดลบอก 80% จำนวนมากแต่ถูกเพียงครึ่งเดียว กราฟ Genre DNA จะดูมั่นใจเกินหลักฐานแม้ accuracy ยังดูดี

06

อ่านผล 91% อย่างระมัดระวัง

V2 รายงาน accuracy 91% บน test 941 ตอน แสดงว่า sparse lexical signal มีศักยภาพสูงใน corpus นี้ แต่คะแนนดังกล่าวยังต้องอ่านคู่กับวิธี split, class distribution และ per-class recall ไม่ควรขยายความว่าโมเดล “เข้าใจวรรณกรรม”

Genre ที่มีศัพท์เฉพาะ เช่น Fantasy, Science Fiction หรือ Action มักสร้าง boundary ได้ง่ายกว่า genre ที่ใช้ vocabulary ชีวิตประจำวันร่วมกัน การสับสนระหว่าง Drama, Romance-like passages และ Mystery บางช่วงจึงอาจสะท้อนธรรมชาติของนิยายผสม ไม่ใช่ error ของข้อมูลเพียงอย่างเดียว

07

Donut กับ Progression ตอบคนละคำถาม

Donut รวม score ทุกตอนแล้ว normalize จึงสรุป composition ทั้งเรื่อง แต่ซ่อนลำดับเวลา Line chart วาง probability ของแต่ละ genre ตาม chapter order จึงเห็นการเปิดเรื่อง การไต่ระดับ conflict และการเปลี่ยนอารมณ์

เส้นโค้งเป็น interpolation เพื่อช่วยการมอง ไม่ใช่ค่าที่โมเดลคำนวณระหว่างตอน จุดข้อมูลจริงยังอยู่ที่เลขตอนเท่านั้น ใน certificate รุ่นนี้ curve ถูก clip ใน plotting frame และ clamp control points เพื่อไม่สร้างภาพว่าคะแนนเกินช่วง 0–100%

08

การพิสูจน์ Learn/Unlearn

เริ่มจาก snapshot ของ class count และ feature count จากนั้น Learn เอกสารหนึ่งชิ้น บันทึก vector/event แล้ว Unlearn ด้วย vector เดิม เงื่อนไขผ่านคือทุก count กลับเท่า snapshot ภายใน floating-point tolerance และ prediction ชุด regression กลับเหมือนเดิม

Relabel ต้องเท่ากับการลบจาก class เก่าแล้วเพิ่ม class ใหม่ โดยผลรวมเอกสารและผลรวม feature weight ทั้งระบบไม่เปลี่ยน Restore ต้องทำให้ state หลัง Unlearn กลับเท่า state หลัง Learn การทดสอบนี้สำคัญกว่าแค่ดูว่า API ตอบ 200

09

Performance experiment

แยกเวลาของ tokenization, vocabulary lookup, vectorization, database transaction, model update และ certificate rendering รายงาน median, p95 และ p99 หลัง warm-up บนเครื่องเดียวกัน พร้อมจำนวน token/non-zero features ต่อ document

ทดสอบอย่างน้อยสามขนาด: ตอนสั้น, median corpus และตอนยาว วัด cold start แยกจาก steady state และรัน Learn/Unlearn สลับกันเพื่อดู lock contention การกล่าวว่า online เร็วกว่าต้องเทียบกับ batch retrain บนข้อมูลและ hardware เดียวกัน

10

ข้อคุกคามต่อความเที่ยงตรง

Internal validity: duplicate, label leakage, tokenizer drift และ hyperparameter tuning บน test set External validity: corpus มาจาก platform/ช่วงเวลาจำกัด Construct validity: genre label ระดับเรื่องอาจไม่ตรงทุกตอน

Operational validity: localStorage demonstration ไม่เท่ากับ transactional server database และ visualization ที่สวยไม่รับประกัน calibration ทุกผลจึงควรระบุ model revision, dataset revision และสิทธิ์การใช้ข้อมูลกำกับ

NEXT FAIR COMPARISON

การทดลองรุ่นถัดไปที่ควรรัน

ใช้ story-grouped 5-fold cross-validation และล็อก preprocessing เดียวกัน เปรียบเทียบ Online Document-Frequency NB, TF-IDF Multinomial NB, TF-IDF Complement NB และ linear classifier ทุก fold ต้องรายงาน Accuracy, Macro-F1, per-class recall, log loss, ECE, train time, prediction latency, Learn/Unlearn latency และ peak memory

  1. Freeze manifeststory id, content hash, genre, permission, fold และ preprocessing revision
  2. Fit on identical foldsห้ามเปลี่ยน vocabulary หรือ tuning จาก test fold
  3. Bootstrap uncertaintyรายงาน 95% confidence interval ระดับเรื่อง ไม่ใช่ระดับตอนอย่างเดียว
  4. Round-trip testLearn → Unlearn → Restore ต้องคืน state และ regression predictions
  5. Publish model cardบันทึกข้อจำกัด class, domain, language drift และ intended use
ข้อสรุปที่รองรับได้ในตอนนี้

Version 1 พิสูจน์แนวคิดของ probabilistic online learning และ sufficient statistics; Version 2 แสดงว่า TF-IDF + Naive Bayes ให้ผลจำแนกสูงในชุดทดลองที่รายงานและทำให้ Genre DNA มองเห็นเป็นลำดับเวลาได้; ห้องทดลองปัจจุบันรวมการอ่านนิยาย Certificate และ workflow Learn/Unlearn ไว้ในหน้าเดียว ส่วนการอ้างว่า online model เทียบเท่าหรือดีกว่า batch model ทุกด้านยังต้องผ่าน fair comparison ข้างต้น

MODEL DATA OPERATIONS

เพิ่มข้อมูลอย่างรับผิดชอบ และถอนผลได้จริง

ลิงก์ทั้งสองแยก Prediction ออกจากการเปลี่ยนโมเดลอย่างชัดเจน

PROJECT LINEAGE

ผู้ร่วมพัฒนา Fiction Gene

ประวัติผู้ร่วมพัฒนาระบบและงานวิจัยในแต่ละรุ่น

VERSION 1 · ONLINE LEARNING

Student contributors

Chatchaya Innarong
Isara Kerdpra

VERSION 2 · TF-IDF + VISUALIZATION

Student contributors

นายชาญวิทย์ มิ่งขวัญคีรี
นายชิษณุพงศ์ ตรีสุธรรมมาศ
นายวรัชญ์ ประทีปสังคม

RESEARCH TEAM

Academic contributors

Warin Wattanapornprom
Supatcha Lertampaiporn
Wittawin Susutti

STORY + MODEL TIMELINE

เห็นทั้งการเปลี่ยนของเรื่อง และการเปลี่ยนของโมเดล

หน้า production จะอ่านข้อมูลจาก API revision เดียวกัน ทำให้กราฟและคำทำนายตรวจสอบย้อนกลับได้

สัดส่วน GENE / GENRE ของเรื่อง

ภาพรวมก่อนอ่านเส้นเวลา

วงกลมสรุปน้ำหนักของทั้งหกประเภทจากทุกตอน ส่วนกราฟด้านล่างแสดงว่าสัญญาณเหล่านั้นเปลี่ยนไปอย่างไรเมื่อเรื่องดำเนินต่อ

STORY DNA · LEARNING EXAMPLE

รวมนิยายสั้นแนวสยองขวัญ

9 chapters
MODEL EVENTS

การเรียนรู้ล่าสุด

revision 2,024
  1. Learn
    ตอนที่ 8 · ยืนยัน Fantasyเพิ่มหลักฐาน 184 คำ · 2 นาทีที่แล้ว
  2. Review
    Drama → Mysteryผู้ดูแลแก้ label · 18 นาทีที่แล้ว
  3. Unlearn
    ถอนตอนฉบับร่าง #381ย้อน feature event สำเร็จ · 1 ชั่วโมงที่แล้ว