Voynich पांडुलिपि को SBERT से मॉडल कर उसकी संरचना की पड़ताल
(github.com/brianmg)- यह रिपॉज़िटरी यह जांचने के लिए क्लस्टरिंग, parts-of-speech अनुमान, Markov transitions, और section-wise patterns लागू करती है कि Voynich पांडुलिपि में अनुवाद संबंधी अनुमान लगाए बिना क्या संरचनात्मक पैटर्न हैं जो किसी वास्तविक भाषा जैसा व्यवहार करते हैं
- विश्लेषण पाइपलाइन
aiin,dy,chyजैसे दोहराए जाने वाले suffixes को हटाने के बाद multilingual SBERT से roots को embed करती है, clusters बनाती है, और पांडुलिपि की प्रत्येक पंक्ति को cluster sequence में map करती है - परिणाम Cluster 8 को high-frequency, low-diversity, और line-start position की ऊंची आवृत्ति वाला दिखाते हैं, जो किसी function-word group जैसा लगता है; वहीं Cluster 3 अधिक diversity और positional flexibility दिखाता है, इसलिए वह content-word root class जैसा प्रतीत होता है
- suffix हटाने से मिलते-जुलते stems अधिक सघन रूप से समूहित हुए और transition matrices अधिक साफ़ बने, लेकिन यह एक मजबूत preprocessing choice है जो वास्तविक morphological information हटा सकती है, meaningful inflectional variation को छिपा सकती है, या function-centered bias पैदा कर सकती है
- यह प्रोजेक्ट semantic translation की कोशिश नहीं करता, बल्कि data-driven तरीके से इस पर ध्यान देता है कि Voynich पांडुलिपि में syntax, function-word/content-word विभाजन, और section-wise linguistic variation जैसी भाषा-सदृश संरचनाएं दिखती हैं या नहीं
प्रोजेक्ट का उद्देश्य
- Voynich पांडुलिपि अब तक पढ़ी नहीं जा सकी है, और इसके लिए कोई सर्वमान्य linguistic या cryptographic solution मौजूद नहीं है
- यह प्रोजेक्ट statistical entropy tests और बिना आधार वाली व्याख्याओं के बीच का रास्ता अपनाते हुए computational linguistics techniques से यह आकलन करता है कि पांडुलिपि क्या संरचित, भाषा-सदृश व्यवहार encode करती है
- यह अनुवाद या GPT-शैली के अनुमान नहीं करता, बल्कि केवल भाषा जैसा व्यवहार करने वाली संरचना पर फोकस करता है
विश्लेषण पाइपलाइन और फ़ाइल संरचना
/data/में पूरा transcription, root word files, हटाए गए roots की सूची, cluster lookup tables, और line-wise cluster sequences शामिल हैं/scripts/विश्लेषण के चरणों को अलग-अलग चलाता हैcluster_roots.py: SBERT clustering और suffix removalmap_lines_to_clusters.py: पांडुलिपि की पंक्तियों को cluster ID से map करनाpos_model.py: cluster behavior के आधार पर grammatical roles का अनुमानtransition_matrix.py: cluster transitions बनाना और visualize करनाlexicon_builder.py: sections और roles के अनुसार candidate lexicon tables बनानाcluster_language_similarity.py: वैकल्पिक रूप से वास्तविक भाषाओं से clusters की तुलना करना
/results/में PCA-reduced cluster plots, Markov transition matrix heatmaps, cluster role summaries, transition matrix CSV, और candidate lexicon CSV संग्रहीत हैं
मुख्य योगदान
- multilingual SBERT का उपयोग करके suffix-removed roots की clustering
- function-word जैसे दिखने वाले clusters और content-word जैसे दिखने वाले clusters का विभाजन
- cluster sequences पर Markov-style transition modeling
- Botanical, Biological जैसी पांडुलिपि sections के अनुसार syntactic structure का mapping
- sections और roles के आधार पर data-driven lexicon hypothesis tables तैयार करना
preprocessing choices और उनका प्रभाव
- प्रत्येक शब्द से
aiin,dy,chyऔर उनके समान variants जैसे दोहराए जाने वाले suffixes हटाए जाते हैं - इस चयन का उद्देश्य variation के साथ दोहराए जाने वाले root forms को अलग करना था
- माना गया कि suffixes इनमें से कुछ हो सकते हैं
- ध्वन्यात्मक padding
- grammatical particles
- मंत्र या mnemonic जैसी पुनरावृत्ति
- noise
- suffix removal के बाद मिलते-जुलते stems अधिक सघन रूप से समूहित हुए, और transition matrix में अधिक साफ़ structural patterns दिखाई दिए
- हालांकि यह preprocessing तटस्थ नहीं है
- यह वास्तविक morphological information हटा सकती है
- यह meaningful inflectional variation को छिपा सकती है
- यह परिणामों को content के बजाय function-centered दिशा में bias कर सकती है
- suffix हटाए बिना, या suffixes को अलग token class की तरह लेकर pipeline फिर से चलाने वाली तुलना संभव है
देखी गई संरचना
- Cluster 8 में high frequency, low diversity, और बार-बार line-initial position दिखती है, इसलिए यह function-word group हो सकता है
- Cluster 3 अधिक diversity और positional flexibility दिखाता है, इसलिए यह root content-word class हो सकता है
- transition matrix में मजबूत internal structure दिखती है जो randomness से काफी दूर है
- cluster usage और parts-of-speech patterns, Biological और Botanical जैसी पांडुलिपि sections के अनुसार बदलते हैं
परिकल्पना और सीमाएं
- परिकल्पना यह है कि पांडुलिपि syllabic padding और positional repetition का उपयोग करने वाली structured constructed language या mnemonic language को encode करती है
- सीधे अनुवाद के बिना भी syntax, function-word/content-word विभाजन, और section-aware linguistic variation दिखाई देती है
- सीमाएं भी स्पष्ट की गई हैं
- clusters और words के बीच mapping अप्रत्यक्ष है, इसलिए frequency estimates overlap हो सकते हैं
- suffix removal heuristic है और meaningful endings हटा सकती है
- semantic translation का प्रयास नहीं किया जाता, केवल structural modeling किया जाता है
पुनरुत्पादन और हाल के बदलाव
- पुनरुत्पादन की प्रक्रिया dependencies install करने के बाद प्रत्येक script को क्रम से चलाने की है
pip install -r requirements.txtpython scripts/cluster_roots.pypython scripts/map_lines_to_clusters.pypython scripts/pos_model.pypython scripts/transition_matrix.pypython scripts/lexicon_builder.py
- visualization में PCA के अलावा UMAP, PaCMAP, और LocalMAP support जोड़ा गया है
- CLI reducer में बिना argument के PCA चुना जाता है, और
--reducer umap,--reducer pacmapको संभाला जाता है - प्रोजेक्ट की एक सीमा यह है कि यह Windows पर चला, लेकिन MacOS पर इसे सही से काम कराने में सफलता नहीं मिली
- मॉडल
all-MiniLM-L6-v2से बड़ेparaphrase-multilingual-mpnet-base-v2में बदला गया- README में size comparison
22M vs 110Mके रूप में लिखा है
- README में size comparison
1 टिप्पणियां
Hacker News टिप्पणियाँ
अगर आप PCA projection में clusters खोज रहे हैं, तो PaCMAP या LocalMAP जैसे आधुनिक dimension reduction algorithms से गहरी structure देखना बेहतर होगा
मैं Pol.is [1] नाम के meaning-discovery tool से जुड़े एक project पर काम कर रहा हूँ, और wiki-survey data को PCA के बजाय इन नए algorithms से फिर से project करके देखना काफ़ी हैरान करने वाली नई insights देता है
https://patcon.github.io/polislike-opinion-map-painting/
Painted groups: https://t.co/734qNlMdeh
अफ़सोस है कि यह desktop पर ही ठीक से काम करता है
[1]: https://www.technologyreview.com/2025/04/15/1115125/a-small-...
यह पुराने तरीके की “factor analysis” जैसा नहीं है
यहाँ इस्तेमाल किया गया text embedding model paraphrase-multilingual-MiniLM-L12-v2(https://huggingface.co/sentence-transformers/paraphrase-mult...) है, जो लगभग 4 साल पुराना model है
natural language processing की दुनिया में यह लगभग प्राचीन model जैसा है, और कुल मिलाकर LLM progress की वजह से छोटे embedding models में भी information expressiveness और embedding space की separability काफ़ी बेहतर हुई है
आजकल के text embedding models, भले ही उन्हें explicitly multilingual support के लिए train न किया गया हो, ऐसे data पर काफ़ी अच्छा काम करते हैं, इसलिए अपेक्षाकृत कम-ज्ञात भाषा Voynich Manuscript के लिए वे बेहतर हो सकते हैं
suffix हटाना या part-of-speech पहचानना जैसी traditional natural language processing techniques उल्टे embedding quality घटा सकती हैं। क्योंकि पूरे embedding के लिए ज़रूरी relevant context information गायब हो जाती है
all-mpnet-base-v2 या text-embedding-ada-002 जैसे models कैसे behave करेंगे, यह जानने की उत्सुकता है, और खासकर suffixes को बनाए रखते हुए root form में reduce किए बिना full contextual embeddings का उपयोग करना और भी interesting होगा
natural language processing के बारे में ज़्यादा नहीं जानता, लेकिन सोचता हूँ कि इस process में control group रखना समझदारी होगी या नहीं
उदाहरण के लिए, किसी इंसान से ऐसा text लिखवाया जाए जो इंसान को भाषा जैसा दिखे लेकिन असली भाषा न हो, फिर suffix removal और clustering जैसी वही प्रक्रिया लागू करके देखा जा सके कि similar results आने की संभावना है या नहीं
manuscript को कुछ समय तक देखने पर, कुछ pages में text illustrations से बहुत ज़्यादा चिपका हुआ होना suspicious लगा
सामान्य languages में words और letters की width अलग-अलग होती है, इसलिए line end के पास पहुँचने पर naturally line break डालकर नया word शुरू किया जाता है और overflow से बचा जाता है
लेकिन इस manuscript में उस तरह का break दिखता नहीं था, और कई जगह ऐसा लगा जैसे line end में जो भी character fit हो सकता था उसे ज़बरदस्ती ठूँस दिया गया हो
मैं analyze करना चाहता था कि line break से ठीक पहले और बाद में कौन से characters आते हैं, और क्या वे पूरे text से अलग हैं, लेकिन transcription नहीं मिल पाया
पूरी तरह amateur intuition से कहूँ तो यह कोई sophisticated artwork या hoax लगता है
सिर्फ PCA से भी separation अच्छे से दिखती है, लेकिन UMAP या t-SNE भी अच्छे रहेंगे
हर cluster को बाकी सभी clusters के reference में map करके देखना, analysis में अब और variability बची है या नहीं, दिखाने का अच्छा तरीका हो सकता है
लेकिन UMAP या t-SNE लगाने पर nonlinear perspective से ज़्यादा subtle patterns या failure cases पकड़े जा सकते हैं—यह सही है
cluster-to-cluster similarity matrix नहीं बनाई, लेकिन अब सुनकर लगता है कि actual signal कितना capture हुआ है, इसे validate करने के लिए यह natural next step है
मैं इसे किसी दूसरे modality के embeddings पर apply करना चाहता हूँ, लेकिन natural language processing side का experience ज़्यादा नहीं है
t-SNE से तो हर कीमत पर बचता हूँ। क्योंकि ऐसे plots में distances का लगभग कोई meaning नहीं होता, ऐसा मैं मानता हूँ
यह prescription नहीं, बस personal preference है
बहुत रोचक। https://www.voynich.ninja/index.php पर भी लिंक पोस्ट करना अच्छा रहेगा।
मैं SBERT या आधुनिक statistical natural language processing से कुल मिलाकर परिचित नहीं हूं, लेकिन SBERT वाक्य-स्तर पर काम करता है और Voynich manuscript में साफ़ वाक्य विभाजक नहीं हैं। सिर्फ़ शब्द और पैराग्राफ़ विभाजक हैं।
“Voynich शब्दों से आम suffix हटाने” वाली बात भी चिंताजनक है। Voynich manuscript के शब्द prefix + suffix जैसे दिखते हैं, और prefix काफ़ी छोटे होते हैं, इसलिए analysis शुरू करने से पहले ही लगभग आधी जानकारी खो गई हो सकती है।
यह देखना अच्छा होगा कि यह तरीका प्राकृतिक भाषा के अर्थपूर्ण text पर भी काम करता है या निरर्थक बकवास पर भी।
cipher text इन दोनों के बीच कहीं होता है; जितना सरल cipher होगा, उतना प्राकृतिक भाषा के करीब, और जितना जटिल cipher होगा, उतना निरर्थक बकवास के करीब।
Gordon Rugg, Torsten Timm और मैंने खुद अलग-अलग तरीकों से Voynich manuscript से बहुत मिलता-जुलता text बनाया है।
मेरा वाला यहां है: https://fmjlang.co.uk/voynich/generated-voynich-manuscript.h...
बराबर EVA version यहां है: https://fmjlang.co.uk/voynich/generated-voynich-manuscript.t...
README में शायद मुझसे छूट गया हो, लेकिन यह जानना चाहता हूं कि “शब्दों” की शुरुआती encoding कैसे की गई थी।
उदाहरण के लिए अगर "okeeodair" जैसा कोई शब्द है, तो मूल symbols में उसे कहां map किया जाता है?
इसलिए हम glyphs खुद से deal नहीं कर रहे, बल्कि EVA (European Voynich Alphabet) system पर आधारित standard transcription words से deal कर रहे हैं।
इस्तेमाल की गई transcription यहां मिल सकती है: https://www.voynich.nu/
इस project में उन्हें वापस glyphs में map नहीं किया गया; सब कुछ EVA transcription को starting point मानकर किया गया।
इसलिए अगर dataset में "okeeodair" है, तो वजह यह है कि मुझसे कहीं ज़्यादा समझदार किसी व्यक्ति ने glyph sequence देखकर उसे ऐसा कहने पर सहमति बनाई थी।
मैंने इसे सबसे रोचक hypotheses में से एक के तौर पर देखा: http://voynichproject.org/
लेखक ने माना कि Voynichese Germanic language family से है, और लगता है कुछ प्रगति भी हुई थी।
मैंने यह भी पढ़ा है कि यह Uralic या Finno-Ugric language family की हो सकती है।
यह approach शानदार है, और सोचता हूं कि अगर इसे किसी खास language family के हिसाब से tune किया जाए तो शायद यह और आगे जा सके।
Bernholz की site ठीक है, लेकिन Child का काम manuscript को सच में decipher करने में ज़्यादा रोशनी नहीं डालता।
यह किसी ऐसे व्यक्ति की बनाई चीज़ हो सकती है जो भाषा के नियम नहीं जानता, लेकिन भाषा की नकल कर रहा है: https://en.wikipedia.org/wiki/Naïve_art
मेरा मतलब मानसिक समस्या से नहीं है; यह दुर्लभ रूप से होने वाली घटना है।
Voynich naive art के काम की शर्तों में काफ़ी अच्छी तरह फिट बैठती है।
1.https://en.wikipedia.org/wiki/Edward_Kelley
2.https://en.wikipedia.org/wiki/Cardan_grille
15वीं सदी में text को encrypt करने की स्पष्ट वजह Inquisition और उस समय की दूसरी धार्मिक हिंसा से बचना रही होगी।
इसलिए वही natural language processing Gospel texts पर लागू करके correlation ढूंढना रोचक होगा।
पहले “word”-based comparison और फिर “character”-based comparison करना चाहिए। यानी Bible के graph और Voynich के graph की तुलना करने जैसा।
साथ ही भ्रम पैदा करने के लिए कुछ characters डाले गए हो सकते हैं।
उदाहरण के लिए कई variants वाला अजीब uppercase “P” जैसा symbol वास्तविक भाषा को दिखाने के लिए कभी-कभी बहुत ज़्यादा बार दिखता है, इसलिए वह deciphering से पहले हटाया जाने वाला obfuscation symbol हो सकता है।
असामान्य रूप से बार-बार आने वाले दूसरे characters भी इस्तेमाल न होने वाले dummy characters हो सकते हैं।
बेशक “बहुत ज़्यादा P हैं” वाली बात pure fiction वाली explanation से भी मेल खाती है।
अगर ऐसी handwritten book सिर्फ़ बकवास है और किसी भी तरह का cipher नहीं है, तो लगता है कि style, calligraphy, इस्तेमाल होने वाले शब्द, यहां तक कि अक्षर खुद भी page 1 से आखिरी page तक बदलने चाहिए।
बेशक pages reorder किए गए हो सकते हैं, फिर भी यह दिखना चाहिए।
जब तक लेखक ने ऐसी दर्जनों किताबें पहले से न लिखी हों और वे सब गायब न हो गई हों।
यह कोई बहुत नया विचार नहीं होगा, लेकिन सोचता हूं कि क्या ऐसे patterns पर कोई analysis है।
pages के बीच consistency पर कहीं कोई उल्लेख मैंने नहीं देखा।
scribes 2 माने जाते हैं (Prescott Currier देखें), और Lisa Fagin Davis के अनुसार 5 हैं।
Fagin Davis की position पर आधारित experiment discussion यहां है: https://www.voynich.ninja/thread-3783.html