blechmusikの日記

キー・カスタマイズ・ソフトウェア "DvorakJ" の覚え書きをはじめとして様々なことを書いています。

kouyさんの「100万字日本語かなn-gramデータ」の1-gramの情報を整理してみた

kouyさんの「ローマ字入力でもなく、かな入力でもなく : 100万字日本語かなn-gramデータ」の1-gramについて、累積度数や割合を見やすく整理してみた。まずエクセルファイルのデータを整形してから*1csv形式のファイルに変換し、それをRで処理した。

> ## ローマ字入力でもなく、かな入力でもなく : 100万字日本語かなn-gramデータ
> ## http://kouy.exblog.jp/9731073/
> x <- read.csv("z:/1-gram.csv"
+               , header=F
+               , col.names=c("freq","char"))
> freq <- x$freq
> totalfreq <- sum(freq)
> totalfreq
[1] 1190182
> proportion <- round((freq / totalfreq) * 100, 2)
> cumfreq <- cumsum(freq)
> cumproportion <- round((cumfreq / totalfreq) * 100, 2)
> cbind(x, proportion, cumproportion)
    freq char proportion cumproportion
1  745696.27          6.27
2  592354.98         11.24
3  587094.93         16.18
4  480694.04         20.21
5  395373.32         23.54
6  383673.22         26.76
7  379843.19         29.95
8  338532.84         32.80
9  287502.42         35.21
10 277252.33         37.54
11 275792.32         39.86
12 275212.31         42.17
13 273892.30         44.47
14 260112.19         46.66
15 249102.09         48.75
16 244342.05         50.80
17 243682.05         52.85
18 235601.98         54.83
19 230741.94         56.77
20 217891.83         58.60
21 214181.80         60.40
22 213191.79         62.19
23 210001.76         63.95
24 193221.62         65.58
25 183291.54         67.12
26 179041.50         68.62
27 178881.50         70.12
28 169841.43         71.55
29 163771.38         72.93
30 161031.35         74.28
31 158931.34         75.62
32 156931.32         76.93
33 156581.32         78.25
34 145941.23         79.48
35 137221.15         80.63
36 131401.10         81.73
37 125131.05         82.78
38 119521.00         83.79
39 110000.92         84.71
40 109600.92         85.63
41 106270.89         86.53
42 101510.85         87.38
43  98780.83         88.21
44  92110.77         88.98
45  86650.73         89.71
46  79800.67         90.38
47  77550.65         91.03
48  77290.65         91.68
49  69250.58         92.27
50  68760.58         92.84
51  66430.56         93.40
52  66050.55         93.96
53  56390.47         94.43
54  53220.45         94.88
55  52320.44         95.32
56  45950.39         95.70
57  44060.37         96.07
58  43530.37         96.44
59  40680.34         96.78
60  37250.31         97.09
61  31730.27         97.36
62  30290.25         97.61
63  25650.22         97.83
64  24220.20         98.03
65  23600.20         98.23
66  23230.20         98.43
67  22750.19         98.62
68  21740.18         98.80
69  19740.17         98.97
70  19490.16         99.13
71  17930.15         99.28
72  17470.15         99.43
73  12010.10         99.53
74  11930.10         99.63
75   8060.07         99.70
76   7810.07         99.76
77   7320.06         99.82
78   6810.06         99.88
79   5750.05         99.93
80   4820.04         99.97
81   1630.01         99.98
82    830.01         99.99
83    780.01        100.00
84    360.00        100.00
> plot(
+   cumproportion, type = "p", col = "#666666", pch=20,
+   panel.first = grid(NA, NULL, lty = 1, col = "#E9E9E9")
+   +  grid(NULL, NA, lty = 1, col = "#E9E9E9")
+ )
> title("cumulative proportion of 1-gram")


このデータにおいて、日本語かなの文字(句読点を含む)についてはつぎのことが言える。

  • 出現頻度1-10位の文字数が、全体の文字数の4割弱を占めている
  • 出現頻度1-20位の文字数が、全体の文字数の6割弱を占めている
  • 出現頻度1-50位の文字数が、全体の文字数の9割強を占めている

キーボード配列を自作しようとする人は、日本語かなの文字の出現頻度に関しておおよその傾向をおさえておけばよいだろう。

*1:つぎの画像のように整形した。[f:id:blechmusik2:20120531033635p:image]