1 ポイント 投稿者 GN⁺ 2025-05-19 | 1件のコメント | WhatsAppで共有
  • このリポジトリは、ヴォイニッチ手稿が実際の言語のように振る舞う構造的パターンを持つかどうかを確かめるため、翻訳の推測を行わずにクラスタリング、品詞推定、Markov遷移、セクション別パターンを適用する
  • 分析パイプラインは、反復接尾辞のように見える aiin, dy, chy などを除去した後、multilingual SBERTで語根を埋め込み、クラスタを作成し、手稿の各行をクラスタ列へマッピングする
  • 結果は、Cluster 8 が高頻度・低多様性・行頭位置での出現頻度が高く機能語グループのように見える一方、Cluster 3 は多様性と位置の柔軟性が高く内容語の語根クラスのように見える、という構造差を示している
  • 接尾辞除去は類似語幹をより密に束ね、遷移行列をよりすっきりさせたが、実際の形態情報を除去したり、意味のある屈折変化を覆い隠したり、機能中心のバイアスを生みうる強い前処理選択でもある
  • このプロジェクトは意味の翻訳を試みず、ヴォイニッチ手稿が構文、機能語/内容語の分離、セクション別の言語変化のような言語類似構造を示すかをデータ駆動で検討することに焦点を当てる

プロジェクトの目的

  • ヴォイニッチ手稿はまだ解読されておらず、合意された言語学的・暗号学的解法が存在しない
  • このプロジェクトは、統計的エントロピー検査と根拠のない解釈の中間にあるアプローチとして、計算言語学の手法を使って手稿が構造化された言語類似の振る舞いをエンコードしているかを評価する
  • 翻訳やGPT的な推測は行わず、言語のように振る舞う構造があるかどうかだけに集中する

分析パイプラインとファイル構成

  • /data/ には、全転写、語根単語ファイル、除去された語根リスト、クラスタ参照表、行ごとのクラスタ列が含まれる
  • /scripts/ は分析ステップを分けて実行する
    • cluster_roots.py: SBERTクラスタリングと接尾辞除去
    • map_lines_to_clusters.py: 手稿の行をクラスタIDへマッピング
    • pos_model.py: クラスタの振る舞いに基づく文法役割の推定
    • transition_matrix.py: クラスタ遷移の作成と可視化
    • lexicon_builder.py: セクションと役割別の候補語彙表を生成
    • cluster_language_similarity.py: 必要に応じて実在言語とクラスタを比較
  • /results/ には、PCAで縮約したクラスタ図、Markov遷移行列ヒートマップ、クラスタ役割サマリー、遷移行列CSV、候補語彙CSVが保存される

主な貢献

  • multilingual SBERTを使って接尾辞除去済み語根をクラスタリングする
  • 機能語のように見えるクラスタと内容語のように見えるクラスタを区別する
  • クラスタ列に対してMarkov型の遷移モデリングを行う
  • Botanical、Biological など手稿のセクションに応じて構文構造をマッピングする
  • セクションと役割を基準に、データ駆動の語彙仮説表を生成する

前処理の選択とその影響

  • 反復する接尾辞のように見える aiin, dy, chy および類似の変形を各単語から除去する
  • この選択の目的は、変形とともに繰り返される語根形を分離することにあった
  • 接尾辞は次のいずれかである可能性があるとみなす
    • 音声的パディング
    • 文法的粒子
    • 呪文や記憶術のような反復
    • ノイズ
  • 接尾辞除去後は類似語幹がより密にまとまり、遷移行列でより明瞭な構造パターンが現れる
  • ただし、この前処理は中立ではない
    • 実際の形態情報を除去した可能性がある
    • 意味のある屈折変化を隠した可能性がある
    • 内容よりも機能中心に結果をバイアスした可能性がある
  • 接尾辞を除去しない、または接尾辞を別個のトークンクラスとして扱ってパイプラインを再実行する比較も可能である

