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

Genre คือประเภทที่ใช้เรียกเรื่อง ส่วน Gene คือสัญญาณที่เราอ่านและติดตามผ่านทุกตอน
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 ได้โดยไม่พึ่งเนื้อหาภายนอก
LEARNING READER · CHAPTER GENRE
CATALOG EXAMPLES
ตัวอย่างรายการนิยาย
ตัวอย่างขนาดเล็กสำหรับแสดงชื่อและหมวดหมู่ ไม่ใช่ชุดข้อมูลรายตอน
MODEL OBSERVATORY
สถานะที่ต้องรู้ก่อนเชื่อผลทำนาย
ค่าที่ไม่มี benchmark รองรับจะแสดงเป็น “ยังไม่วัด” แทนการเติมตัวเลขเพื่อความสวยงาม
EXPLAIN PREDICTION
เปิดดูหลักฐาน ไม่ใช่รับเพียงป้ายคำตอบ
ผลวิเคราะห์หนึ่งครั้งควรตอบได้ทั้ง “ทายว่าอะไร” และ “เพราะคำใด”
Feature contribution
แสดงคำหรือวลีที่เพิ่มคะแนนให้แต่ละ genre พร้อมน้ำหนักและจำนวนครั้ง เพื่อให้ผู้ใช้ตรวจสอบว่าระบบกำลังจับเนื้อหา ไม่ใช่ชื่อเรื่องหรือคำรั่วจากข้อมูลฝึก
Relative genre score
คะแนนในหน้าเว็บเป็นสัญญาณสัมพัทธ์ที่ normalize ให้รวมเป็น 100% เพื่อเปรียบเทียบภายในข้อความเดียวกัน ไม่ใช่ percentile และยังไม่ใช่ calibrated probability
Prior & unknown words
งาน production ควรแสดง class prior, อัตราคำที่ไม่อยู่ในพจนานุกรม และ revision ของ tokenizer เพราะสามค่านี้ทำให้คำตอบเปลี่ยนได้แม้ข้อความเหมือนเดิม
GENRE LABORATORY
ให้โมเดลอ่านหนึ่งย่อหน้า
ข้อความถูกตัดคำและลดให้เหลือ feature ที่มีความหมาย จากนั้น Online Naive Bayes เปรียบเทียบหลักฐานของคำกับหกประเภท พร้อม smoothing เพื่อไม่ให้คำที่ไม่เคยพบทำให้ความน่าจะเป็นเป็นศูนย์ การทำนายเป็น read-only และการเรียนรู้จะเกิดขึ้นเมื่อมนุษย์ยืนยัน label เท่านั้น
การกดวิเคราะห์ไม่เปลี่ยนโมเดล
เรียนรู้เมื่อผู้ดูแลยืนยันประเภทเท่านั้น
ทุกการเรียนรู้มี event สำหรับ unlearn
TECHNICAL FOUNDATION
จากข้อความไทยสู่ Genre DNA
ออกแบบให้ทุกขั้นตรวจสอบได้ ตั้งแต่การตัดคำจนถึงการอัปเดตสถิติแบบออนไลน์
Tokenize & normalize
ทำความสะอาดข้อความ ตัดคำภาษาไทย ตัด stop words และนับคำแบบ document frequency: คำหนึ่งคำมีสิทธิ์เป็นหลักฐานหนึ่งครั้งต่อหนึ่งตอน จึงไม่ปล่อยให้คำที่ซ้ำมากผิดปกติครอบงำผลลัพธ์
Feature database
แต่ละ feature เก็บจำนวนตอนที่พบคำนั้น แยกตาม Horror, Mystery, Fantasy, Science Fiction, Action และ Drama พร้อมจำนวนตอนของแต่ละประเภทสำหรับคำนวณ prior และ likelihood
Online Naive Bayes
คำนวณคะแนนใน log space เพื่อลดปัญหาเลขเล็กเกินไป ใช้ smoothing รองรับคำที่พบไม่บ่อย และจัดอันดับครบทั้งหกประเภทแทนการตอบเพียง label เดียว
Learn, review, unlearn
เมื่อผู้ดูแลยืนยันประเภท ระบบจึงเพิ่มสถิติของตอนนั้น การแก้ label ต้องย้อนผลเดิมก่อนเพิ่มผลใหม่ ทำให้ revision และเหตุการณ์เรียนรู้สามารถตรวจสอบย้อนหลังได้
u คือจำนวน token ไม่ซ้ำ และ m คือ feature ที่พบจริง ทำนายจาก sufficient statistics โดยไม่ retrain ทั้ง corpus จึงตอบสนองแบบ interactive เมื่อ feature index อยู่ในหน่วยความจำหรือมี database index
TF-IDF matrix เป็น sparse และ Naive Bayes ใช้การคูณเมทริกซ์แบบ vectorized ค่าใช้จ่ายจึงขึ้นกับ non-zero features มากกว่าขนาด vocabulary ทั้งหมด เหมาะกับการ train/test ซ้ำอย่างเป็นระบบ
ไม่มี 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 ออกจากข้อเสนอทดลองใหม่ เพื่อให้ผู้อ่านตรวจสอบได้ว่าอะไรคือผลเดิม อะไรคือการตีความ และอะไรยังต้องพิสูจน์
เราจำแนก “ประเภทของเรื่อง” หรือกำลังจำ “ลายมือของเรื่องเดิม”?
นิยายหนึ่งเรื่องประกอบด้วยหลายตอนซึ่งใช้ชื่อตัวละคร สถานที่ และสำนวนร่วมกัน หากสุ่มตอนจากเรื่องเดียวกันไปอยู่ทั้ง train และ test โมเดลอาจได้คะแนนสูงเพราะจำเอกลักษณ์ของเรื่อง ไม่ใช่เพราะเข้าใจสัญญาณ genre การทดลองที่ดีจึงต้องแยกข้อมูลระดับเรื่อง รายงาน class imbalance และวัดทั้งคุณภาพคำตอบกับต้นทุนของระบบออนไลน์
คำถามและสมมติฐาน
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 เหมือนกัน
หน่วยทดลองและ Leakage
หน่วยที่ classifier รับคือ “ตอน” แต่หน่วยที่ต้องใช้แบ่ง train/test ควรเป็น “เรื่อง” เพราะตอนต่าง ๆ ในเรื่องเดียวกันไม่เป็นอิสระ การ split ระดับเรื่องทำให้ชื่อเฉพาะและสำนวนของผู้เขียนไม่ข้าม partition
ควรคำนวณ content hash เพื่อลบตอนซ้ำ ตรวจ near-duplicate ด้วย character n-gram similarity และไม่ใช้ชื่อเรื่อง หมวดหมู่จากเว็บ หรือ tag ที่บอกคำตอบตรง ๆ เป็น feature การเก็บ chapter order ทำเพื่อ visualization แต่ไม่ควรให้ลำดับกลายเป็นทางลัดของ classifier
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
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 อย่างเดียว
Metric ที่ต้องอ่านพร้อมกัน
Accuracy ตอบว่าทายถูกกี่ตอนโดยรวม แต่ class ใหญ่อาจครอบงำผล Macro-F1 ให้ทุก genre น้ำหนักเท่ากัน Weighted-F1 สะท้อน distribution จริง และ confusion matrix แสดงว่าคู่ใดสับสนกัน
ระบบที่แสดง probability ควรวัด log loss, Brier score และ Expected Calibration Error ด้วย หากโมเดลบอก 80% จำนวนมากแต่ถูกเพียงครึ่งเดียว กราฟ Genre DNA จะดูมั่นใจเกินหลักฐานแม้ accuracy ยังดูดี
อ่านผล 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 ของข้อมูลเพียงอย่างเดียว
Donut กับ Progression ตอบคนละคำถาม
Donut รวม score ทุกตอนแล้ว normalize จึงสรุป composition ทั้งเรื่อง แต่ซ่อนลำดับเวลา Line chart วาง probability ของแต่ละ genre ตาม chapter order จึงเห็นการเปิดเรื่อง การไต่ระดับ conflict และการเปลี่ยนอารมณ์
เส้นโค้งเป็น interpolation เพื่อช่วยการมอง ไม่ใช่ค่าที่โมเดลคำนวณระหว่างตอน จุดข้อมูลจริงยังอยู่ที่เลขตอนเท่านั้น ใน certificate รุ่นนี้ curve ถูก clip ใน plotting frame และ clamp control points เพื่อไม่สร้างภาพว่าคะแนนเกินช่วง 0–100%
การพิสูจน์ 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
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 เดียวกัน
ข้อคุกคามต่อความเที่ยงตรง
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 และสิทธิ์การใช้ข้อมูลกำกับ
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
ประวัติผู้ร่วมพัฒนาระบบและงานวิจัยในแต่ละรุ่น
Student contributors
Chatchaya Innarong
Isara Kerdpra
Student contributors
นายชาญวิทย์ มิ่งขวัญคีรี
นายชิษณุพงศ์ ตรีสุธรรมมาศ
นายวรัชญ์ ประทีปสังคม
Academic contributors
Warin Wattanapornprom
Supatcha Lertampaiporn
Wittawin Susutti
STORY + MODEL TIMELINE
เห็นทั้งการเปลี่ยนของเรื่อง และการเปลี่ยนของโมเดล
หน้า production จะอ่านข้อมูลจาก API revision เดียวกัน ทำให้กราฟและคำทำนายตรวจสอบย้อนกลับได้
สัดส่วน GENE / GENRE ของเรื่อง
ภาพรวมก่อนอ่านเส้นเวลา
วงกลมสรุปน้ำหนักของทั้งหกประเภทจากทุกตอน ส่วนกราฟด้านล่างแสดงว่าสัญญาณเหล่านั้นเปลี่ยนไปอย่างไรเมื่อเรื่องดำเนินต่อ
รวมนิยายสั้นแนวสยองขวัญ
การเรียนรู้ล่าสุด
- Learnตอนที่ 8 · ยืนยัน Fantasyเพิ่มหลักฐาน 184 คำ · 2 นาทีที่แล้ว
- ReviewDrama → Mysteryผู้ดูแลแก้ label · 18 นาทีที่แล้ว
- Unlearnถอนตอนฉบับร่าง #381ย้อน feature event สำเร็จ · 1 ชั่วโมงที่แล้ว