1 points par GN⁺ 2025-05-19 | 1 commentaires | Partager sur WhatsApp
  • Ce dépôt applique, sans hypothèse de traduction, du clustering, une inférence des parties du discours, des transitions de Markov et des motifs par section afin de vérifier si le manuscrit de Voynich présente des motifs structurels se comportant comme une vraie langue
  • Le pipeline d’analyse supprime d’abord des éléments comme aiin, dy, chy, qui ressemblent à des suffixes répétitifs, puis encode les racines avec multilingual SBERT, crée des clusters et mappe chaque ligne du manuscrit vers une séquence de clusters
  • Les résultats montrent des différences structurelles telles que Cluster 8, qui semble être un groupe de mots-outils en raison de sa fréquence élevée, de sa faible diversité et de sa forte présence en début de ligne, tandis que Cluster 3 paraît davantage correspondre à une classe de racines de mots de contenu, avec une plus grande diversité et une position plus flexible
  • La suppression des suffixes regroupe plus étroitement des radicaux similaires et rend les matrices de transition plus nettes, mais c’est aussi un choix de prétraitement fort qui peut supprimer de véritables informations morphologiques, masquer des variations flexionnelles significatives ou introduire un biais centré sur la fonction
  • Ce projet ne tente pas de traduction sémantique ; il se concentre sur un examen fondé sur les données pour déterminer si le manuscrit de Voynich présente des structures analogues à une langue, comme la syntaxe, la séparation entre mots-outils et mots de contenu, ou des variations linguistiques selon les sections

Objectif du projet

  • Le manuscrit de Voynich n’est toujours pas déchiffré, et il n’existe pas de solution linguistique ou cryptographique faisant consensus
  • Ce projet se situe à mi-chemin entre les tests d’entropie statistique et les interprétations sans fondement, en utilisant des techniques de linguistique computationnelle pour évaluer si le manuscrit encode un comportement structuré de type linguistique
  • Il ne propose ni traduction ni spéculation à la GPT ; il se concentre uniquement sur l’existence d’une structure se comportant comme une langue

Pipeline d’analyse et organisation des fichiers

  • /data/ contient la transcription complète, le fichier des mots-racines, la liste des racines supprimées, la table de correspondance des clusters et les séquences de clusters par ligne
  • /scripts/ exécute séparément les étapes de l’analyse
    • cluster_roots.py : clustering SBERT et suppression des suffixes
    • map_lines_to_clusters.py : mappage des lignes du manuscrit vers des ID de clusters
    • pos_model.py : inférence des rôles grammaticaux à partir du comportement des clusters
    • transition_matrix.py : création et visualisation des transitions entre clusters
    • lexicon_builder.py : génération de tables de vocabulaire candidates par section et par rôle
    • cluster_language_similarity.py : comparaison optionnelle entre les clusters et de vraies langues
  • /results/ stocke les figures de clusters réduits par PCA, les heatmaps des matrices de transition de Markov, les résumés des rôles des clusters, les CSV des matrices de transition et les CSV du vocabulaire candidat

Contributions clés

  • Utilisation de multilingual SBERT pour regrouper des racines après suppression des suffixes
  • Distinction entre des clusters ressemblant à des mots-outils et d’autres ressemblant à des mots de contenu
  • Modélisation des transitions de type Markov sur les séquences de clusters
  • Cartographie de la structure syntaxique selon les sections du manuscrit comme Botanical ou Biological
  • Génération de tables hypothétiques de vocabulaire fondées sur les données selon les sections et les rôles

Choix de prétraitement et leurs effets

  • Suppression, dans chaque mot, de suffixes répétitifs apparents comme aiin, dy, chy et de variantes proches
  • L’objectif de ce choix était d’isoler des formes racines qui se répètent avec des variations
  • Les suffixes sont considérés comme pouvant relever de l’un des cas suivants
    • remplissage phonétique
    • particules grammaticales
    • répétition de type incantation ou mnémotechnique
    • bruit
  • Après suppression des suffixes, des radicaux similaires sont regroupés plus étroitement, et des motifs structurels plus nets apparaissent dans la matrice de transition
  • Ce prétraitement n’est toutefois pas neutre
    • il a pu supprimer de véritables informations morphologiques
    • il a pu masquer des variations flexionnelles significatives
    • il a pu biaiser les résultats vers la fonction plutôt que le contenu
  • Il est possible de relancer le pipeline sans supprimer les suffixes, ou en traitant les suffixes comme une classe de tokens distincte

