「濁点/半濁点あと打ち」に対応した かな頻度表
日本語の文章における かな 出現頻度について、 日本語入力用キー配列に関するリンク集@Wiki - テーマ「キー配列制作者に捧げる資料」のリンク集 にリンクがまとめられています。
しかしどの頻度表も「は」「ば」「ぱ」をちがう文字として扱っています。 これは頻度表としては正しいし、ローマ字入力みたいに濁点をあとから付け足さない日本語入力方法にはそのまま参考にできるでしょう。
ただし JISかな入力・新JISかな などの 濁点/半濁点あと打ち の入力方法の場合には、このままではキー押下頻度の参考にはできません。
たとえば「バーバパパ」 (ba-bapapa) という本文があったとします。従来の頻度表だと、
**かな 出現回数** ば 2 ー 1 ぱ 2
となりますが、「濁点/半濁点あと打ち対応頻度表」だと 「ぱ」=「は」+「゜」 というふうに数えるから
**かな 出現回数** は 4 ー 1 ゛ 2 ゜ 2
と、なりますね。
この方式で、濁点/半濁点あと打ち対応頻度表を作成してみました。
かな頻度表サンプル
複数人の文章サンプルを統計したものから、3つのサイトを取り上げています。
- http://www7.plala.or.jp/dvorakjp/hinshutu.htm
朝日新聞・読売新聞の一面及び社説、アメリカ歴代大統領の就任演説 (フィッツジェラルド〜ジョージ・ブッシュ)の和訳、 20代男性のE-mail及び刑法から11万7433字を解析したデータ
サンプル1文字を2バイト換算すると: 229 KB (0.2MB) - http://121ware.com/apinfo1/content/mworld/1-3.htm
調査対象文章: 高校教科書 9科目 9冊、 対象仮名文字数合計: 1,175,054
サンプル1文字を2バイト換算すると: 2295 KB (2.3MB) - http://jisx6004.client.jp/data/2chlog/1038483398.html
2ちゃんねるで使用される仮名/記号文字をカウントしました. 対象は全掲示板の大体500レス以上あるスレッドです. 話し言葉主体.合計:1,699,767,604個
サンプル1文字を2バイト換算すると: 174130 KB (174MB)
かな頻度表
- 標準版 かな頻度表 http://japaneseinput.web.fc2.com/frequency-kana-normal.html
- 濁点/半濁点あと打ち版 かな頻度表 http://japaneseinput.web.fc2.com/frequency-kana-voiced.html
この表はHTMLなのでブラウザで表示できますが、Excel2003で出力したものなので、Excelでもそのまま読み込めます。
使用したPerlスクリプト http://japaneseinput.web.fc2.com/freqkana.pl.txt 。従来の頻度表を文字コード EUC-JP にして、スクリプトでフィルタして、Excel でソートしました。
結論
わかったことは、濁点/半濁点あと打ちの場合 濁点こそが最多打鍵キーだったということです。あと、濁点なしの文字の頻度が下がった結果、かな別の頻度も標準とは異なっています。
ちなみに私は現在、濁点/半濁点あと打ちの配列を使っています。最初 濁点・半濁点をかなのあとに入力する方式は「発音」と「打鍵数」が清音・濁音で一致しないという点で、ローマ字とかと比べてよくないのではないか、と思っていました。実際やってみると、日本語をペンで書くときと同じなのでいい感じに入力できています。
追記 : 2013年1月
「1795万字の文章サンプル」 http://www50.atwiki.jp/keylay/pages/16.html が公開されました。
文章サンプルは口語体を多く採用しました。
青空文庫 11,032,631 バイト 長文小説、過去形が多い。目視にて現代的文体を多く選択したが、古さは否めない。
某知恵袋 21,211,842 バイト 短文の集合。多様なテーマの現代の言葉・言い回しを収集できたのではないか。
ビジネス文書 2,278,528 バイト 敬体。特有の言い回しが頻出。
Wikisource 2,092,621 バイト 聖書、法令、数学書、演説、翻訳など。
Wikipedia 964,471 バイト である文
ニュース記事 1,089,780 バイト
漢字かな変換はMeCabを利用しました。
それをグラフに追加しました。「2ちゃんねるで使用される仮名」はグラフから削除しました。
- 標準版 かな頻度表 http://japaneseinput.web.fc2.com/frequency-kana-normal2.xhtml
- 濁点/半濁点あと打ち版 かな頻度表 http://japaneseinput.web.fc2.com/frequency-kana-voiced2.xhtml
LibreOffice3.6 Calcで作りました。元ファイルは http://japaneseinput.web.fc2.com/frequency-kana-voiced2.ods
濁点/半濁点あと打ち版 かな頻度を求めるのに使用したスクリプトは以下。
freqkana.pl
#!/usr/bin/perl -w use strict; my %dakuten = ( 'が'=>'か', 'ぎ'=>'き', 'ぐ'=>'く', 'げ'=>'け', 'ご'=>'こ', 'ざ'=>'さ', 'じ'=>'し', 'ず'=>'す', 'ぜ'=>'せ', 'ぞ'=>'そ', 'だ'=>'た', 'ぢ'=>'ち', 'づ'=>'つ', 'で'=>'て', 'ど'=>'と', 'ば'=>'は', 'び'=>'ひ', 'ぶ'=>'ふ', 'べ'=>'へ', 'ぼ'=>'ほ', 'ヴ'=>'う', ); my %handakuten = ( 'ぱ'=>'は', 'ぴ'=>'ひ', 'ぷ'=>'ふ', 'ぺ'=>'へ', 'ぽ'=>'ほ', ); my %total = (); sub plus{ my ($letter, $num) = @_; if(defined $total{"$letter"}){ $total{"$letter"} += $num; }else{ $total{"$letter"} = $num; } } while(<>){ s,[ \t\r\n]*$,,; if(m/^([^ \t]+)[ \t]+([^ \t]+)/){ my $kana = $1; my $hindo = $2; if(defined $dakuten{"$kana"}){ $kana = $dakuten{"$kana"}; plus("゛", $hindo); }elsif(defined $handakuten{"$kana"}){ $kana = $handakuten{"$kana"}; plus("゜", $hindo); } plus("$kana", $hindo); } } sub hashValueDescending { $total{$b} <=> $total{$a} } foreach my $k (sort hashValueDescending keys(%total)){ print $k ."\t". int($total{"$k"} / 1000.0)."\n"; }