現代日本語書き言葉均衡コーパス(BCCWJ)で漢直(T-Code)を研究する

www.youtube.com

ゆる言語学ラジオというpodcastを聞いていたところ, 「現代日本語書き言葉均衡コーパス」(BCCWJ)というものが紹介されていました. これは「書籍全般、雑誌全般、新聞、白書、ブログ、ネット掲示板、教科書、法律などのジャンルにまたがって1億430万語のデータを格納しており、各ジャンルについて無作為にサンプルを抽出」したコーパスとのことです.

clrd.ninjal.ac.jp

さて, やはり漢字というのはなるべく変換しない方がいいわけですが, その解決策として漢字直接入力(漢直)というのがあります. たとえば, T-Codeという入力法では2打鍵の組み合わせで, 1つのひらがな・カタカナ・数学・記号・漢字が入力されます.

こうした漢直で問題になるのが, その打鍵の配列の評価です. なるべくホームポジション近くで, よく出現する文字を入力できれば, それは効率のよい配置と言えます. たとえば, T-Codeでは"kd"(QWERTY)で「の」と入力できますが, 「の」の出現率が高ければこれは妥当だということです.

ここでBCCWJの登場です. BCCWJには文字表というものがあり, これには各文字の出現頻度・100万字あたりの頻度が書かれています. これを使えば, ある漢直がどの程度の日本語文章を入力できるのかを評価できるはずです.

では, やってみましょう…とはいえ, ある打鍵の組がどれだけホームポジションに近いのか…は自明ではありません. そこで今回は漢直の練習テキストEELLLを代わりの指標として使います. この練習テキストは, いくつかのレッスンに分かれており, 最初は「の」や「、」から始まり, ひらがな・数字・カタカナ・漢字…と少しずつ新たな文字を導入していきます. レッスンに早く登場する文字はそれだけ重要だと考えられているはずです. つまり, 各文字がEELLLの中で何番目に出現するのかの順位を代替的な指標として使います.

EELLL内の順位(縦)と, BCCWJ文字表(Version 1.1)で100万文字あたりの頻度での順位(横)を比較してプロットします.

 

理想的にはy=xの直線状になるといいですが, そうはなっていませんね. これを見ると右上と左下はいい感じだが, 中間はびみょうな感じがします. つまり, 400文字ぐらいまでは出現頻度が高い文字が早めのレッスンに出ますし, 逆に頻度が低いものは後のレッスンになっています. その間はちょっとばらばらな感じです. また, 右下にちょこちょこ外れている子たちがいますね.

では, どんな文字がEELLLでの順位とBCCWJでの順位の乖離が大きいのでしょうか?

 
  char lesson rank_eelll freq rank_bccwj norm_sq
129 105 129 8.46803 1154 1050625
133 106 131 18.15968 1144 1026169
131 106 131 34.50698 1100 938961
132 106 131 40.06188 1078 896809
127 104 124 57.65840 998 763876
281 305 282 25.28123 1124 708964
134 106 131 72.06532 923 627264
338 311 335 40.59946 1077 550564
361 314 362 46.38987 1050 473344
434 323 434 27.55950 1119 469225
426 322 423 34.73737 1099 456976
469 404 464 29.11078 1112 419904
433 323 434 39.51919 1081 418609
342 311 335 61.56475 978 413449
370 315 371 56.05592 1004 400689
327 310 326 67.49340 948 386884
415 321 414 51.53520 1031 380689
458 403 454 46.06733 1054 360000
372 315 371 63.41297 966 354025
690 505 688 1363.83967 96 350464

「ぢ」「ぺ」「ぴ」などが上位にあります. これらはひらがななので初期レッスンには出るものの実際のところ, あまり登場しないということです. たしかにね. というか, 告白すると自分も「ぢ」についてはあまりに入力しないのでT-Codeでの入力方法がわかりません. これらのrank_eelllが130ぐらいで, rank_bccwjが1100ぐらい…つまり上のプロットの右下の点はこいつらということです.

漢字でいうと「遇」「即」「巨」があります. これらは…いやーあんまりよくわかりませんね…まあ出現しないわりにレッスンでは早いというところです.

上の表は多くの文字が(EELLL順位) < (BCCWJ順位)というものでした. つまり, レッスンが早すぎるものたちです. 逆にレッスンが遅すぎる - EELLLで過少評価されている文字を見てみましょう.

 
  char lesson rank_eelll freq rank_bccwj norm_sq
690 505 688 1363.83967 96 350464
970 654 969 269.56401 412 310249
842 525 842 385.98666 311 281961
1034 661 1023 220.36853 492 281961
1094 670 1086 183.78294 571 265225
687 505 688 778.37298 174 264196
839 524 837 353.41494 332 255025
879 602 880 295.75143 378 252004
928 605 923 253.58021 438 235225
1073 663 1059 182.12414 576 233289
1102 676 1098 161.55307 616 232324
1032 661 1023 197.30926 545 228484
828 522 826 324.38607 349 227529
1047 662 1042 184.32563 568 224676
1025 661 1023 189.15353 557 217156
678 504 673 559.53526 224 201601
1003 659 1003 189.24569 556 199809
759 512 758 374.09353 316 195364
751 511 752 381.80896 313 192721
825 522 826 287.10420 389 190969

「言」「何」「得」などたしかに結構入力しそうな文字がありますが, これらはどれもレッスン全体の後半での出現です. 個人的にはプログラミング系のことを書いていると頻出する「呼」がちゃんとここに入っていて良かったです.

さて, 今回はBCCWJ文字表(Version 1.1)を使ってT-Codeの配列について研究してみました. この文字表を使うことで, 他にもEELLLでどのレッスンまでいけば文章中で何割の文字を入力できるようになるのか? 何文字の打鍵を覚えれば文章の何割を直接入力できるのか?が計測できます. それらは次回になります.