- Đây là một dự án mã nguồn mở phân tích cấu trúc ngôn ngữ của Bản thảo Voynich bằng các kỹ thuật NLP hiện đại như SBERT
- Dự án tập trung vào loại bỏ hậu tố và phân cụm để kiểm chứng xem có tồn tại cấu trúc tương đồng ngôn ngữ thực sự hay không, thay vì các mẫu giả
- Kết quả phân tích cấu trúc đa chiều như vai trò của từ chức năng và từ nội dung, ma trận chuyển tiếp cho thấy các mẫu có ý nghĩa đã được quan sát thấy
- Khác với các cách tiếp cận thống kê truyền thống hoặc dựa trên suy đoán, đây là nỗ lực phân tích các đặc trưng ngôn ngữ có cấu trúc theo hướng ngôn ngữ học tính toán
- Dự án chỉ tập trung vào mô hình hóa cấu trúc mà không cố gắng dịch nghĩa, nên có thể tiếp tục mở rộng nghiên cứu và thực hiện các thí nghiệm đối chiếu
📜 Giới thiệu dự án phân tích cấu trúc Bản thảo Voynich
🔍 Tổng quan
- Dự án này bắt đầu từ một thử nghiệm cá nhân nhằm phân tích cấu trúc của Bản thảo Voynich bằng các công cụ xử lý ngôn ngữ tự nhiên (NLP) hiện đại
- Dự án áp dụng các phương pháp mô hình hóa ngôn ngữ thực tế như phân cụm, suy luận từ loại, chuyển tiếp Markov, trích xuất mẫu theo từng phần
- Không cố gắng diễn giải ý nghĩa hay dịch thuật, cũng không phóng đại các mẫu, mà chỉ kiểm chứng xem có tồn tại cấu trúc vận hành như một ngôn ngữ hay không
- Mọi bước như loại bỏ hậu tố, embedding SBERT, tạo giả thuyết từ vựng đều được công khai
🧠 Ý nghĩa
- Bản thảo Voynich là một tài liệu bí ẩn chưa được giải mã và hiện chưa có lời giải ngôn ngữ học/mật mã học
- Các phân tích trước đây chủ yếu bị chia thành hai hướng: kiểm tra entropy thống kê và suy đoán thiếu tính khoa học
- Dự án này dựa trên ngôn ngữ học tính toán để trung lập khám phá xem có tồn tại các mẫu cấu trúc tương tự ngôn ngữ thực hay không
📁 Cấu trúc dự án
- /data/
- Cung cấp dữ liệu như bản chép toàn bộ bản thảo, các loại từ gốc, ID cụm, danh sách hậu tố đã loại bỏ, chuỗi cụm của từng dòng
- /scripts/
- Cung cấp các script phân tích cốt lõi như phân cụm từ dựa trên SBERT, dự đoán từ loại, xây dựng ma trận chuyển tiếp Markov, tạo ứng viên từ vựng
- /results/
- Cung cấp kết quả phân tích như trực quan hóa cụm, heatmap ma trận chuyển tiếp, tóm tắt theo từng cụm
✅ Đóng góp chính
- Phân cụm các từ gốc đã loại bỏ hậu tố bằng SBERT đa ngôn ngữ
- Phân biệt cụm giống từ chức năng và cụm giống từ nội dung
- Mô hình hóa cấu trúc chuyển tiếp giữa các cụm theo phương pháp Markov
- Phân tích cấu trúc cú pháp theo từng phần (ví dụ: Botanical, Biological, v.v.)
- Tạo bảng giả thuyết từ vựng dựa trên dữ liệu
🔧 Quyết định tiền xử lý
- Trước khi phân cụm, dự án loại bỏ các hậu tố lặp đi lặp lại (ví dụ: aiin, dy, chy, v.v.)
- Nhờ đó có thể trích xuất dạng từ gốc, giúp độ tập trung của cụm và các mẫu cấu trúc rõ ràng hơn
- Các hậu tố có thể là phần đệm âm vị, hình vị ngữ pháp, yếu tố phục vụ ghi nhớ/đọc thuộc, lặp lại hoặc nhiễu vô nghĩa
- Tuy vậy, lựa chọn này cũng có hạn chế như mất thông tin hình thái, che khuất biến tố có ý nghĩa, thiên lệch với từ chức năng
- Các thí nghiệm đối chiếu không loại bỏ hậu tố cũng có giá trị — bất kỳ ai cũng có thể thực hiện các thí nghiệm phái sinh
📈 Kết quả phân tích chính
- Cluster 8: xuất hiện rất thường xuyên, độ đa dạng thấp và hay ở đầu dòng — là ứng viên cho cụm từ chức năng
- Cluster 3: độ đa dạng cao, vị trí linh hoạt — là ứng viên cho cụm từ nội dung gốc
- Ma trận chuyển tiếp: cho thấy cấu trúc nội tại mạnh, khác xa tính ngẫu nhiên
- Mẫu cụm và từ loại: khác nhau theo từng phần của bản thảo (ví dụ: Biological, Botanical, v.v.)
🧬 Giả thuyết
- Bản thảo là một ngôn ngữ nhân tạo/ghi nhớ có cấu trúc, sử dụng lặp âm tiết và lặp theo vị trí
- Nó thể hiện rõ cấu trúc ngôn ngữ như cú pháp, tách biệt chức năng/nội dung, chuyển tiếp ngôn ngữ theo từng phần
📊 Ví dụ trực quan hóa
- Figure 1: embedding phân cụm SBERT (giảm chiều bằng PCA)
- Figure 2: heatmap ma trận chuyển tiếp
📌 Hạn chế
- Ánh xạ cụm-từ là gián tiếp nên có hiện tượng chồng lấp trong ước lượng tần suất
- Tiêu chí loại bỏ hậu tố mang tính heuristic, nên có thể làm mất cả những âm cuối thực sự có ý nghĩa
- Dự án không thử diễn giải ngữ nghĩa mà chỉ tập trung vào phân tích cấu trúc
✍️ Ghi chú của tác giả
- Đây là dự án bắt đầu với mục tiêu học hỏi về AI, NLP, phân tích cấu trúc
- Mục tiêu không phải giải mã bản thảo, mà là hiểu cấu trúc bằng các công cụ hiện đại, điều mà tác giả cho là có giá trị phát triển hơn
- Dự án hoan nghênh những người quan tâm đến “bản thân việc mô hình hóa đã có ý nghĩa”, hơn là kỳ vọng vào một kiểu giải mã như Rosetta Stone
🤝 Hướng dẫn đóng góp
- Dự án này chào đón sự hợp tác và mở rộng từ các nhà ngôn ngữ học, nhà mật mã học, nhà nghiên cứu ngôn ngữ nhân tạo và cộng đồng ngôn ngữ học tính toán
1 bình luận
Ý kiến trên Hacker News
Tôi thấy bạn đang tìm các cụm trong phép chiếu PCA — nếu muốn tìm cấu trúc sâu hơn, tôi muốn gợi ý các thuật toán giảm chiều mới hơn như PaCMAP hoặc LocalMAP. Tôi đang thực hiện một dự án lấy dữ liệu từ công cụ khảo sát ý kiến Pol.is rồi chiếu lại bằng các thuật toán giảm chiều này thay vì PCA. Tôi rất ấn tượng với việc các thuật toán mới này mang lại những góc nhìn mà trước đây không thấy được. Tôi cũng có kết quả trực quan với các nhóm được tô màu, nên hãy xem trên máy tính để bàn. Nếu bạn tò mò Pol.is là gì thì tôi cũng gợi ý bài viết liên quan
Mô hình embedding văn bản dùng ở đây là paraphrase-multilingual-MiniLM-L12-v2, một mô hình đã khoảng 4 năm tuổi. Trong thế giới xử lý ngôn ngữ tự nhiên, như vậy là rất cũ. Với sự phát triển gần đây của LLM, khả năng biểu diễn thông tin của các mô hình embedding và năng lực phân biệt trong không gian embedding đã cải thiện mạnh mẽ. Ngay cả các mô hình embedding mới không nhắm đến hỗ trợ đa ngôn ngữ cũng cho hiệu năng xuất sắc với kiểu dữ liệu này. Vì vậy chúng cũng có thể cho kết quả tốt hơn với một ngôn ngữ tương đối ít được biết đến như Voynich Manuscript. Tôi cho rằng các kỹ thuật NLP truyền thống (loại bỏ hậu tố, nhận diện từ loại, v.v.) thậm chí còn có nguy cơ làm mất thông tin ngữ cảnh cần thiết và làm giảm chất lượng embedding
Tôi không rành về NLP. Tôi tự hỏi liệu có hợp lý không khi kiểm tra quy trình bằng cách kiểm soát nhóm đối chứng. Ví dụ, cho con người viết ra các câu trông giống ngôn ngữ nhưng thực ra không phải ngôn ngữ, rồi áp dụng cùng một quy trình (xóa hậu tố, thử phân cụm, v.v.) để xem có ra kết quả tương tự hay không
Tôi nghĩ sẽ tốt nếu phân tích bằng UMAP hoặc t-SNE, dù PCA đã cho ra kết quả tách biệt khá gọn. Ánh xạ tham chiếu các cụm với nhau cũng có vẻ là một cách tốt để cho thấy không còn nhiều biến thiên chưa được giải thích trong phân tích
Tôi cho rằng đây là giả thuyết thú vị nhất: có vẻ một tác giả nào đó đã đạt được tiến triển đáng kể khi xem Voynichese là một ngôn ngữ Germanic. Tôi cũng từng thấy các lập luận nói đó là ngôn ngữ Ural hoặc Finno-Ugric. Tôi nghĩ phương pháp luận của bạn rất tốt, và tự hỏi liệu nếu tùy biến để nhắm vào một hệ ngôn ngữ cụ thể thì có cho kết quả tốt hơn không
Tôi cứ nghĩ đây là tiếng Thổ Nhĩ Kỳ cổ
Có thể tôi đã bỏ sót hoặc không thấy trong README, nhưng tôi tò mò không biết việc mã hóa ban đầu của các “từ” được làm như thế nào. Ví dụ, một từ như “okeeodair” được ánh xạ ngược lại về ký hiệu gốc như thế nào
Điều tôi hình dung là, nếu đó chỉ đơn thuần là những nét vẽ nguệch ngoạc vô nghĩa và thậm chí không phải mật mã, thì do đặc tính của bản chép tay, phong cách, nét chữ, các từ được dùng, thậm chí cả chính các chữ cái cũng phải tiến hóa từ trang đầu đến trang cuối. Tất nhiên thứ tự các trang có thể đã bị xáo trộn, nhưng tôi nghĩ phải có một số khác biệt nào đó. Trừ khi tác giả đã viết hàng chục cuốn với phong cách tương tự rồi tất cả đều biến mất. Đây không phải ý tưởng mới, nhưng tôi tò mò không biết đã có phân tích nào về dạng mẫu này chưa, vì tôi chưa từng thấy nhắc đến tính nhất quán giữa các trang
Tôi tò mò không biết sẽ cần bao nhiêu tài nguyên để “giải mã” theo kiểu “brute force”. Ví dụ, nếu làm theo một quy trình rõ ràng như ánh xạ từng cái một với các từ của ngôn ngữ đã biết rồi tối ưu điểm số thì sao
Tôi tò mò không biết khi phân tích trên một văn bản có độ dài tương tự bằng ngôn ngữ đã biết thì có xuất hiện mẫu tương tự hay không. Nói cách khác, tôi đang hỏi liệu áp dụng kỹ thuật phân tích này lên nhiều loại văn bản khác nhau có thể giúp hiểu hệ chữ viết này thực sự biểu thị điều gì hay không