観察された構造

  • Cluster 8 は高頻度、低多様性、頻繁な行頭位置を示し、機能語グループである可能性がある
  • Cluster 3 は高い多様性と柔軟な位置を示し、語根ベースの内容語クラスである可能性がある
  • 遷移行列はランダムとはほど遠い強い内部構造を示す
  • クラスタ使用と品詞パターンは、Biological、Botanical のような手稿セクションごとに異なる

仮説と限界

  • この手稿は、音節パディングと位置反復を用いる構造化された人工言語または記憶術言語をエンコードしているという仮説を置く
  • 直接翻訳なしでも、構文、機能語/内容語の分離、セクション認識型の言語変化が現れると考える
  • 限界も明示されている
    • クラスタと単語のマッピングは間接的であり、頻度推定が重複する可能性がある
    • 接尾辞除去はヒューリスティックであり、意味のある語尾を除去した可能性がある
    • 意味の翻訳は試みず、構造モデリングのみを行う

再現手順と最近の変更

  • 再現手順は、依存関係をインストールした後に各スクリプトを順に実行する方式である
    • 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
  • 可視化はPCAに加えてUMAPPaCMAP、LocalMAPのサポートが追加された
  • CLIリデューサーは引数なしがPCAで、--reducer umap, --reducer pacmap を処理する
  • プロジェクトはWindowsでは動作したが、MacOSでは正しく動作させられなかったという制限がある
  • モデルは all-MiniLM-L6-v2 から、より大きい paraphrase-multilingual-mpnet-base-v2 に変更された
    • README にはサイズ比較が 22M vs 110M と記載されている

