英語の単語を頻度順に並べると、ある法則に従うことが知られています。
すごくないですか?これをZip則といいます。(べき乗則とも、ロングテールとも言います)
[amazonjs asin=”4153200042″ locale=”JP” title=”ロングテール(アップデート版)―「売れない商品」を宝の山に変える新戦略 (ハヤカワ新書juice)”]
問題は、このZip則のエントロピーを計算することです。これはHaskellで1行で書けます。
1 2 3 4 5 6 |
(*) (1 / log 2) \ $ foldl (\s (x,y) -> s + (y-log 0.1)*0.1/x) 0 \ $ zip [1..12367] \ $ map log [1..12367] 9.7162584765207 |
答えは、9.7ビットです。
英語の英単語の平均的な長さは4.5文字で、英語のアルファベットは1文字あたり4.1ビットの情報があるので、単語あたりのエントロピーは約18.5ビットとなります。つまり、18.5-9.7=約8.8ビットの余剰情報量が含まれています。
そのため、こういう文章が読めちゃうんだそうです。職場 の 先輩 に 教 り し ま わ た。あ が り た や。
こんちには みさなん おんげき ですか? わしたは げんき です。
この ぶんょしう は いりぎす の ケブンッリジ だがいく の けゅきんう の けっか
にんんげは たごんを にしんき する ときに その さしいょ と さいご の もさじえ あいてっれば
じばんゅん は めくちちゃゃ でも ちんゃと よめる という けゅきんう に もづいとて
わざと もじの じんばゅん を いかれえて あまりす。
どでうす? ちんゃと よゃちめう でしょ?