Structures observées

  • Cluster 8 présente une fréquence élevée, une faible diversité et de fréquentes positions en début de ligne, ce qui en fait un candidat possible au rôle de groupe de mots-outils
  • Cluster 3 montre une forte diversité et une position flexible, ce qui en fait un candidat possible au rôle de classe de mots de contenu racinaires
  • La matrice de transition montre une forte structure interne, loin d’un comportement aléatoire
  • L’usage des clusters et les schémas de parties du discours varient selon les sections du manuscrit, comme Biological et Botanical

Hypothèses et limites

  • L’hypothèse posée est que le manuscrit encode une langue construite structurée ou une langue mnémotechnique utilisant un remplissage syllabique et des répétitions positionnelles
  • Même sans traduction directe, il présenterait une syntaxe, une séparation entre mots-outils et mots de contenu, ainsi que des variations linguistiques sensibles aux sections
  • Les limites sont également explicitées
    • la correspondance entre clusters et mots est indirecte, de sorte que les estimations de fréquence peuvent se recouper
    • la suppression des suffixes est heuristique et a pu retirer des terminaisons significatives
    • aucune traduction sémantique n’est tentée, seule une modélisation structurelle est effectuée

Reproduction et changements récents

  • La procédure de reproduction consiste à installer les dépendances puis à exécuter chaque script dans l’ordre
    • 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
  • En plus de PCA, la visualisation prend désormais en charge UMAP, PaCMAP et LocalMAP
  • Le réducteur CLI utilise PCA par défaut sans argument et prend en charge --reducer umap, --reducer pacmap
  • Le projet fonctionne sous Windows, mais comporte la limite de ne pas avoir été rendu pleinement fonctionnel sur MacOS
  • Le modèle est passé de all-MiniLM-L6-v2 au plus grand paraphrase-multilingual-mpnet-base-v2
    • le README indique une comparaison de taille 22M vs 110M

