- เป็นโครงการโอเพนซอร์สที่วิเคราะห์โครงสร้างทางภาษาของ ต้นฉบับวอยนิช ด้วย เทคนิค NLP สมัยใหม่ เช่น SBERT
- มุ่งเน้นที่ การตัดปัจจัยท้ายคำและการจัดกลุ่ม เพื่อตรวจสอบว่ามีโครงสร้างคล้ายภาษาจริงอยู่หรือไม่ ไม่ใช่แค่รูปแบบลวง
- จากการวิเคราะห์โครงสร้างหลายด้าน เช่น บทบาทของคำหน้าที่และคำเนื้อหา, เมทริกซ์การเปลี่ยนผ่าน พบรูปแบบที่มีนัยสำคัญ
- ต่างจากแนวทางแบบ สถิติดั้งเดิมหรือการคาดเดา โครงการนี้พยายามวิเคราะห์ลักษณะเชิงโครงสร้างของภาษาในแบบภาษาศาสตร์เชิงคำนวณ
- เป็นโครงการที่มุ่งเน้นเฉพาะ การสร้างแบบจำลองเชิงโครงสร้าง โดยไม่พยายามแปลความหมาย จึงเปิดทางให้มีการวิจัยต่อและการทดลองเปรียบเทียบเพิ่มเติม
📜 แนะนำโครงการวิเคราะห์โครงสร้างต้นฉบับวอยนิช
🔍 ภาพรวม
- โครงการนี้เริ่มต้นจากการทดลองส่วนตัวที่ต้องการใช้เครื่องมือ การประมวลผลภาษาธรรมชาติ (NLP) สมัยใหม่เพื่อวิเคราะห์โครงสร้างของ ต้นฉบับวอยนิช
- นำวิธีการสร้างแบบจำลองภาษาจริงมาใช้ เช่น การจัดกลุ่ม, การอนุมานชนิดคำ, การเปลี่ยนผ่านแบบ Markov, การสกัดรูปแบบตามแต่ละส่วน
- โดยไม่พยายามตีความความหมายหรือแปล และไม่คาดเดารูปแบบเกินจริง แต่ตรวจสอบเพียงว่ามี โครงสร้างที่ทำงานเหมือนภาษา อยู่หรือไม่
- ทุกขั้นตอนเปิดเผยต่อสาธารณะ ตั้งแต่ การตัดปัจจัยท้ายคำ, SBERT embedding, การสร้างสมมติฐานพจนานุกรม
🧠 ความสำคัญ
- ต้นฉบับวอยนิช เป็นเอกสารปริศนาที่ยังถอดความไม่ได้ และยังไม่มี แนวทางแก้เชิงภาษาศาสตร์/คริปโตกราฟี ที่ชัดเจน
- การวิเคราะห์ที่ผ่านมาแบ่งออกเป็นสองขั้วคือ การตรวจสอบเอนโทรปีเชิงสถิติ กับ การคาดเดาแบบไม่เป็นวิทยาศาสตร์
- โครงการนี้อิงกับ ภาษาศาสตร์เชิงคำนวณ เพื่อสำรวจอย่างเป็นกลางว่ามี รูปแบบเชิงโครงสร้าง ที่คล้ายภาษาจริงหรือไม่
📁 โครงสร้างโครงการ
- /data/
- มีข้อมูล เช่น ฉบับถอดความของต้นฉบับทั้งหมด, ประเภทของคำราก, ID กลุ่ม, รายการปัจจัยท้ายคำที่ถูกตัดออก, ลำดับกลุ่มของแต่ละบรรทัด
- /scripts/
- มีสคริปต์วิเคราะห์หลัก เช่น การจัดกลุ่มคำด้วย SBERT, การคาดการณ์ชนิดคำ, การสร้างเมทริกซ์การเปลี่ยนผ่านแบบ Markov, การสร้างตัวเลือกพจนานุกรม
- /results/
- มีผลการวิเคราะห์ เช่น ภาพการจัดกลุ่ม, ฮีตแมปของเมทริกซ์การเปลี่ยนผ่าน, สรุปตามแต่ละกลุ่ม
✅ ผลงานสำคัญ
- การจัดกลุ่ม คำรากที่ตัดปัจจัยท้ายคำออกแล้วด้วย multilingual SBERT
- แยกความแตกต่างระหว่าง กลุ่มที่คล้ายคำหน้าที่ และ กลุ่มที่คล้ายคำเนื้อหา
- สร้างแบบจำลอง โครงสร้างการเปลี่ยนผ่านของกลุ่ม แบบ Markov
- วิเคราะห์ โครงสร้างวากยสัมพันธ์แยกตามส่วน (เช่น Botanical, Biological เป็นต้น)
- สร้าง ตารางสมมติฐานพจนานุกรม บนฐานข้อมูล
🔧 การตัดสินใจด้านการเตรียมข้อมูล
- ก่อนการจัดกลุ่ม ได้ตัดปัจจัยท้ายคำที่ซ้ำบ่อย (เช่น aiin, dy, chy เป็นต้น) ออก
- วิธีนี้ช่วยดึง รูปคำราก ออกมา ทำให้ความหนาแน่นของกลุ่มและรูปแบบเชิงโครงสร้างชัดเจนขึ้น
- ปัจจัยท้ายคำอาจเป็น การเติมเสียง, หน่วยไวยากรณ์, การท่องจำ, การซ้ำ หรือเป็น noise ที่ไม่มีความหมาย
- อย่างไรก็ตาม การเลือกนี้มีข้อจำกัด เช่น การสูญเสียข้อมูลเชิงหน่วยคำ, การซ่อนข้อมูลการผันคำที่มีความหมาย, อคติไปทางคำหน้าที่
- การทดลองเปรียบเทียบโดยไม่ตัดปัจจัยท้ายคำก็มีคุณค่าเช่นกัน — ใครก็สามารถทำการทดลองต่อยอดได้
📈 ผลการวิเคราะห์หลัก
- Cluster 8: ปรากฏบ่อยมาก ความหลากหลายต่ำ และมักอยู่ต้นบรรทัด — เป็นตัวเลือกของกลุ่มคำหน้าที่
- Cluster 3: มีความหลากหลายสูง และตำแหน่งค่อนข้างอิสระ — เป็นตัวเลือกของกลุ่มคำรากเนื้อหา
- เมทริกซ์การเปลี่ยนผ่าน: มีโครงสร้างภายในที่ชัดเจน ห่างไกลจากความสุ่ม
- รูปแบบของกลุ่มและชนิดคำ: แตกต่างกันตาม ส่วนของต้นฉบับ (เช่น Biological, Botanical เป็นต้น)
🧬 สมมติฐาน
- ต้นฉบับนี้เป็น ภาษาประดิษฐ์/ภาษาช่วยจำที่มีโครงสร้าง ซึ่งใช้ การซ้ำของพยางค์และการซ้ำตามตำแหน่ง
- มันแสดงโครงสร้างทางภาษาอย่างชัดเจน เช่น วากยสัมพันธ์, การแยกคำหน้าที่/คำเนื้อหา, การเปลี่ยนผ่านทางภาษาที่ตอบสนองต่อแต่ละส่วน
📊 ตัวอย่างภาพประกอบ
- Figure 1: embedding ของการจัดกลุ่มด้วย SBERT (ลดมิติด้วย PCA)
- Figure 2: ฮีตแมปของเมทริกซ์การเปลี่ยนผ่าน
📌 ข้อจำกัด
- การ แมปกลุ่มกับคำ เป็นแบบอ้อม จึงมีปรากฏการณ์ทับซ้อนในการประเมินความถี่
- เกณฑ์ การตัดปัจจัยท้ายคำ เป็นแบบ heuristic และอาจทำให้เสียงลงท้ายที่มีความหมายจริงสูญหายได้
- ไม่ได้พยายาม ตีความความหมาย แต่เน้นเฉพาะ การวิเคราะห์เชิงโครงสร้าง
✍️ หมายเหตุจากผู้เขียน
- เป็นโครงการที่เริ่มขึ้นเพื่อการเรียนรู้ด้าน AI, NLP, การวิเคราะห์โครงสร้าง
- เป้าหมายไม่ใช่การถอดความต้นฉบับโดยตรง แต่เชื่อว่าการ ทำความเข้าใจโครงสร้างด้วยเครื่องมือสมัยใหม่ มีประโยชน์มากกว่า
- ยินดีต้อนรับผู้ที่สนใจแนวคิดแบบ “ตัวการสร้างแบบจำลองเองก็มีความหมาย” มากกว่าการคาดหวังการถอดรหัสแบบ Rosetta Stone
🤝 แนวทางการมีส่วนร่วม
- โครงการนี้ยินดีต้อนรับความร่วมมือและการต่อยอดจากทั้ง นักภาษาศาสตร์, นักคริปโตกราฟี, นักวิจัยภาษาประดิษฐ์, และชุมชนภาษาศาสตร์เชิงคำนวณ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผมเห็นว่าคุณกำลังมองหาคลัสเตอร์ภายในการฉายภาพด้วย PCA — ถ้าต้องการหาโครงสร้างที่ลึกกว่านี้ อยากแนะนำอัลกอริทึมลดมิติรุ่นใหม่อย่าง PaCMAP หรือ LocalMAP ตอนนี้ผมกำลังทำโปรเจ็กต์ที่นำข้อมูลจาก Pol.is ซึ่งเป็นเครื่องมือสำรวจความคิดเห็น มาฉายภาพใหม่ด้วยอัลกอริทึมลดมิติแบบนี้แทน PCA อัลกอริทึมใหม่พวกนี้ให้ข้อมูลเชิงลึกที่เมื่อก่อนมองไม่เห็นได้อย่างน่าทึ่ง ผมยังมีผลลัพธ์ที่ระบายสีแต่ละกลุ่มให้ดูแบบภาพรวมด้วย ลองเปิดดูบนเดสก์ท็อปได้เลย ถ้าสงสัยว่า Pol.is คืออะไร ก็ขอแนะนำบทความที่เกี่ยวข้องด้วย
โมเดล text embedding ที่ใช้ที่นี่คือ paraphrase-multilingual-MiniLM-L12-v2 ซึ่งเป็นโมเดลอายุราว 4 ปีแล้ว ในโลก NLP ถือว่าเก่ามาก การพัฒนาของ LLM ช่วงหลังทำให้ความสามารถในการแทนข้อมูลของโมเดล embedding และความสามารถในการแยกแยะภายใน embedding space ดีขึ้นอย่างมาก แม้แต่โมเดล embedding รุ่นใหม่ที่ไม่ได้เน้นรองรับหลายภาษาโดยตรง ก็ยังทำผลงานได้ยอดเยี่ยมกับข้อมูลลักษณะนี้ ดังนั้นมันก็น่าจะให้ผลที่ดีกว่ากับภาษาที่ค่อนข้างไม่เป็นที่รู้จักอย่าง Voynich Manuscript ได้ด้วย ผมมองว่าเทคนิค NLP แบบดั้งเดิม เช่น การตัดปัจจัยต่อท้ายหรือการระบุชนิดคำ อาจเสี่ยงทำให้บริบทที่จำเป็นหายไปและลดคุณภาพของ embedding ลง
ผมไม่ค่อยรู้เรื่อง NLP เลยสงสัยว่ามันจะสมเหตุสมผลไหมถ้าจะตรวจสอบกระบวนการด้วยการควบคุมกลุ่มเปรียบเทียบ เช่น ให้คนเขียนประโยคที่ดูเหมือนภาษาแต่จริง ๆ ไม่ใช่ภาษา แล้วเอาไปผ่านขั้นตอนเดียวกันทั้งหมด เช่น การลบปัจจัยต่อท้าย การพยายามจัดคลัสเตอร์ ฯลฯ แล้วดูว่าจะได้ผลลัพธ์คล้ายกันไหม
ผมคิดว่าน่าจะวิเคราะห์ด้วย UMAP หรือ t-SNE ได้ดี แม้ว่าใน PCA จะได้การแยกที่ค่อนข้างสะอาดอยู่แล้วก็ตาม การแมปแต่ละคลัสเตอร์แบบอ้างอิงถึงกันก็ดูจะเป็นวิธีที่ดีในการบอกว่าในงานวิเคราะห์ยังไม่เหลือความแปรปรวนค้างอยู่
ผมคิดว่าสมมติฐานนี้น่าสนใจที่สุด: มีผู้เขียนคนหนึ่งที่เหมือนจะคืบหน้าได้มากทีเดียวโดยมอง Voynichese ว่าเป็นภาษาตระกูลเจอร์แมนิก ผมก็เคยเห็นข้ออ้างว่าเป็นภาษาตระกูลยูราลิกหรือฟินโน-อูกริกด้วย ผมคิดว่าวิธีวิทยาของคุณดีมาก และสงสัยว่าถ้าปรับให้เหมาะกับตระกูลภาษาเฉพาะ จะให้ผลดีขึ้นหรือไม่
ผมเคยคิดว่ามันคือตุรกีโบราณ
ผมอาจพลาดไปใน README หรืออาจมองไม่เห็น แต่ผมสงสัยว่ามีการเข้ารหัส “คำ” ตั้งแต่ต้นอย่างไร เช่น คำอย่าง “okeeodair” ถูกแมปกลับไปเป็นสัญลักษณ์ต้นฉบับได้อย่างไร
สิ่งที่ผมจินตนาการคือ ถ้ามันเป็นแค่รอยขีดเขียนไร้ความหมายจริง ๆ และไม่ใช่แม้แต่ข้อความเข้ารหัส ด้วยธรรมชาติของต้นฉบับ ลีลา ลายมือ คำที่ใช้ หรือแม้แต่ตัวอักษรเองก็น่าจะค่อย ๆ เปลี่ยนไปตั้งแต่หน้าแรกจนถึงหน้าสุดท้าย แน่นอนว่าลำดับหน้าอาจถูกสลับได้ แต่ก็น่าจะมีความแตกต่างอะไรบางอย่างให้เห็น เว้นแต่ผู้เขียนจะเคยเขียนอะไรในสไตล์คล้ายกันนี้มาแล้วหลายสิบเล่มแต่ทั้งหมดหายไป ผมรู้ว่านี่ไม่ใช่ไอเดียใหม่ แต่อยากรู้ว่าเคยมีการวิเคราะห์แพตเทิร์นแบบนี้หรือไม่ เพราะผมไม่ค่อยเห็นการพูดถึงความสม่ำเสมอระหว่างหน้า
ผมสงสัยว่าถ้าจะถอดรหัสด้วยแนวทางแบบ “brute force” จะต้องใช้ทรัพยากรมากแค่ไหน เช่น ถ้ามีกระบวนการที่ชัดเจนในการค่อย ๆ จับคู่กับคำในภาษาที่รู้จักทีละคำแล้วไล่เพิ่มคะแนนขึ้นไป จะเป็นอย่างไร
ผมสงสัยว่าถ้าเอาวิธีวิเคราะห์นี้ไปใช้กับข้อความจากภาษาที่รู้จักซึ่งมีปริมาณใกล้เคียงกัน จะได้แพตเทิร์นคล้ายกันหรือไม่ หรือพูดอีกอย่างคือ อยากรู้ว่าวิธีวิเคราะห์นี้จะช่วยให้เข้าใจได้ไหมว่าระบบอักษรนี้สื่อถึงอะไร เมื่อเอาไปใช้กับข้อความหลายประเภท