テルのタイピング記

タイパー・テルによるタイピング記(旧ブログ -> http://uta202.blogspot.com/)

英語タイピングにおける文字数とキー数の比率

「英語タイピングにおける文字数と打つべきキー数の比率」を計算してみました。より具体的には、一般的なアメリカ英語の文章を 一般的な JIS 配列 もしくは US 配列でタイピングする場合の、平均的な キー数 / 文字数 の比率 です。

 

 

Q. その、「比率」? それって何?

タイピング速度の指標である CPM と KPM に関わる話です。(用語そのものについて詳しくは、様々な単位について(1) を参照して下さい。)

 

例えば 以下の 52 文字の例文を 1 分で打ったとします。

 - Covered with fur, or with something resembling fur.  

この場合「タイピング速度」は

 - 52 CPM ( characters per minute 文字数 / 分 ) と計算されます。

しかし、この文章には「シフト入力を要する文字」が 1 つ(文頭の C )が含まれていますから、「タイピング速度」に関する違う指標を使って、

 - 53 KPM ( keys per minute 打ったキー数 / 分 ) と計算することもできます。

 

このように、CPM と KPM は似ていますが、実際には異なるものです。

今回の場合のように文章が決まっていれば、具体的に CPM と KPM を計算することができますが、それだけでは困ることもあります。

英語タイピング練習サイトなどでは今までの平均速度として CPM が提示されますが、「これって大体何 KPM なのかな?」という疑問に答えるには、「一般的に(平均的に)、英文 1 文字は何キーなのか?」ということを知る必要があります。

 

注意点

この換算は、あくまで「一般的な換算」であって、厳密な換算ではありません。こんな換算を使わずに済むのが理想ですし、使う場合は、誤解を招かないよう気を付けて使うことが望ましいです。

 

また、「換算したから何?」という問題があります。

CPM を KPM に換算したことで、日本語タイピングで使われる KPM と指標の名前としては同じものになりました。では、この KPM を元に、英語タイピングと日本語タイピングの実力比較ができるでしょうか? つまり、「英語を X CPM で打ったので、KPM に換算すれば Y KPM だ! 自分は日本語だともう少し速い Y + 50 KPM で打てるから、英語タイピングはやっぱり難しい!」というような比較ができるでしょうか?

結論だけ言えば、こういった比較には疑問符がつきます

 

宣伝

なぜ疑問符がつくのか? ということに答えるためには、このテーマをある程度深く掘っていく必要があります。

このテーマについて、12月13日 公開予定の タイピングアドベントカレンダー2021 記事「異種競技の「スゴさ」を比べる難しさ 〜日本語・英語タイピングの違いから〜」で語りますので、ぜひご覧ください。 

adventar.org

 

比率を計算するための手法

元データ

比率を調べるのに使ったデータは、ここ(↓)のサイトの

corpus.byu.edu

 

Full-text data from English-Corpora.org: billions of words of downloadable data

 

ここ(↑)にあった、

The Corpus of Contemporary American English (COCA) 

というコーパス(生きた英語の例文データベース)です。

 

ちゃんとしたものは有料だったので、今回は無料サンプルを使いました。無料サンプルとはいえ、8.9mw と書いてありますから、890万単語も含まれるデータベース。まあ、サンプル数の大きさは十分でしょう。

 

文章のジャンルに偏りがあるんじゃない? と心配する方もいるかもしれませんが、下の方で示す通り、色んなジャンルからバランス良くサンプリングされているので、それなりには安心できると思います。

 

カウント方法

ちゃんと正しくカウントできてるの? とご心配の方もいると思いますので、カウント方法を一応記載しておきます。C++ で数えました。

分かる人は分かると思いますがかなり雑です、許して

int main(){
  set<char> onekeyset;
  string onekey = "zxcvbnm,./asdfghjkl;:]qwertyuiop@[1234567890-^";
  for (char c : onekey) onekeyset.insert(c);

  long long keys = 0;
  long long characters = 0;

  char c;
  int phase = 0; // 0:ID, 1:word, 2:lemma, 3:PoS
  while ( cin.get(c) ){
    if (c == EOF) return (0);
    if (c == '\t') phase++;
    else if (c == '\n') phase = 0;
    else if (phase == 1){
      if (onekeyset.find(c) != onekeyset.end()){
        keys++;
        characters++;
      }
      else{
        keys += 2;
        characters++;
      }
    }
  }

  cout << "keys : " << keys << endl;
  cout << "characters : " << characters << endl;
}

 

結論:一般的なアメリカ英語における キー数 / 文字数 比率

 

※ 冒頭の「注意点」をご覧の上、このデータの意味すること(と意味しないこと)をよく考えた上でご利用下さい。

f:id:TeruMiyake:20211204223047p:plain

 

ということで、N 文字の英文を入力するために、一般的には N*1.0667 キーの入力を要することが分かりました! 

1.0667 ≒ 16 / 15 ですから、平均 15 文字に 1 回、シフトキー入力が発生するとも言えますね。

 

つまり、英語入力 650 KPM は、一般的には 693.36 KPM と換算できそうだと分かります。

くどいようですが、もちろん、日本語タイピングの 693.36 KPM と 英語タイピングの 650 KPM が同価値ということではありません。両者は別物です。指標として、共通性を持たせているだけです。

文章のジャンルによる違いもある

ちなみに、話し言葉(SPOKEN や TV/MOVIES)では、1 文が短いためか、シフト比率が高いことも見て取れますね。当たり前のことですが、データとして分かると結構面白いですよね。

話し言葉だと 10 文字に 1 回、シフトキー入力が発生しているわけですから、タイパーとしては「小指が忙しそう…… ちょっと打ちたくないな」なんて思うんじゃないでしょうか?

 

あとがき と再度の宣伝

これは、日本語タイピングと英語タイピングに存在する差異の一例です。

こういった違いを一つずつ理解していくことで、タイピングの魅力的な世界を「より正しく」「より面白く」見ることができます

 

このような「細かいけど大事で面白いこと」について、タイパーアドカレ2021 では 12/13 と 12/20 の 2 回に渡って記事を投稿する予定です。ぜひ楽しみにしてください!