1件のコメント

 
GN⁺ 2025-05-19
Hacker Newsのコメント
  • PCA投影でクラスタを探しているなら、PaCMAPやLocalMAPのような新しい次元削減アルゴリズムで、より深い構造を見るのがよい
    Pol.is [1]という意味把握ツールに関連するプロジェクトをやっているが、Wiki調査データをPCAの代わりにこうした新しいアルゴリズムで再投影してみたところ、新しい洞察はかなり驚くものだった
    https://patcon.github.io/polislike-opinion-map-painting/
    Painted groups: https://t.co/734qNlMdeh
    デスクトップでしかまともに動かない点は惜しい
    [1]: https://www.technologyreview.com/2025/04/15/1115125/a-small-...

    • TDAを試してみることを勧める。「mapper」や、より広くはカーネル密度ベースの連結性を使う方法全般が、まったく別の世界を開いてくれる
      昔ながらの「因子分析」とは違う
    • LLMモデルの解釈可能性でも、スパースオートエンコーダで概念表現を探しており(https://openai.com/index/extracting-concepts-from-gpt-4/)、最近は線形プローブも使われている
    • 埋め込みを削減する際、PCAやt-SNEよりもUMAPでずっと良い結果が得られた
  • ここで使われたテキスト埋め込みモデルはparaphrase-multilingual-MiniLM-L12-v2(https://huggingface.co/sentence-transformers/paraphrase-mult...)だが、約4年前のモデルである
    自然言語処理の世界では事実上古代のモデルに近く、全般的なLLMの進歩のおかげで、小さな埋め込みモデルでさえ情報表現力と埋め込み空間の分離性が大きく向上している
    最近のテキスト埋め込みモデルは、明示的に多言語対応の学習をしていなくてもこうしたデータでかなりうまく機能するため、比較的知られていない言語であるヴォイニッチ写本にはより適しているかもしれない
    接尾辞を取り除いたり品詞を識別したりする従来型の自然言語処理手法は、むしろ埋め込み品質を下げる可能性がある。全体の埋め込みに必要な関連文脈情報が失われるためだ

    • paraphrase-multilingual-MiniLM-L12-v2は主に速度と幅広い互換性のためにデフォルトとして使ったが、今の基準では古いモデルであることは確かだ
      all-mpnet-base-v2やtext-embedding-ada-002のようなモデルがどう動くかは気になるし、特に接尾辞を残したまま語根形に縮約せず、全文脈埋め込みを使うとさらに面白そうだ
  • 自然言語処理には詳しくないが、このプロセスに対照群を置くことに意味があるのか気になる
    たとえば人に、言語のように見えるが実際の言語ではない文章を書かせたうえで、接尾辞除去やクラスタリングなど同じ処理を適用すれば、似た結果が出る可能性があるかを確認できそうだ

    • 作成方法について仮説があるなら、たとえばCardan grille方式のようなものでテキストを生成し、同じ特徴が現れるか見られそうだ
    • その通り。だから、なぜ単に100人にヴォイニッチ写本を書かせて、そのデータセットで学習しなかったのか疑問だ
  • 写本をしばらく眺めていたが、いくつかのページで文字が挿絵に近すぎる点が怪しかった
    通常の言語では単語や文字の幅が異なるため、行末に近づくと自然に改行を入れて新しい単語を始め、はみ出しを避けることになる
    ところがこの写本にはそうした種類の切れ目が見当たらず、行末に入れられる文字なら何でも無理やり詰め込んだように見える箇所が多かった
    改行の直前と直後にどの文字が現れるのか、本文全体と違いがあるのかを分析したかったが、転写本を見つけられなかった
    完全に素人的な勘では、精巧な芸術作品か詐欺のように思える

    • 言語によっては行末で単語を分かち書きすることもある
  • PCAだけでも分離はよく見えるが、UMAPやt-SNEも良さそうだ
    各クラスタを他のすべてのクラスタに対して基準マッピングしてみると、分析でそれ以上の変動性が残っていないかを示す良い方法になり得る

    • PCAで最初から意外なほどきれいな分離が出たので、初期の実行ではそのまま使った
      ただしUMAPやt-SNEを適用すれば、非線形の観点からより微妙なパターンや失敗例を捉えられるという点はその通りだ
      クラスタ間の類似度行列は作らなかったが、聞いてみると、実際のシグナルをどれだけ捉えられたかを検証する次の段階として自然に思える
    • この基準マッピングをどう実行するのか、例があるのか気になる
      別の様式の埋め込みに適用してみたいが、自然言語処理方面の経験はあまりない
    • PCAで分離がよく見えるなら、個人的にはUMAPは避ける方だ。すべての点の間の相対距離を解釈しやすいからだ
      t-SNEはどんな代償を払ってでも避ける。ああした図での距離にはほとんど意味がないと考えているからだ
      これは処方箋ではなく個人の好みだ
  • 非常に興味深いです。https://www.voynich.ninja/index.php にもリンクを投稿してみるとよさそうです。
    SBERTや現代の統計的自然言語処理全般には詳しくありませんが、SBERTは文単位で動作する一方、ヴォイニッチ写本には明確な文の区切り記号がありません。単語と段落の区切りだけがあります。
    「ヴォイニッチ語の単語から一般的な接尾辞を取り除く」という点も気になります。ヴォイニッチ写本の単語は接頭辞+接尾辞のように見えますが、接頭辞がかなり短いため、分析を始める前に情報の半分ほどを失っている可能性があります。
    この方法が自然言語の意味のあるテキストでも機能するのか、無意味なでたらめでも機能するのかを検証してみるとよさそうです。
    暗号文はその中間のどこかにあり、単純な暗号ほど自然言語に近く、複雑な暗号ほど無意味なでたらめに近くなります。
    Gordon Rugg、Torsten Timm、そして私自身は、それぞれ異なる方法でヴォイニッチ写本に非常によく似たテキストを生成しました。
    私のものはこちらにあります: https://fmjlang.co.uk/voynich/generated-voynich-manuscript.h...
    同等のEVA版はこちらにあります: https://fmjlang.co.uk/voynich/generated-voynich-manuscript.t...

  • READMEで見落としているかもしれませんが、「単語」の初期エンコーディングをどう行ったのか気になります。
    たとえば "okeeodair" のような単語がある場合、それを元の記号ではどこにマッピングしているのか知りたいです。

    • "okeeodair" のような単語は、元のヴォイニッチのグリフをASCII近似にマッピングしたEVA転写ファイルから直接来ています。
      そのためグリフ自体を扱っているのではなく、EVA(European Voynich Alphabet)体系に基づく標準的な転写語を扱っています。
      使用した転写本はこちらで見つかります: https://www.voynich.nu/
      このプロジェクトではグリフへ再マッピングしておらず、すべてはEVA転写を出発点にしています。
      したがってデータセットに "okeeodair" があるなら、それは私よりはるかに賢い誰かがグリフ列を見て、そう呼ぶことに合意したからです。
  • 最も興味深い仮説の一つとしてこれを見ました: http://voynichproject.org/
    著者はVoynicheseがゲルマン語派だと仮定しており、ある程度進展があったように見えます。
    ウラル語族やフィン・ウゴル語派の可能性があるという話も見たことがあります。
    このアプローチは素晴らしく、特定の語族に合わせて調整すれば、さらに先へ進めるのではないかと気になります。

    • さまざまな「解読」主張については、このスレッドで扱われています: https://www.voynich.ninja/thread-4341.html
      Bernholzのサイトは悪くありませんが、Childの研究は実際のところ写本の解読に大きな光を当ててはいません。
    • 写本がここまで解読不能であることを考えると、個人的にはナイーブ・アーティストの作品で、その背後に言語はないのではないかと見ています。
      言語の規則を知らない人が言語をまねたものかもしれません: https://en.wikipedia.org/wiki/Naïve_art
      精神的な問題という意味ではなく、まれに起こる現象です。
      ヴォイニッチ写本はナイーブ・アート作品の条件にかなりよく当てはまります。
    • Edward Kelly[1]は適切な場所と時代におり、以前読んだ資料では、彼がCardan grille[2]に通じていたという証拠もあったと記憶しています。今は出典を見つけられませんが、その点だけでも彼が最もありそうな著者であり、この本はいたずらか詐欺を目的にしたものだとかなり納得しました。
      1.https://en.wikipedia.org/wiki/Edward_Kelley
      2.https://en.wikipedia.org/wiki/Cardan_grille
  • 15世紀であれば、テキストを暗号化する明白な理由は異端審問や当時の他の宗教的暴力を避けるためだったはずです。
    なので、同じ自然言語処理を福音書に適用して相関を探してみると興味深そうです。
    まず「単語」ベースの比較を行い、その次に「文字」ベースの比較をすべきだと思います。つまり、聖書のグラフとヴォイニッチのグラフを比較するような形です。
    また、混乱させるために入れられた文字があるかもしれません。
    たとえば、複数の変形がある奇妙な大文字の「P」のような記号は、実際の言語を表すにはあまりにも頻繁に現れる場合があり、解読前に取り除かれるべき難読化記号かもしれません。
    異常に頻出する他の文字も、使われないダミー文字である可能性があります。
    もちろん、「Pが多すぎる」という現象は純粋なフィクションだという説明にも合致します。

  • そのような手書きの本が単なるでたらめで、いかなる種類の暗号でもないのだとしたら、様式、書道、使う単語、さらには文字そのものも、1ページ目から最後のページまで変化していくはずだと思います。
    もちろんページが並べ替えられている可能性はありますが、それでも目立つはずです。
    著者がすでにそのような本を何十冊も書いていて、それらがすべて失われたのでない限り、ですが。
    まったく新しい考えではないでしょうが、そうしたパターンに関する分析があるのか気になります。
    ページ間の一貫性についての言及はどこでも見たことがありません。

    • ページ間の一貫性については、すでに多くの研究があります。
      筆写者は2人だと考えられることもあり(Prescott Currier参照)、Lisa Fagin Davisは5人だと見ています。
      Fagin Davisの見解に基づく実験的議論はこちらにあります: https://www.voynich.ninja/thread-3783.html