母音の連接頻度

月見草開発に用いた文章サンプルで公開されている、かなの連接表を使わせていただき、母音の連接という観点から集計してみた。

母音の連接というのは、要は「ひらがな」なら「iaaa」、「キーボード」なら「ioo」、「魚は羽ばたかなかった」なら「aaaaaaaaaaa」となる。

ローマ字配列は母音を一方の片手、子音を逆の片手にまとめて左右交互打鍵を実現しているものが多い。そのため、母音に限定した連接頻度は、母音を担当する手の運指を考慮する上で役に立つのではと思った。

ソースと集計方法

ソース

ソース詳細は上記のリンク先参照。

文章サンプルは口語体を多く採用しました。
青空文庫 11,032,631 バイト
某知恵袋 21,211,842 バイト
ビジネス文書 2,278,528 バイト
Wikisource 2,092,621 バイト
Wikipedia 964,471 バイト
ニュース記事 1,089,780 バイト
文字数は濁点は0、捨て仮名も一文字としています。また「、。・ー」及び開き括弧がカウントされています。括弧は「『(をまとめて集計しました。

かなgramのデータは出現回数8回未満は切られている。

集計

捨て仮名も一文字としているので、ローマ字で打鍵する母音とは必ずしも一致しない。

例えば2gramデータで「おし」が10670個とあるが、だからといって「oi」という母音の連接が10670個になるわけではない。「おしゃれ」「おしょう」などの一部である可能性もある。この場合、母音の連接は「oa」「ou」として扱わなければならないが、では10670個の内いくつが「おしゃ」でいくつが「おしょ」なのかは2gramからでは分からない。

そのため、3gramデータの最初の2文字を集計した。

  • 基本は1文字目と2文字目の母音で集計する
  • 1または2文字目に記号「、。ー・括弧」促音「っ」が含まれるデータは集計しない
  • 2文字目が捨て仮名(ぁぃぅぇぉゃゅょゎ)のデータは集計しない
  • 3文字目が捨て仮名(ぁぃぅぇぉゃゅょゎ)の場合、2文字目でなく3文字目の母音で集計する
  • 撥音「ん」は「ん」のまま集計する

つまりは3文字目の母音を知る必要があるが、正しい母音が上記の理由で正確には分からない連接は集計していない。一応、不当に高いまたは低い評価をされる連結が無いように気をつけたつもりだが、見落としがある可能性は否定できない。

だったのだが、そこで」のように促音や長音、記号を挟んでの連接は考慮しない。促音と長音は考慮したかったが、データの都合上出来なかった。よって促音・長音を挟む連接(「楽器」の「ai」、「ボール」の「ou」など)はカウントされていないため、もしある連接がこの形で特によく出てくるとすれば、それは低く評価されてしまっている。ただ、促音や長音は子音側でより多くのキーを打鍵しているため、「子音1つを挟んだ母音の連接」と同列に評価すべきかは一考を要するポイントである。

追記:よく見たら4gramのデータもちゃんとあったので、それを使えば促音・長音を挟む連接も集計可能だった。ただ、かなgramの形に加工されたデータでの集計は限界があったため(下記課題参照)、修正しての再集計は後回しにする。

撥音は、母音側の手に「ん」を一打で入力するキーを配置することを想定し、今回の集計では母音のように扱っている。

結果表

5母音+ん

a i u e o n A I U E O
a 786393 472751 452137 339848 380448 231806 55982 455871 24716 50370 41394
i 886923 353284 293121 343886 530857 148361 41395 80931 38845 26100 31943
u 497132 342693 238549 236390 540924 59340 11524 67861 125052 17828 15551
e 304552 171418 236410 120235 184064 224159 30041 259733 3063 3658 18346
o 448212 367245 257244 237546 636126 112264 38572 120215 570810 20403 87924
n 221747 105706 59038 112889 202201 0 3411 10437 834 4014 2590
横が1打目、縦が2打目
大文字は、間に子音を挟まない「あいうえお」

8母音+ん

a i u e o ya yu yo n
a 724027 455695 395348 328894 315033 6476 11809 25449 225762
i 848757 353284 259214 343886 440492 18599 27163 55149 148361
u 464793 333435 198159 232901 432028 17116 23857 58832 52273
e 295963 171418 229327 120235 153852 2937 5471 23791 224159
o 411846 338014 189295 226170 546372 8305 19866 36175 100695
ya 38262 17056 37603 10954 16819 447 1428 2977 6044
yu 5094 9258 12374 3489 3975 35 1342 1998 7067
yo 13732 29231 40660 11376 20049 193 941 1418 11569
n 203916 105706 38777 112889 168727 12591 19042 28360 0
A I U E O Ya Yu Yo
a 54449 451475 24037 49986 40532 16454 5595 19807
i 41395 80931 38845 26100 31943 19567 6744 35216
u 10982 67319 26124 16905 15537 9987 2817 43585
e 30041 259733 3063 3658 18346 5652 1612 6421
o 38420 111487 319316 20330 87373 13456 5559 31866
ya 1533 4396 679 384 862 727 354 363
yu 542 542 98928 923 14 107 0 506
yo 152 8728 251494 73 551 680 923 246
n 3411 10437 834 4014 2590 5240 1219 5114
横が1打目、縦が2打目
大文字は、間に子音を挟まない「あいうえおやゆよ」

ランク表

「間に子音を挟まない連接」は母音側の指で2回続けて打つ。

「間に子音を1つ挟む連接」は1打目の母音を入力後、(逆の手で)子音を入力してから2打目を打つ。

5母音+ん

間に子音を挟まない連接

1 570810 oU
2 455871 aI
3 259733 eI
4 231806 an
5 224159 en
6 148361 in
7 125052 uU
8 120215 oI
9 112264 on
10 87924 oO
11 80931 iI
12 67861 uI
13 59340 un
14 55982 aA
15 50370 aE
16 41395 iA
17 41394 aO
18 38845 iU
19 38572 oA
20 31943 iO
21 30041 eA
22 26100 iE
23 24716 aU
24 20403 oE
25 18346 eO
26 17828 uE
27 15551 uO
28 11524 uA
29 10437 nI
30 4014 nE
31 3658 eE
32 3411 nA
33 3063 eU
34 2590 nO
35 834 nU
36 0 nn

間に子音を1つ挟む連接

1 886923 ia
2 786393 aa
3 636126 oo
4 540924 uo
5 530857 io
6 497132 ua
7 472751 ai
8 452137 au
9 448212 oa
10 380448 ao
11 367245 oi
12 353284 ii
13 343886 ie
14 342693 ui
15 339848 ae
16 304552 ea
17 293121 iu
18 257244 ou
19 238549 uu
20 237546 oe
21 236410 eu
22 236390 ue
23 221747 na
24 202201 no
25 184064 eo
26 171418 ei
27 120235 ee
28 112889 ne
29 105706 ni
30 59038 nu

8母音+ん

見栄えを整えるため、ya=x, yu=y, yo=z と表記する

間に子音を挟まない連接

1 451475 aI
2 319316 oU
3 259733 eI
4 251494 zU
5 225762 an
6 224159 en
7 148361 in
8 111487 oI
9 100695 on
10 98928 yU
11 87373 oO
12 80931 iI
13 67319 uI
14 54449 aA
15 52273 un
16 49986 aE
17 43585 uZ
18 41395 iA
19 40532 aO
20 38845 iU
21 38420 oA
22 35216 iZ
23 31943 iO
24 31866 oZ
25 30041 eA
26 26124 uU
27 26100 iE
28 24037 aU
29 20330 oE
30 19807 aZ
31 19567 iX
32 18346 eO
33 16905 uE
34 16454 aX
35 15537 uO
36 13456 oX
37 11569 zn
38 10982 uA
39 10437 nI
40 9987 uX
41 8728 zI
42 7067 yn
43 6744 iY
44 6421 eZ
45 6044 xn
46 5652 eX
47 5595 aY
48 5559 oY
49 5240 nX
50 5114 nZ
51 4396 xI
52 4014 nE
53 3658 eE
54 3411 nA
55 3063 eU
56 2817 uY
57 2590 nO
58 1612 eY
59 1533 xA
60 1219 nY
61 923 yE
61 923 zY
63 862 xO
64 834 nU
65 727 xX
66 680 zX
67 679 xU
68 551 zO
69 542 yA
69 542 yI
71 506 yZ
72 384 xE
73 363 xZ
74 354 xY
75 246 zZ
76 152 zA
77 107 yX
78 73 zE
79 14 yO
80 0 yY
80 0 nn

間に子音を1つ挟む連接

1 848757 ia
2 724027 aa
3 546372 oo
4 464793 ua
5 455695 ai
6 440492 io
7 432028 uo
8 411846 oa
9 395348 au
10 353284 ii
11 343886 ie
12 338014 oi
13 333435 ui
14 328894 ae
15 315033 ao
16 295963 ea
17 259214 iu
18 232901 ue
19 229327 eu
20 226170 oe
21 203916 na
22 198159 uu
23 189295 ou
24 171418 ei
25 168727 no
26 153852 eo
27 120235 ee
28 112889 ne
29 105706 ni
30 58832 uz
31 55149 iz
32 40660 zu
33 38777 nu
34 38262 xa
35 37603 xu
36 36175 oz
37 29231 zi
38 28360 nz
39 27163 iy
40 25449 az
41 23857 uy
42 23791 ez
43 20049 zo
44 19866 oy
45 19042 ny
46 18599 ix
47 17116 ux
48 17056 xi
49 16819 xo
50 13732 za
51 12591 nx
52 12374 yu
53 11809 ay
54 11376 ze
55 10954 xe
56 9258 yi
57 8305 ox
58 6476 ax
59 5471 ey
60 5094 ya
61 3975 yo
62 3489 ye
63 2977 xz
64 2937 ex
65 1998 yz
66 1428 xy
67 1418 zz
68 1342 yy
69 941 zy
70 447 xx
71 193 zx
72 35 yx

考察

間に子音を挟む場合と挟まない場合で、順位に差が見られた。 「○I」のように二重母音の2文字目としての「い」は頻出するが、子音を挟むとその頻度は母音5種の中でも下位になる。

また、間に子音を挟む連接を見ると、5母音の中では下位のデータ(ee)でも1位のデータ(ia)の7~8分の1程度で大きな差があるとは言えない。 結局どの連接もそれなりに出てくるため、ローマ字配列での母音の配置の最適化というものは、出来なくはないが、効果は実感しにくいと思われる。

Dvorakのように、左手横一列に母音を配置、上段に二重母音、下段に撥音拡張を導入する場合。

  • 疲れやすい小指には打鍵数・連続打鍵が共に少ない「e」を配置するのが良い。
    • 指の負担を考慮して小指にeを割り当てている配列はSKY配列、きゅうり改など比較的よく見られる。
    • ただし同じ配列で英語も入力するなら、eは打鍵数が多いのでこの限りではない。
  • 人差指伸下段(QWERTYでbの位置)は押しづらいので、その上のgには撥音が最も少ない「u」を配置する。
    • 二重母音「uU」まで打ちづらくなるデメリットがある。
    • iを1打目に持つ二重母音は頻度が少ないため、uUはiの上に配置してもよい。
  • fはgと同じ人差し指で打鍵するので、uとの絡みが最も少ない「o」を配置する。
    • 二重母音があるため「oU」は考慮の必要がなく、「uO」の頻度で評価。
    • 「uA」は「uO」より少ないが、二重母音が用意されていないため「aU」と合計すると多くなる。
  • 残る中指と薬指にaとiを配置するが、特に決定的な優位はない。
  • 強いて言えば、中指は長いため下段が打ちづらい。よって撥音の頻度の違いから、中指に「i」、薬指に「a」を配置

このように頻度を元に手捏ねで母音を決めると、以下の配置が一つの案となる。

eiaiuuouui
eaiou
ennanninnonnunn

課題・発展

今回は母音に限定した2連接を集計したが、3連接以上を不足無く集計する場合、理論的には「促音・長音を含めた1音節の最大仮名文字数」×「連接数」-2gramのかな連接データが必要となる。(強引な例だが、「キャッチャー直球」の頭から4連接を「aaou」と正しく求めるには「ゃっちゃーちょっきゅ」の10かなが必要。3×4-2=10。)でも現実的には、それより「連接数-2」くらい少なくても十分だろう。

既存のローマ字配列には、子音に続けて「ann」「ai」「ou」などを一度に入力できる二重母音・撥音拡張を持つものがあるが、それらを考慮に入れる場合、母音の2連接の集計には最低かな6gramのデータが必要となる。そのデータを集めることが出来れば、二重母音(上段)→撥音(下段)などの跳躍を考慮した、より負担の少ない母音配置を求めることが期待できる。

追記:拡張母音を想定すると、形態素解析による品詞の特定も必要となる。

「今は居ません」「強く打った」などに含まれる「はい」「くう」は、自分は拡張を使って打たない。かなgramデータではその区別を付けられないため、二重母音が過剰に評価されてしまう。品詞ごとに分かち書きするなどして、品詞間は拡張を使わないようにしなければならない。

しかし単純に品詞ごとに分かち書きしただけでは、今度は「ありません」「している」などが「ませ/ん」「て/いる」と分かれてしまう。この場合の「せん」「てい」は自分は拡張を使って打っているため、今度は過小評価が発生してしまう。今回の3gramデータでも「ている」7位、「ません」12位で、とても無視できる頻度ではない。

現在の所、この2つ以外に品詞をまたいで拡張を使う例が見つからないので、「ません(助動詞)」「ている(助動詞)」を形態素解析の辞書に登録してしまえばよい。そうすれば分かち書き出力一発で出せる。辞書登録は優先度の数値を適切に決める必要があるらしく、その方法がなにやら難しいように見えた。要調査。

今後一つ一つ辞書登録できない多様な例外が見つかるようなら、形態素解析の段階ではまず読みと品詞を出力し、品詞の種類によって前後をまたいだ拡張の可不可を判断した後、母音に置換するという手順になる。できればやりたくない。

また、人によって拡張を使うか使わないか微妙なラインのものもあるだろう。「て/いる」などは使わないという人がいてもおかしくない。拡張母音を想定した母音の連接頻度の解析を自分の癖に合わせて行っても、そのデータは癖の違う他人にとっては誤差を含むデータにしか成り得ないことになる。

今回の集計では句読点、括弧、長音は入れていないが、それらのキーを母音側に配置するとすれば、母音と同列に考えた方がよい。

想定する配列によって、集計に入れるべき対象、除くべき対象、音節の扱い方が変わってくるため、一つの集計結果を基に万能な配列に適用することは出来ない。 今回の結果は「母音を片手にまとめて」「撥音「ん」のみ母音側に配置し」「省入力拡張は使用しない」配列が前提である点に注意する。

品詞をまたぐ拡張

どこに書こうか迷ったが、とりあえずここに。「課題・発展」の追記部分を継承する内容。

思いつく範囲で、「品詞は分かれているが普段自分が拡張を使っている例」を挙げてみた。解析辞書はunidic-MeCabを使用。

元の品詞登録する品詞備考
ている接続助詞て+上一段動詞いる助動詞MeCabの辞書は活用も自分で全て登録する
ません助動詞ます+助動詞ぬ助動詞これは終止形・連体形のみでおk
かぜねわ+い終助詞+終助詞い終助詞元気かい、元気だぜい、知らないねい、知っとるわい
だい,でい助動詞だ終止形+終助詞い終助詞生きるんだい、生きるんでい
以下は自分は使わないが、人によっては使うかもしれない
無,不+い,う接頭辞+名詞名詞無意義、無意識、無意味、不一致など
無為、無一文、不意、不入りなどは既に一語である

話し言葉で使われる語尾「終助詞い」で幾つかあるが、列挙できないほどではない。また、漏れがあっても致命的な影響は出ないと思われる。「知らないやい」「どうしてこうなったい」は一語で登録されていた。

思い出しでの探索には限界がある。「自分が拡張を使うかどうか」は機械的な判断ができないため確認は自分で行うしかないが、せめて怪しい単語を一覧で抽出できれば確認作業が楽になる。どのように抽出すべきか。

あと、辞書登録だけでは対処しにくい構文があった。「準体助詞ん」である。

「そうなんだ」「写るんです」など、用言の連体形に付いて体言に変化させる役割を持った助詞。これも自分は拡張を使っている。連体形なら何でもくっつくので、まさか既存辞書の全ての用言に対して各々これをくっつけた品詞を作って登録するわけにもいかない。口語体ならよく見る構文なので切って捨てるわけにもいかない。

現在撥音拡張のある配列を使っていて思うことだが、「ん」はほとんど拡張を使い、Nの2回打鍵で入力することは少ない。なので「ん」の拡張がらみに関しては、『分かち書き出力後「ん」の直前が分かたれていれば前に繋げる』というルールで間に合う気がする。これによって困る例はあるだろうか。確かめてみた。

辞書のソースファイルを覗いて、読みが「ん」から始まる品詞を調べた。結果、助詞や助動詞の「ん」は全て拡張を使った方が自分の打ち方とあっていた。他の例では固有名詞、感動詞(んっと)、連体詞(あんな→んな)、接続詞(それで→んで)、動詞(なさる→んさる)など。これらは拡張を使って打たないため、誤判定になる。だが、「ん」から始まる固有名詞や動詞はほぼ出てこない。残りは砕けた書体で見るものもあったが、誤判定となるのは「直前に(句読点や括弧でなく)かなが来る場合」であり、その条件にあてはまるものは少ないと思われる。ちゃんとやるならきっちり「何%以下だから無視できるものとする」と調べた方がいいのだろうが、まぁ、余力があれば…。

なので、「ん」は分かち書き出力後、一律で前に繋げるものとする。

keyboard_layout/summary/vowel_concatenation_frequency.txt · 最終更新: 2016/08/01 by ikatakos
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0