这只是个无聊的小把戏。
最近又看到关于qwerty键盘布局的讨论,有提到好的键盘布局标准之一:把连续的按键分散在左右两手上,这样第一只手击键的同时,第二只手可以提前做好准备,提高效率。
于是从网上找了一批古典英文小说的txt电子版,写了个傻傻的脚本,统计其中连续两个字母的频次(忽略大小写),其中频度最高的前30项如下表。这30项共计占总频次的43.3%.
如前述,“是否可以把连续击键分散在两只手上”,即表格最后一列。从结果上看,分散与否各15项,所以qwerty在这个标准上优势似乎并不明显。
当然,这并不能证明qwerty键盘是不合理的;毕竟评估因素非常多。
| 序号 | 字母组 | 频次 | 占比 | 双手分散* |
| 1 | he | 390103 | 4.04% | Y |
| 2 | th | 366573 | 3.80% | Y |
| 3 | in | 234621 | 2.43% | |
| 4 | er | 221732 | 2.30% | |
| 5 | an | 205618 | 2.13% | Y |
| 6 | re | 163779 | 1.70% | |
| 7 | nd | 148125 | 1.53% | Y |
| 8 | ha | 135536 | 1.40% | Y |
| 9 | ou | 133357 | 1.38% | |
| 10 | ed | 132822 | 1.38% | |
| 11 | on | 132233 | 1.37% | |
| 12 | at | 128740 | 1.33% | |
| 13 | en | 124127 | 1.29% | Y |
| 14 | ng | 117178 | 1.21% | Y |
| 15 | hi | 116461 | 1.21% | |
| 16 | to | 112860 | 1.17% | Y |
| 17 | it | 108636 | 1.13% | Y |
| 18 | is | 103327 | 1.07% | Y |
| 19 | as | 102013 | 1.06% | |
| 20 | ar | 99665 | 1.03% | |
| 21 | es | 98518 | 1.02% | |
| 22 | te | 96810 | 1.00% | |
| 23 | or | 94932 | 0.98% | Y |
| 24 | le | 92578 | 0.96% | Y |
| 25 | st | 92218 | 0.96% | |
| 26 | of | 91493 | 0.95% | Y |
| 27 | se | 87755 | 0.91% | |
| 28 | ve | 84620 | 0.88% | |
| 29 | me | 80898 | 0.84% | Y |
| 30 | ea | 77540 | 0.80% |
使用的小说素材有:傲慢与偏见, 安娜卡列尼娜, 巴黎圣母院, 悲惨世界, 格列佛游记, 白衣女人, 飘, 呼啸山庄, 尤利西斯, 德伯家的苔丝, 爱玛, 白鲸, 黑骏马。
傻傻的脚本。脚本本身区分大小写的,整理统计结果时在excel里合并了大小写。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
fp=open('english_novels_all.txt')
raw=fp.read()
fp.close()
ch='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in range(len(raw)-2):
if raw[i] not in ch or raw[i+1] not in ch:
continue
k=raw[i:i+2] # k=raw[i:i+2].lower()
if k in st:
st[k]+=1
else:
st[k]=1
fp=open('st_out.txt','w+')
for k in st:
fp.write('%s %s\r\n'%(k,st[k]))
fp.close()
Last Updated on 2025/02/19