英辞郎の単語のレベル分けから、知ってる単語数を類推してみる

普段、パソコンやiPhoneでは英語の辞書として英辞郎を使うことが多い。英辞郎に収録されている単語の基本的なものにはレベルが振られている。beginningはレベル1、inceptionはレベル12という感じで、レベル数が大きいほど難しくなる。これまで英辞郎を使ってきて、何となくこのレベルの存在は意識していたが、

  • 目にしたことのない単語を引いてみたら、意外に低いレベルだった。レベルが低いとされている単語をざっとおさらいした方がいいのでは?
  • 各レベルに含まれる単語数で、自分が知っている単語の数を類推できるのでは?

ということを感じていた。

PDICには「単語レベル検索」という機能があり、好きなレベルの単語をフィルターすることができるが、各レベルごとの単語の一覧をテキストファイルに抜き出した方が、ざっと見るには適しているように思える。また、そのようにテキストファイルに抜き出しておけば、他の用途、例えばiPhoneアプリのFlashcards Deluxe用に加工するにも楽だ。というわけで行ったこと。

英辞郎の辞書データのうちテキストファイル形式のもの、例えばVersion.118の場合、EIJI-118.TXTの中でfingerprintの項目は以下のような行に含まれている。

■fingerprint {名-1} : 指紋{しもん}、鱗紋
■fingerprint {名-2} : はっきりした特徴{とくちょう}
■fingerprint {他動} : 〜の指紋{しもん}を採る
■fingerprint : 【レベル】7、【@】フィンガープリント、【変化】《動》fingerprints | fingerprinting | fingerprinted、【分節】finger・print

この中の【レベル】を検索パターンとして、見出し語を各レベルごとにテキストファイルに抜き出すPythonスクリプトを書いた。

# coding: cp932

import string
import re

dicfile = "EIJI-118.TXT"

f = open(dicfile, 'r')
d = f.read()
f.close()
dict = string.split(d, '\n')

for i in range(1, 13):
	out = ''
	for l in dict:
		if(re.search('【レベル】' + str(i) + '($|、)' , l)):
			tmp = l.split(' ')
			l = tmp[0].rstrip()
			l = l.lstrip('■')
			out += l + '\n'
	outfile = "Level_%02d" % i + ".txt"
	f = open(outfile, 'w')
	f.write(out)
	f.close()

これをEIJI-118.TXTのあるディレクトリで実行すると、各レベルごとの単語を抜き出したLevel_01.txt〜Level_12.txtができる。
Level_01.txtの最初の5行は、

a
able
about
above
across

同様に、Level_12.txtは

abate
abdicate
abdominal
abhor
abhorrent

となる。出力されたファイルの行数を確認すると、各レベルに1000語含まれていることが分かる。

この12個のファイルを眺めているのも楽しいのだが、ここに全部のせる訳にもいかない。それぞれのファイルから50個の単語をランダムに抜き出してみた。

