1 पॉइंट द्वारा GN⁺ 2025-05-19 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह रिपॉज़िटरी यह जांचने के लिए क्लस्टरिंग, 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 removal
    • map_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.txt
    • python scripts/cluster_roots.py
    • python scripts/map_lines_to_clusters.py
    • python scripts/pos_model.py
    • python scripts/transition_matrix.py
    • python 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 के रूप में लिखा है

1 टिप्पणियां

 
GN⁺ 2025-05-19
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-...

    • TDA आज़माने की सलाह दूँगा। “mapper” या, व्यापक रूप से कहें तो kernel density-based connectivity इस्तेमाल करने वाली approaches एक बिल्कुल अलग दुनिया खोल देती हैं
      यह पुराने तरीके की “factor analysis” जैसा नहीं है
    • LLM model interpretability में भी sparse autoencoders से concept representations खोजे जा रहे हैं(https://openai.com/index/extracting-concepts-from-gpt-4/), और हाल में linear probes भी इस्तेमाल हो रहे हैं
    • embeddings को reduce करते समय PCA या t-SNE की तुलना में UMAP से मुझे कहीं बेहतर results मिले हैं
  • यहाँ इस्तेमाल किया गया 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 गायब हो जाती है

    • paraphrase-multilingual-MiniLM-L12-v2 को मुख्यतः speed और broad compatibility के कारण default के रूप में इस्तेमाल किया गया, लेकिन आज के हिसाब से यह पुराना model है—यह बात सही है
      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 आने की संभावना है या नहीं

    • अगर writing method के बारे में कोई hypothesis है, जैसे Cardan grille जैसी method से text generate करके देखा जा सकता है कि वही characteristics दिखती हैं या नहीं
    • सही। इसलिए समझ नहीं आता कि बस 100 लोगों से Voynich Manuscript लिखवाकर उस dataset पर train क्यों नहीं किया गया
  • 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 लगता है

    • कुछ languages line ends पर words को split भी करती हैं
  • सिर्फ PCA से भी separation अच्छे से दिखती है, लेकिन UMAP या t-SNE भी अच्छे रहेंगे
    हर cluster को बाकी सभी clusters के reference में map करके देखना, analysis में अब और variability बची है या नहीं, दिखाने का अच्छा तरीका हो सकता है

    • PCA में शुरुआती stage पर surprisingly clean separation मिली, इसलिए initial runs में वही रखा
      लेकिन UMAP या t-SNE लगाने पर nonlinear perspective से ज़्यादा subtle patterns या failure cases पकड़े जा सकते हैं—यह सही है
      cluster-to-cluster similarity matrix नहीं बनाई, लेकिन अब सुनकर लगता है कि actual signal कितना capture हुआ है, इसे validate करने के लिए यह natural next step है
    • इस reference mapping को कैसे perform किया जाता है, इसका कोई example है क्या?
      मैं इसे किसी दूसरे modality के embeddings पर apply करना चाहता हूँ, लेकिन natural language processing side का experience ज़्यादा नहीं है
    • अगर PCA में separation अच्छे से दिखे, तो personally मैं UMAP से बचता हूँ। क्योंकि सभी points के बीच relative distances को interpret करना आसान रहता है
      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 किया जाता है?

    • "okeeodair" जैसे शब्द सीधे EVA transcription file से आते हैं, जिसमें मूल Voynich glyphs को ASCII approximation में 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 किया जाए तो शायद यह और आगे जा सके।

    • अलग-अलग “decipherment” दावों पर यह thread चर्चा करता है: https://www.voynich.ninja/thread-4341.html
      Bernholz की site ठीक है, लेकिन Child का काम manuscript को सच में decipher करने में ज़्यादा रोशनी नहीं डालता।
    • manuscript अब तक इतनी undecipherable है, इसे देखकर व्यक्तिगत रूप से मुझे लगता है कि यह naive artist का काम है और इसके पीछे कोई भाषा नहीं है।
      यह किसी ऐसे व्यक्ति की बनाई चीज़ हो सकती है जो भाषा के नियम नहीं जानता, लेकिन भाषा की नकल कर रहा है: https://en.wikipedia.org/wiki/Naïve_art
      मेरा मतलब मानसिक समस्या से नहीं है; यह दुर्लभ रूप से होने वाली घटना है।
      Voynich naive art के काम की शर्तों में काफ़ी अच्छी तरह फिट बैठती है।
    • Edward Kelly[1] सही जगह और सही समय पर मौजूद था, और बहुत पहले पढ़ी गई सामग्री में मुझे याद है कि उसके Cardan grille[2] से परिचित होने के सबूत भी थे। अभी source नहीं मिल रहा, लेकिन सिर्फ़ यही बात मुझे काफ़ी हद तक आश्वस्त करती है कि वही सबसे plausible लेखक था और किताब मज़ाक या धोखाधड़ी के मकसद से बनाई गई थी।
      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 पर कहीं कोई उल्लेख मैंने नहीं देखा।

    • pages के बीच consistency पर पहले ही काफ़ी काम हो चुका है।
      scribes 2 माने जाते हैं (Prescott Currier देखें), और Lisa Fagin Davis के अनुसार 5 हैं।
      Fagin Davis की position पर आधारित experiment discussion यहां है: https://www.voynich.ninja/thread-3783.html