読者です 読者をやめる 読者になる 読者になる

金と緑のエントロピー

ヴォイニッチ手稿,投資,農作について,データ分析手法を使って不真面目に研究する場所です.

ヴォイニッチ手稿の単語頻度分析

さて,前回はヴォイニッチ手稿のトランスクリプトデータをダウンロードしました.
shounena.hatenablog.com

今回は,これを使ってまずはざっくりと,傾向をデータ分析しようと思います.
目的は,ヴォイニッチ手稿が意味のある文書なのか,それとも適当に文字っぽいものを並べただけのものなのか,その見当をつけることです.

まずは,基本の分析として,ヴォイニッチ手稿の単語数を集計します.

#coding: utf-8
#ヴォイニッチ手稿の単語カウント

import sys
from collections import Counter

C = Counter()

for line in sys.stdin:
    line = line.strip()
    if len(line)==0:
        continue
    if line[0]=="#":
        continue

    terms = line.split(",")
    C += Counter(terms)

print "word\tcount"
for w,c in C.most_common():
       print w,"\t",c

このプログラムは,こんな風にcatコマンドと組み合わせて使います.

cat ../FSG.txt | python wordcount.py

入力データは,FSG.txtです.
タブ区切りで出力するので,適当にresult.tsvなどと名前をつければ,Excelなどで表示可能です.



出力結果は数の多い順に並んでいます.
結果をグラフにしてみました.

ちなみに,このプログラムでは文節終わりを示す=がついた"8AM="などは別単語扱いです.
ひどく雑な集計ですが,初歩分析ということで勘弁下さい.
その内キチンと修正します.


単語の分布の形は,指数的な分布,Zipf則に従っているように見えます
一般には,この形状がヴォイニッチ手稿が適当な記号列ではなく,何か意味がある文書だという根拠のひとつとなっています.

ヴォイニッチ手稿は未だに解明できないこともあり,ただのイタズラであるという可能性も否定できません.
ただ,人間が意識せずに意味のない文字列を作ると,一般にはこのような指数分布にすることは難しく,出現に偏りの少ない,均一分布に近くなります.
その点,この文書は単語の偏りが一般的な言語と同じ指数分布という性質を示しており,不規則に単語っぽいものを並べたということは考え難いです.

ということで,ヴォイニッチ手稿
・不規則に単語を並べただけではなく,何らかの規則性を持って並べられた,意味を持った文字列である可能性が高い
と言えます.
ただ,例えば文書を作った後に不規則に単語を並べ替えたなど,文としては成立していないことも考えられます.
これについては後の分析で改めて検証していきます.



出現数としては,8AMという単語が圧倒的に多いです.
全単語数10031個に対し,360個と4%近くを占めます.

これは英語での出現単語と比べると偏りはやや少ないといえます.
英語における出現数が最も多い単語は通常"the"であり,一般的な文書では概ね8%程度です.
次に多い単語はtoで4%程度,またa,anも合わせると4%程度です.
8AMという単語だけで見ると,出現頻度的には少ないと言えるかもしれません.

ただし,これは"8AM"という単語と完全一致した物の数だけです.
手稿の中には"8AMが含まれる単語"も多くあり(例えば"O8AM"というものは22個),
これを合計すると641個と,冠詞の出現数と比較的一致します.

例えば8AM,が名詞の前後にくっつけて冠詞として動作する,という可能性はあります.
ただ,現時点ではこの断定は難しそうです.


8AMに次いで,TOE,TORという単語が多いです.
このT**という単語は比較的多く存在します.
Tという文字を付けることは,何らかの意味があるのかもしれません.



次は文字頻度について分析してみます.