1 คะแนน โดย GN⁺ 2025-05-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็นโครงการโอเพนซอร์สที่วิเคราะห์โครงสร้างทางภาษาของ ต้นฉบับวอยนิช ด้วย เทคนิค 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 ความคิดเห็น

 
GN⁺ 2025-05-19
ความคิดเห็นจาก Hacker News
  • ผมเห็นว่าคุณกำลังมองหาคลัสเตอร์ภายในการฉายภาพด้วย PCA — ถ้าต้องการหาโครงสร้างที่ลึกกว่านี้ อยากแนะนำอัลกอริทึมลดมิติรุ่นใหม่อย่าง PaCMAP หรือ LocalMAP ตอนนี้ผมกำลังทำโปรเจ็กต์ที่นำข้อมูลจาก Pol.is ซึ่งเป็นเครื่องมือสำรวจความคิดเห็น มาฉายภาพใหม่ด้วยอัลกอริทึมลดมิติแบบนี้แทน PCA อัลกอริทึมใหม่พวกนี้ให้ข้อมูลเชิงลึกที่เมื่อก่อนมองไม่เห็นได้อย่างน่าทึ่ง ผมยังมีผลลัพธ์ที่ระบายสีแต่ละกลุ่มให้ดูแบบภาพรวมด้วย ลองเปิดดูบนเดสก์ท็อปได้เลย ถ้าสงสัยว่า Pol.is คืออะไร ก็ขอแนะนำบทความที่เกี่ยวข้องด้วย

    • ขอบคุณที่ทำให้ผมได้รู้จัก PaCMAP กับ LocalMAP เป็นครั้งแรก — แนวทางลดมิติแบบนี้ที่รักษาโครงสร้างได้ดี น่าจะเหมาะกับข้อมูลชุดนี้มากกว่า PCA ขอบคุณมากครับ ตอนนี้ผมสนใจขึ้นมาแล้วและจะลองศึกษาให้ลึกขึ้น
    • จากประสบการณ์ของผม UMAP ให้ผลลัพธ์ดีกว่า PCA หรือ t-SNE มากสำหรับการลดมิติของ embedding
  • โมเดล text embedding ที่ใช้ที่นี่คือ paraphrase-multilingual-MiniLM-L12-v2 ซึ่งเป็นโมเดลอายุราว 4 ปีแล้ว ในโลก NLP ถือว่าเก่ามาก การพัฒนาของ LLM ช่วงหลังทำให้ความสามารถในการแทนข้อมูลของโมเดล embedding และความสามารถในการแยกแยะภายใน embedding space ดีขึ้นอย่างมาก แม้แต่โมเดล embedding รุ่นใหม่ที่ไม่ได้เน้นรองรับหลายภาษาโดยตรง ก็ยังทำผลงานได้ยอดเยี่ยมกับข้อมูลลักษณะนี้ ดังนั้นมันก็น่าจะให้ผลที่ดีกว่ากับภาษาที่ค่อนข้างไม่เป็นที่รู้จักอย่าง Voynich Manuscript ได้ด้วย ผมมองว่าเทคนิค NLP แบบดั้งเดิม เช่น การตัดปัจจัยต่อท้ายหรือการระบุชนิดคำ อาจเสี่ยงทำให้บริบทที่จำเป็นหายไปและลดคุณภาพของ embedding ลง

    • ผมเลือก paraphrase-multilingual-MiniLM-L12-v2 เป็นหลักเพราะเรื่องความเร็วและความเข้ากันได้ แต่ก็เห็นด้วยว่าตามมาตรฐานปัจจุบันมันเป็นโมเดลที่เก่าแล้วจริง ๆ ถ้าได้ลองใช้โมเดลใหม่กว่าอย่าง all-mpnet-base-v2 หรือ text-embedding-ada-002 พร้อมเก็บปัจจัยต่อท้ายไว้และทำ full-context embedding ก็น่าจะได้ผลที่น่าสนใจกว่า ขอบคุณสำหรับข้อสังเกตนี้ มันทำให้ผมเริ่มมองการทำรอบถัดไปในแง่บวกมากขึ้น
  • ผมไม่ค่อยรู้เรื่อง NLP เลยสงสัยว่ามันจะสมเหตุสมผลไหมถ้าจะตรวจสอบกระบวนการด้วยการควบคุมกลุ่มเปรียบเทียบ เช่น ให้คนเขียนประโยคที่ดูเหมือนภาษาแต่จริง ๆ ไม่ใช่ภาษา แล้วเอาไปผ่านขั้นตอนเดียวกันทั้งหมด เช่น การลบปัจจัยต่อท้าย การพยายามจัดคลัสเตอร์ ฯลฯ แล้วดูว่าจะได้ผลลัพธ์คล้ายกันไหม

    • ใช่เลย นั่นแหละ ผมสงสัยว่าทำไมถึงไม่ให้คนสัก 100 คนเขียนต้นฉบับ Voynich ขึ้นมา แล้วเอาข้อมูลนั้นมาฝึกเลย
  • ผมคิดว่าน่าจะวิเคราะห์ด้วย UMAP หรือ t-SNE ได้ดี แม้ว่าใน PCA จะได้การแยกที่ค่อนข้างสะอาดอยู่แล้วก็ตาม การแมปแต่ละคลัสเตอร์แบบอ้างอิงถึงกันก็ดูจะเป็นวิธีที่ดีในการบอกว่าในงานวิเคราะห์ยังไม่เหลือความแปรปรวนค้างอยู่

    • เป็นข้อสังเกตที่ดีมาก — ตอนแรกผมใช้ PCA ต่อเพราะผลการแยกออกมาสะอาดเกินคาด แต่คุณพูดถูกว่า UMAP หรือ t-SNE อาจเผยให้เห็นแพตเทิร์นที่ละเอียดกว่าหรือปัญหาที่ซ่อนอยู่จากมุมมองแบบไม่เชิงเส้น ผมยังไม่ได้สร้าง similarity matrix ระหว่างคลัสเตอร์เลย แต่พอได้ฟังข้อเสนอของคุณแล้ว มันดูเป็นก้าวถัดไปตามธรรมชาติในการตรวจสอบว่าสัญญาณที่จับได้นั้นมีสาระจริงแค่ไหน น่าจะต้องลองทำต่อแน่ ๆ ขอบคุณที่ช่วยกระตุ้นความคิด
    • ถ้ามีตัวอย่างว่าการแมปแบบอ้างอิงนี้ทำกันอย่างไร ผมสนใจมาก ผมอยากลองเอาไปใช้กับ embedding ของโมดาลิตีอื่นบ้าง แต่ยังมีประสบการณ์ฝั่ง NLP น้อย
    • ถ้า PCA แยกได้ดีพออยู่แล้ว ผมมักจะหลีกเลี่ยง UMAP เพราะระยะห่างระหว่างจุดแต่ละจุดตีความได้ง่ายกว่า ส่วน t-SNE ผมแทบจะหลีกเลี่ยงเสมอ เพราะรู้สึกว่าการตีความระยะห่างแทบไม่มีความหมายเลย อันนี้เป็นความชอบส่วนตัวล้วน ๆ
  • ผมคิดว่าสมมติฐานนี้น่าสนใจที่สุด: มีผู้เขียนคนหนึ่งที่เหมือนจะคืบหน้าได้มากทีเดียวโดยมอง Voynichese ว่าเป็นภาษาตระกูลเจอร์แมนิก ผมก็เคยเห็นข้ออ้างว่าเป็นภาษาตระกูลยูราลิกหรือฟินโน-อูกริกด้วย ผมคิดว่าวิธีวิทยาของคุณดีมาก และสงสัยว่าถ้าปรับให้เหมาะกับตระกูลภาษาเฉพาะ จะให้ผลดีขึ้นหรือไม่

    • ผมเคยเห็นหลักฐานมาก่อนเหมือนกันว่า Edward Kelly อยู่ถูกที่ถูกเวลา และรู้จัก Cardan grille ด้วย เพราะงั้นผมเลยค่อนข้างคิดว่าเขาน่าจะเป็นผู้สร้าง และตัวหนังสือเล่มนี้อาจถูกทำขึ้นเพื่อการหลอกลวงหรือเล่นตลกมากกว่า
    • เธรดนี้กำลังคุยกันเรื่องคำกล่าวอ้างเกี่ยวกับ “การถอดรหัส” หลายแบบอยู่ เว็บไซต์ Bernholz ก็โอเค แต่ผลงานของ Child ไม่ได้ช่วยเรื่องการถอดรหัสได้มากนักจริง ๆ
  • ผมเคยคิดว่ามันคือตุรกีโบราณ

    • ฉบับแปลภาษาอังกฤษของต้นฉบับดูได้ที่นี่
  • ผมอาจพลาดไปใน README หรืออาจมองไม่เห็น แต่ผมสงสัยว่ามีการเข้ารหัส “คำ” ตั้งแต่ต้นอย่างไร เช่น คำอย่าง “okeeodair” ถูกแมปกลับไปเป็นสัญลักษณ์ต้นฉบับได้อย่างไร

    • ใช่แล้ว คำอย่าง “okeeodair” มาจากไฟล์ถอดความ EVA โดยตรง มันเป็นผลจากการแทนสัญลักษณ์ Voynich ต้นฉบับเป็น ASCII ตามระบบ EVA (European Voynich Alphabet) สำหรับโปรเจ็กต์นี้ ผมไม่ได้จัดการกับสัญลักษณ์นั้นโดยตรง แต่ใช้คำตามการถอดความ EVA เลย ดังนั้นถ้ามี “okeeodair” อยู่ในชุดข้อมูล นั่นก็หมายความว่ามีใครบางคน (ผู้เชี่ยวชาญ) ตกลงกันว่าจะเรียกชุดสัญลักษณ์นั้นด้วยชื่อนี้ ข้อมูลเกี่ยวกับการถอดความดูได้จากเว็บไซต์นี้
  • สิ่งที่ผมจินตนาการคือ ถ้ามันเป็นแค่รอยขีดเขียนไร้ความหมายจริง ๆ และไม่ใช่แม้แต่ข้อความเข้ารหัส ด้วยธรรมชาติของต้นฉบับ ลีลา ลายมือ คำที่ใช้ หรือแม้แต่ตัวอักษรเองก็น่าจะค่อย ๆ เปลี่ยนไปตั้งแต่หน้าแรกจนถึงหน้าสุดท้าย แน่นอนว่าลำดับหน้าอาจถูกสลับได้ แต่ก็น่าจะมีความแตกต่างอะไรบางอย่างให้เห็น เว้นแต่ผู้เขียนจะเคยเขียนอะไรในสไตล์คล้ายกันนี้มาแล้วหลายสิบเล่มแต่ทั้งหมดหายไป ผมรู้ว่านี่ไม่ใช่ไอเดียใหม่ แต่อยากรู้ว่าเคยมีการวิเคราะห์แพตเทิร์นแบบนี้หรือไม่ เพราะผมไม่ค่อยเห็นการพูดถึงความสม่ำเสมอระหว่างหน้า

    • มีงานวิจัยเรื่องความสม่ำเสมอระหว่างหน้าอยู่มากทีเดียว มีข้อเสนอในหมู่ผู้เชี่ยวชาญว่ามีอาลักษณ์สองคน (หรือห้าคน) และยังมีการอภิปรายงานทดลองที่อิงจากข้อเสนอของ Lisa Fagin Davis ด้วย น่าจะเป็นประโยชน์ถ้าลองดู
  • ผมสงสัยว่าถ้าจะถอดรหัสด้วยแนวทางแบบ “brute force” จะต้องใช้ทรัพยากรมากแค่ไหน เช่น ถ้ามีกระบวนการที่ชัดเจนในการค่อย ๆ จับคู่กับคำในภาษาที่รู้จักทีละคำแล้วไล่เพิ่มคะแนนขึ้นไป จะเป็นอย่างไร

    • อยากชี้ว่าการทำแบบนั้นต้องตั้งสมมติฐานว่าทุกคำแมปกันแบบ 1:1 แต่ภาษาโดยธรรมชาติไม่จำเป็นต้องเป็นแบบนั้นเสมอไป ตัวอย่างเช่นคำประสมก็แมปด้วยวิธีนี้ได้ยาก และยังมีความแตกต่างเชิงโครงสร้างของความหมายในระดับที่ลึกกว่านั้นจากความต่างทางวัฒนธรรมด้วย
    • เป็นคำถามที่น่าสนใจ — จริง ๆ แล้วผมเองก็เคยคิดคล้าย ๆ กัน ผมไม่ได้เรียนด้านคริปโตกราฟีโดยตรง เลยไม่แน่ใจว่าการ “brute force” ในสเกลใหญ่จะเป็นไปได้จริงแค่ไหน แต่แนวทางที่พยายามแมป “คำ” ของ Voynich แต่ละคำเข้ากับคำในภาษาจริงเพื่อหาความสอดคล้องสูงสุดนั้น ก็สอดคล้องกับการทดลองและแนวทางเชิงสำรวจหลายอย่างอยู่แล้ว ความยากคือจำนวนคำศัพท์มีมากมหาศาล และก็ยังไม่ชัดเจนด้วยว่า “คำ” แต่ละหน่วยนั้นแมปกับคำจริงแบบ 1:1 หรือไม่ “คำ” ของ Voynich อาจเป็นคำศัพท์จริงหนึ่งคำ หรือเป็นเพียงส่วนย่อย หรือเป็นการรวมกันของรากศัพท์กับปัจจัยต่อท้ายก็ได้ ความกำกวมตรงนี้ทำให้การแมปแบบตรงไปตรงมาค่อนข้างยาก ถึงอย่างนั้น การลองใช้ cluster ID แทน token รายตัว แล้วใช้ language model ให้คะแนนผลลัพธ์ ก็ดูเป็นไอเดียที่ดีมาก น่าจะคุ้มค่าที่จะลองด้วยการทำ optimization หรือเทคนิคเชิงวิวัฒนาการ อย่างน้อยก็อาจให้เบาะแสได้ว่าโครงสร้างมัน “ดูเหมือนภาษา” มากน้อยแค่ไหน ขอบคุณสำหรับไอเดียดี ๆ นี้ หวังว่าจะมีผู้เชี่ยวชาญในสาขานี้มาเห็นความเห็นนี้แล้วลองทำดู
  • ผมสงสัยว่าถ้าเอาวิธีวิเคราะห์นี้ไปใช้กับข้อความจากภาษาที่รู้จักซึ่งมีปริมาณใกล้เคียงกัน จะได้แพตเทิร์นคล้ายกันหรือไม่ หรือพูดอีกอย่างคือ อยากรู้ว่าวิธีวิเคราะห์นี้จะช่วยให้เข้าใจได้ไหมว่าระบบอักษรนี้สื่อถึงอะไร เมื่อเอาไปใช้กับข้อความหลายประเภท