1 commentaires

 
GN⁺ 2025-05-19
Commentaires sur Hacker News
  • Si l’on cherche des clusters dans une projection PCA, il vaut mieux examiner la structure plus en profondeur avec des algorithmes modernes de réduction de dimension comme PaCMAP ou LocalMAP
    Je travaille sur un projet lié à un outil de compréhension sémantique appelé Pol.is [1] ; en reprojetant des données d’enquêtes wiki avec ces nouveaux algorithmes plutôt qu’avec PCA, les nouvelles observations sont assez surprenantes
    https://patcon.github.io/polislike-opinion-map-painting/
    Painted groups: https://t.co/734qNlMdeh
    Dommage que cela ne fonctionne correctement que sur desktop
    [1]: https://www.technologyreview.com/2025/04/15/1115125/a-small-...

    • Je recommande d’essayer la TDA. Le « mapper », ou plus largement l’ensemble des méthodes utilisant une connectivité fondée sur l’estimation de densité par noyau, ouvre un tout autre monde
      Ce n’est pas la vieille « analyse factorielle »
    • Dans l’interprétabilité des modèles LLM aussi, on cherche des représentations de concepts avec des autoencodeurs parcimonieux (https://openai.com/index/extracting-concepts-from-gpt-4/), et plus récemment on utilise aussi des sondes linéaires
    • Pour réduire des embeddings, j’ai obtenu de bien meilleurs résultats avec UMAP qu’avec PCA ou t-SNE
  • Le modèle d’embeddings de texte utilisé ici est paraphrase-multilingual-MiniLM-L12-v2 (https://huggingface.co/sentence-transformers/paraphrase-mult...), un modèle qui a environ quatre ans
    Dans le monde du traitement automatique du langage, c’est pratiquement de l’archéologie, et grâce aux progrès généraux des LLM, même les petits modèles d’embeddings se sont nettement améliorés en capacité de représentation de l’information et en séparabilité de l’espace d’embedding
    Les modèles récents d’embeddings de texte fonctionnent plutôt bien sur ce type de données même sans avoir été explicitement entraînés pour le multilingue ; ils pourraient donc être meilleurs pour une langue relativement inconnue comme le manuscrit de Voynich
    Les techniques traditionnelles de traitement automatique du langage, comme la suppression des suffixes ou l’identification des parties du discours, peuvent au contraire dégrader la qualité des embeddings, car elles suppriment des informations contextuelles pertinentes nécessaires à l’embedding global

    • J’ai utilisé paraphrase-multilingual-MiniLM-L12-v2 comme valeur par défaut surtout pour sa vitesse et sa large compatibilité, mais il est vrai qu’il s’agit désormais d’un modèle ancien
      Je serais curieux de voir comment se comporteraient des modèles comme all-mpnet-base-v2 ou text-embedding-ada-002, et ce serait particulièrement intéressant d’utiliser des embeddings de contexte complet en conservant les suffixes plutôt qu’en réduisant les mots à une forme racine
  • Je ne connais pas bien le traitement automatique du langage, mais je me demande s’il serait pertinent d’avoir un groupe témoin dans ce processus
    Par exemple, on pourrait demander à des gens d’écrire un texte qui ressemble à une langue sans en être une, puis appliquer le même processus — suppression des suffixes, clustering, etc. — afin de vérifier si des résultats similaires peuvent apparaître

    • S’il existe une hypothèse sur le mode de rédaction, on pourrait par exemple générer du texte avec une méthode de type grille de Cardan et voir si les mêmes caractéristiques apparaissent
    • Exactement. Du coup, je me demande pourquoi on n’a pas simplement demandé à 100 personnes de rédiger un manuscrit de Voynich, puis entraîné le modèle sur ce jeu de données
  • J’ai examiné le manuscrit pendant un certain temps, et j’ai trouvé suspect que, sur certaines pages, le texte soit collé de très près aux illustrations
    Dans une langue ordinaire, comme la largeur des mots et des lettres varie, on insère naturellement un saut de ligne quand on approche de la fin d’une ligne pour commencer un nouveau mot et éviter le débordement
    Or, dans ce manuscrit, il ne semblait pas y avoir ce type de rupture, et de nombreux passages donnaient l’impression qu’on avait forcé l’insertion de toutes les lettres pouvant tenir en fin de ligne
    J’aurais voulu analyser quelles lettres apparaissent juste avant et juste après les sauts de ligne, et si cela diffère du reste du texte, mais je n’ai pas trouvé de transcription
    À mon intuition totalement amateur, cela ressemble soit à une œuvre d’art élaborée, soit à une mystification

    • Certaines langues coupent aussi les mots en fin de ligne
  • Même avec PCA seule, la séparation apparaît clairement, mais UMAP ou t-SNE pourraient aussi être intéressants
    Mapper chaque cluster par rapport à tous les autres pourrait être un bon moyen de montrer qu’il ne reste plus de variabilité dans l’analyse

    • Comme PCA donnait dès le départ une séparation étonnamment nette, je l’ai conservée pour les premières exécutions
      Mais il est vrai qu’avec UMAP ou t-SNE, on pourrait détecter des motifs plus subtils ou des cas d’échec depuis un point de vue non linéaire
      Je n’ai pas construit de matrice de similarité entre clusters, mais maintenant que vous le dites, ce serait une étape suivante naturelle pour vérifier à quel point le signal réel a été capté
    • Je serais curieux de voir un exemple de la manière de réaliser ce mapping de référence
      J’aimerais l’appliquer à des embeddings d’autres modalités, mais je n’ai pas beaucoup d’expérience côté traitement automatique du langage
    • Quand la séparation est nette avec PCA, personnellement j’ai tendance à éviter UMAP, parce qu’il est plus facile d’interpréter les distances relatives entre tous les points
      J’évite t-SNE à tout prix, car j’estime que les distances dans ce type de visualisation n’ont presque aucun sens
      Ce n’est pas une prescription, juste une préférence personnelle
  • Très intéressant. Ce serait bien de poster aussi un lien sur https://www.voynich.ninja/index.php
    Je ne suis pas familier avec SBERT ni, plus largement, avec le traitement statistique moderne du langage naturel, mais SBERT fonctionne à l’échelle de la phrase, et le manuscrit de Voynich n’a pas de séparateurs de phrases clairs. Il n’y a que des séparateurs de mots et de paragraphes
    Le fait de « supprimer les suffixes courants des mots de Voynich » m’inquiète aussi. Les mots du manuscrit de Voynich ressemblent à préfixe + suffixe, et comme les préfixes sont assez courts, on a peut-être perdu près de la moitié de l’information avant même de commencer l’analyse
    Ce serait bien de vérifier si cette méthode fonctionne aussi sur des textes significatifs en langue naturelle, et sur du charabia dénué de sens
    Les textes chiffrés se situent quelque part entre les deux : plus le chiffrement est simple, plus il est proche d’une langue naturelle ; plus il est complexe, plus il ressemble à du charabia sans signification
    Gordon Rugg, Torsten Timm et moi-même avons généré, par des méthodes différentes, des textes très proches du manuscrit de Voynich
    Le mien est ici : https://fmjlang.co.uk/voynich/generated-voynich-manuscript.h...
    La version EVA équivalente est ici : https://fmjlang.co.uk/voynich/generated-voynich-manuscript.t...

  • Je l’ai peut-être manqué dans le README, mais je me demande comment l’encodage initial des « mots » a été fait
    Par exemple, s’il y a un mot comme "okeeodair", je me demande à quoi cela correspond dans les symboles d’origine

    • Un mot comme "okeeodair" vient directement du fichier de transcription EVA, qui mappe les glyphes originaux de Voynich vers des approximations ASCII
      On ne manipule donc pas les glyphes eux-mêmes, mais des mots de transcription standard fondés sur le système EVA (European Voynich Alphabet)
      La transcription utilisée se trouve ici : https://www.voynich.nu/
      Dans ce projet, je n’ai pas refait de mapping vers les glyphes ; tout part de la transcription EVA
      Donc si le jeu de données contient "okeeodair", c’est parce que quelqu’un de bien plus intelligent que moi a regardé la séquence de glyphes et qu’il a été convenu de l’appeler ainsi
  • J’ai vu ceci comme l’une des hypothèses les plus intéressantes : http://voynichproject.org/
    L’auteur suppose que le Voynichese appartient à la famille des langues germaniques, et il semble y avoir eu quelques progrès
    J’ai aussi vu des hypothèses selon lesquelles il pourrait s’agir d’une langue ouralienne ou finno-ougrienne
    Cette approche est excellente, et je me demande si elle pourrait aller plus loin en l’adaptant à une famille de langues précise

    • Ce fil couvre les différentes affirmations de « déchiffrement » : https://www.voynich.ninja/thread-4341.html
      Le site de Bernholz est correct, mais les travaux de Child n’éclairent pas vraiment le déchiffrement du manuscrit
    • Vu à quel point le manuscrit reste indéchiffrable, j’ai personnellement tendance à penser qu’il s’agit de l’œuvre d’un artiste naïf, sans langue sous-jacente
      Cela pourrait être l’imitation d’une langue par quelqu’un qui n’en connaît pas les règles : https://en.wikipedia.org/wiki/Naïve_art
      Je ne veux pas dire qu’il s’agit d’un problème mental ; c’est un phénomène rare
      Le manuscrit de Voynich correspond assez bien aux critères d’une œuvre d’art naïf
    • Edward Kelly[1] était au bon endroit au bon moment, et je me souviens que des sources lues il y a longtemps indiquaient qu’il connaissait la grille de Cardan[2]. Je n’arrive plus à retrouver la source maintenant, mais ce seul point m’a assez convaincu qu’il est l’auteur le plus plausible et que le livre avait pour but une plaisanterie ou une escroquerie
      1.https://en.wikipedia.org/wiki/Edward_Kelley
      2.https://en.wikipedia.org/wiki/Cardan_grille
  • Au XVe siècle, la raison évidente de chiffrer un texte aurait été d’éviter l’Inquisition et les autres violences religieuses de l’époque
    Il serait donc intéressant d’appliquer le même traitement du langage naturel aux Évangiles pour chercher des corrélations
    Il faudrait sans doute commencer par une comparaison basée sur les « mots », puis passer à une comparaison basée sur les « caractères ». Autrement dit, comparer le graphe de la Bible avec celui de Voynich
    Il se peut aussi que certains caractères aient été ajoutés pour semer la confusion
    Par exemple, certains symboles comme cet étrange « P » majuscule aux nombreuses variantes apparaissent parfois trop souvent pour représenter une vraie langue ; ils pourraient donc être des symboles d’obfuscation à retirer avant le déchiffrement
    D’autres caractères anormalement fréquents pourraient aussi être des caractères factices inutilisés
    Bien sûr, le phénomène du « trop grand nombre de P » colle aussi avec l’explication d’une pure fiction

  • Si un livre manuscrit de ce genre n’était que du charabia, et pas un chiffrement d’aucune sorte, alors le style, la calligraphie, les mots employés, voire les lettres elles-mêmes, devraient évoluer de la première à la dernière page
    Bien sûr, les pages ont pu être réordonnées, mais cela devrait tout de même se voir
    À moins que l’auteur ait déjà écrit des dizaines de livres de ce type et qu’ils aient tous disparu
    Ce n’est sans doute pas une idée très nouvelle, mais je me demande s’il existe une analyse de ce genre de motifs
    Je n’ai vu nulle part de mention de la cohérence entre les pages

    • Beaucoup de travaux ont déjà été menés sur la cohérence entre les pages
      On considère parfois qu’il y avait 2 scribes (voir Prescott Currier), tandis que Lisa Fagin Davis en voit 5
      Une discussion expérimentale fondée sur la position de Fagin Davis se trouve ici : https://www.voynich.ninja/thread-3783.html