【レベル】1 (0)
town / soccer / trip / face / try / tunnel / center / put / sorry / quiet / parent / chocolate / fifty / classmate / fire / climb / ride / next / can / coffee / finish / tongue / suddenly / kill / suit / well / switch / of / daddy / dangerous / once / leg / only / diary / did / page / world / do / year / show / book / many / thousand / box / have / plan / sky / sleepy / air / minute
【レベル】2 (0)
action / actual / plenty / dust / ton / supper / policy / cheek / gain / haircut / shampoo / eightieth / citizen / cleaning / happily / silence / anywhere / impression / apron / sixtieth / skate / highly / society / upper / reason / proper / walker / band / nod / fashion / fault / beat / crew / create / daily / occasion / worker / dare / dentist / boyfriend / desert / button / passport / spoken / fourth / freeze / system / butterfly / loud / rush
【レベル】3 (0)
handbag / select / loving / pointed / politics / casual / criminal / transport / issue / employee / mental / probable / sincere / unusual / military / ray / vehicle / instruction / compact / tin / recommend / tap / reflect / backyard / fee / considerable / occupy / stocking / weapon / bathe / structure / creative / oppose / option / application / cassette / otherwise / wound / bless / palm / pancake / parcel / gasoline / geography / bore / ruin / speedy / goalkeeper / leisure / whistle
【レベル】4 (0)
dam / deadly / calculate / jumper / telling / outline / intent / fried / overcome / frankly / aged / destination / assert / scenery / identity / doorbell / literary / rural / guidebook / luckily / driving / sew / handbook / potential / harvest / shortage / sidewalk / helping / primitive / skillful / emperor / attraction / miserable / engage / barrel / source / mighty / confession / wisdom / electrical / session / sponge / bleed / increasingly / sticky / recording / newly / inn / brief / briefly
【レベル】5 (2)
frightening / unjust / disgusting / slender / theme / dock / physically / pillowcase / circular / inclined / compose / drier / guitarist / statesman / apparatus / schoolteacher / hanger / arcade / educated / privately / uncertainty / fantasy / assurance / emotionally / shocking / contempt / singular / protective / devotion / cooker / horizontal / corridor / iced / illusion / pyramid / imaginary / vital / bra / implement / damp / crucial / brutal / inflation / fastener / vine / stripe / follower / footprint / freeway / laborer
【レベル】6 (6)
dialogue / repetition / manhood / pint / plague / planetarium / sharpen / adjective / tuck / skyscraper / hardy / headlight / smoky / proficient / armchair / consultation / congratulate / unpaid / embarrassed / attentive / unsuitable / controversial / importantly / neatly / incapable / inclination / competent / vicious / violation / registration / inheritance / rehearsal / blast / vowel / discrimination / crisp / reproduction / orphan / insight / irritation / symptom / revolve / dedicated / riddle / capability / isle / telegraph / frustrate / sweetness / thrust
【レベル】7 (7)
abnormal / fringe / accompaniment / diplomacy / latitude / pharmacist / intelligible / inclusion / sherry / expressive / plump / cling / situate / pottery / gunshot / dogmatic / slot / premier / knowledgeable / comforting / dusk / communicative / communism / edible / clinical / quaint / masculine / engaging / axis / enthusiast / reckon / mileage / straightforward / execution / reorganize / birthplace / cripple / incorporate / expertise / indispensable / revealing / faultless / occurrence / broaden / surpass / overturn / wholesome / destroyer / tempest / jeweler
【レベル】8 (6)
takeover / tar / disinterested / tribal / clarity / adapter / theorist / disposable / cleanup / godfather / guerrilla / pastoral / domination / settler / downhill / alleged / alternatively / resolute / likeness / literate / hitch / underlie / planter / longing / elegance / lender / humanitarian / arrogance / assassinate / confinement / enterprising / entity / exalt / propel / cruiser / crushing / inaccurate / ozone / chirp / amid / unwanted / blacksmith / retailer / decimal / rap / exotic / faction / fillet / numeral / symbolism
【レベル】9 (9)
marijuana / cheeky / mayonnaise / chronic / intolerant / transitional / immeasurable / affix / misbehavior / misdirect / encircle / akin / tumor / signpost / epic / variously / motherhood / skeptical / excerpt / quartz / contamination / exertion / fabulous / sonata / sovereignty / crescent / crimson / rectangle / footnote / observatory / italic / spreadsheet / occupant / freezing / environmentalist / overestimate / battlefield / laser / setback / breeder / gutter / briefing / reversal / perpetuate / haven / sustainable / perverse / carol / pickle / pinnacle
【レベル】10 (12)
fraternity / abide / detector / fruitless / facade / retrieval / disadvantaged / carbohydrate / parody / bloke / loft / logo / performing / fanatic / pertinent / ammonia / erection / maritime / antagonism / matching / poker / politic / methodology / heartbreak / urine / heave / parameter / simplistic / havoc / attributable / hysteria / smother / backfire / conveyance / tinker / psychiatric / weighty / mutation / spurt / heartless / bibliography / yoga / reassurance / rebate / shorthand / objectionable / decease / referendum / surveyor / invert
【レベル】11 (34)
ovation / overly / whack / respite / insidious / instill / adamant / patriarch / patronage / revoke / ailing / tepid / perjury / genetics / petal / clinch / clutter / drape / goad / appease / comer / sectarian / grandiose / grid / stigma / grudge / catalyst / ensemble / hallucination / sliver / milieu / evangelist / heterosexual / misgiving / deride / bastion / specter / covert / hull / quintessential / wobble / spurn / crony / ferment / blurt / cooper / fiddle / brash / rendezvous / degenerate
【レベル】12 (41)
rut / futility / satchel / dingy / tithe / discrete / topography / affront / lobe / typhoid / senile / lusty / duchy / daft / eavesdrop / impetuous / conciliatory / antecedent / precipice / antic / premonition / deforestation / venom / ventilation / vestige / promiscuous / insular / visage / cove / nocturnal / exhortation / crochet / ineligible / baloney / cursory / exude / rasp / stratum / berth / filial / zodiac / binary / insulation / ostentatious / interlude / outlay / supersede / judicious / tardy / dislodge

ちなみに、各レベルの隣のカッコ内の数字は、その50個の単語の中で私が分からなかったもの。レベル6から徐々に増加して、レベル12では殆ど分からないということになる。

各レベルの中で、おおよそ(間違えた数×20)を覚える必要があるとすると、レベル6〜レベル10は120〜240程度となり、努力のし甲斐がある数字な気がする。逆にレベル11〜12は気が滅入りそうだ。

また、12000語のうち、2300語程度を知らないということは、おおよそ1万語は知っているということが言えそうだ。もっとも、swim(レベル1)とswimmer(レベル3)、skate(レベル2)とskating(レベル2)などを別々の言葉としてカウントしているので、そのあたりは若干差し引いて考えないといけないのかもしれない。

単語のリストから50個の単語をランダムに抜き出すのは以下のようなスクリプトを使用した。

# coding: cp932

import random
import sys

number = 50	# 抽出する数

argvs = sys.argv
argc = len(argvs)

if(argc != 2):
	print 'usage: >python %s inputfile' % argvs[0]

f = open(argvs[1], 'r')
data = f.read()
f.close()
items = data.split('\n')
items.remove('')	# 空白行を削除

if(number > len(items)):
	print '母集団の数が選ぶ数より少ないです。'
	quit()

index = []
while(len(index) < number):
	index.append(random.randint(1, len(items)))
	index = list(set(index))	# 重複を避けるため一度集合型にして戻す

selected = []
for i in index:
	selected.append(items[i])

print ' / '.join(selected)