豪鬼メモ

一瞬千撃

レベル別の英単語リストの自動生成

レベル別の単語集を自動生成するという目標を持って、今までいろんなデータを集めてきた。必要なデータは全て揃っているが、レベル別の単語集という体裁に整える前に、辞書内の単語を重要順に並び替えて表示する機能を作ってみた。だいたい直感に合う結果になったのではないかと思っている。


まずはこのデモサイトにアクセスされたい。辞書に収録された各単語やフレーズについて重要度を算出し、重要度が高い順に100語ずつ抽出して「レベル」という単位にして並べている。画面右側の矢印をクリックしていくと、次のレベルの単語群を閲覧していける。全ての英語の語の中で最も重要な20語は以下のような感じだ。ネイティブ英語話者なら幼児でも知っている単語であり、日本人でも "as" 以外は中学1年で習うものばかりだ。"as" は重要語だけど機能が多すぎて難しいので仕方ないところか。

  • the : その, かえって, いうもの, ザ, な人々
  • be : ある, いる, 存在する, である, れる, 存在
  • in : に, 中に, 中へ, 中で, インチ, 中, の中で
  • of : の, 属する, 作った, 量の, 程度の, ついて
  • a : 同じ, 作品, A, つき, ある, というもの
  • and : 及び, と, や, かつ, また, そして, とか
  • to : に, まで, へ, 方向に向かって, する
  • on : の上に, に, 上, 表面に, 続けて, ずっと
  • for : ため, 向けて, ための, ために, 行き, 故に
  • have : 持っている, 持つ, 有する, 経験する, 飲む
  • use : 使用, 利用, 使う, 使い, 用途, 用いる, 使用する
  • make : 作る, メーク, 引き起こす, 造る, 構成する
  • with : 備えて, とともに, と, 一緒に, 付く, 理解して
  • by : によって, により, までに, で, 側に, よって
  • as : ように, 等しく, 同様に, あるように, として
  • it : それ, それは, これ, あれ, 節, 時刻, 天気
  • do : 行う, やる, 行なう, 間に合う, 引き起こす
  • that : その, こと, それ, あの, あれ, 程
  • can : できる, 缶, 解雇する, 首にする, 王座, 裏
  • time : 時刻, 時期, 時間を計る, 時代, 時

レベル50(上位5000語)以降になると、かなり大学入試っぽくなってくる。"come to"(意識が戻る) の "to" は前置詞でなく副詞的助詞だよみたいな話を基礎英文法問題精講とか英文法標準問題精講とかでやったのはもう遥か昔だ。あと、どうでもいい話だが、"myth" の発音は "mɪθ" だから「マイス」じゃなくてせめて「ミス」って読むべきところだが、バンダイから「聖闘士星矢 聖闘士聖衣神話(セイントクロスマイス)」って商品が出てたよね。たぶん "miss" と混同しないようにわざとやっているんだろうけど、そのおかげで入試でミスったら悲しい。

  • expel :追い出す, 放出する, 追放, 駆逐する, 除名する, 追放する
  • unfortunately : 残念ながら, 生憎, 残念, 不幸にも, あいにく, 折り悪く
  • prediction : 予測, 予想, 予知, 予言, 予報, 見通し, 予言すること
  • blond : ブロンド, 金髪の, 金髪, ブロンドの
  • dispense : 施す, 施行する, 投薬する, 免除する, 免ずる, 分ける
  • reservoir : 貯水池, 蓄積, 宝庫, タンク, ため池, 人造湖, 溜池, 用水地
  • come to : 意識を回復する, 関わる, 触れる, 係る, 起こる, 影響する
  • punish : 罰する, 懲らしめる, 処刑する, 罰す, 処分する, 乱暴に扱う
  • perfume : 香水, 香料, 香り, 芳香, 匂い, 香水をつける, パフューム
  • noodle : ヌードル, 麺, 麺類
  • moist : 湿った, 湿気のある, 湿っぽい, 湿性の, 湿潤な, 湿潤の
  • donate : 寄付, 寄付する, 贈与する, 寄贈, 施す, 寄贈する
  • pierce : 突き刺す, 突き刺さる, 貫く, 刺し通す, 貫通する
  • persist : 持続する, 続く, 言い張る, 固執する, 残る, 支える
  • wedge : ウェッジ, 楔, ウエッジソール, 押し込む, 詰め込む
  • Spanish : スペイン, スペイン語, スペイン人, スペインの, スペイン語
  • nip : 盗む, かみ切る, 挟む, 絞る, ショット, 切る, 好み
  • myth : 神話, 架空の人物, 虚構, 虚像, 伝説的人物, 伝説
  • programing : プログラミング, スケジューリング, スケジュールの作成
  • wavelength : 波長

さて、あなたが知らない単語はどのレベルで初めて表示されるだろうか。各々の単語について、一つ以上の語義を思い浮かべられるなら既知とみなすという基準にしてみよう。私の場合、レベル44の99番目、つまり重要度4399位の "substrate"(基質)より前の単語は、うろ覚えも許すなら、全てなんとなくは知っていると言えるものだった。レベル100で言えば、"snoop"(詮索する)が未知語だった。それでもレベル100の他の語は知っていた。そこから先はだんだん怪しくなってくるが、100個の中に知らない単語は一つか二つという感じがしばらく続いた。レベル200くらいになると半分くらい未知語が出て来て、レベル250くらいになると8割方が未知語になる。てことは、私は17000語くらいは覚えていると言えそうだ。結構頑張っているつもりだが、しかし、ネイティブ並みの3万語には程遠い。

私一人を被験者にして妥当性を判定しても信憑性は低いが、上位の方はかなり直感的な結果になっていると思う。少なくともレベル50(上位5000語)くらいまでは日常会話でバンバン出てくるし、知らないと聞き返さねばならないような単語がほとんどだ。レベル100(上位10000語)くらいまでは覚えていて損はないという語やフレーズが詰まっている気がする。そこから先もまだまだ知っておくべき単語が続くのだが、一生出会わないような語もちらほら混じってくるので、網羅的に覚えるという感じではなくなってくる。レベル200を超えて出てくる "weft"(横糸)、"gawk"(まぬけ)、「burly」(頑丈な)、"cornucopia"(豊饒)、"incisor"(門歯)とかは、おそらく小説とか読むと普通に出てくるだろうし、教養のあるネイティブ英語話者なら知っている言葉だろうけど、我々が生きる上で知らなくて困るということはないだろう。最高レベルは1796だが、レベル1000を超えると、さすがに多くのネイティブ英語話者が知っているという範疇からは外れてくる。下位語は "turkey stuffing"(七面鳥の詰め物)みたいな複合語や "chimney plant"(ホタルブクロの亜種)みたいな学術名や "Henry VII"(ヘンリー8世)みたいな固有名詞が多くを占める。

さて、各単語の重要度をどのように判定したかというのが今回の要点だ。基本的には、Wikipedia英語版とWMTニュースコーパスにおける語の出現頻度と獲得年齢(AOA)データベースの値の相乗平均をもとにスコアリングしている。つまり、(prob_score * aoa_score) ** 0.5 だ。尺度や変域が違う複数の指標を合成する時にはいつも迷うが、調和平均か相乗平均を使うのが常套手段だ。悪い指標に寄せたい場合は前者で、良い指標に寄せたい場合は後者ってところか。

獲得年齢のスコアについては、そのカバー率が完全ではなく、ボーナス的な扱いなので、今回は相乗平均を採用して混ぜている。さらに、aoa_score = 25 - min(aoa or 20, 20) とかいうわけのわからん式を使った。つまり獲得年齢がなかったり20以上だったりしたら一律に20で扱い、その場合のスコアが5になる。獲得年齢が5だったらスコアが20となり、上位語と下位語で4倍くらいの差が出るように調整してある。ところで、獲得年齢は複数語からなるフレーズすなわち熟語には付与されていないので、それを構成する単語から推定する。少なくとも最も獲得年齢が高い構成要素よりはフレーズ全体の獲得年齢は遅いはずだが、おそらくその最も難しい単語を覚える過程でそのフレーズにも出会っているだろう。そう考えると、最大の獲得年齢に「単語数-1」を足すというくらいでよさそうだ。言い換えれば、中心語を覚えた1年後には、1つ単語が増えた熟語も覚えるだろうということだ。例えば、「abide by」の場合、「abide」と「by」の内で最も遅い獲得年齢は「abide」の12.61で、それに2-1=1を足して13.61が推定値となる。

出現頻度は対数尺で考えるのが一般的だが、相乗平均を取る時点で対数尺になるので、確率のままで使う。でもそうすると効きすぎるので、prob_score = max(prob ** 0.5, 0.00001) とかいうこれまたわけのわからん式を適用している。つまり平方根をとって低頻度語を救済するとともに、超低頻度語の出現率は信用しないという作戦だ。さらに、WordNetWiktionaryの語義説明を見て多義語であればボーナスを与えて、また派生語を多く持つ語にもボーナスを与えている。具体的な実装はこれだ。

実は、獲得年齢だけで並び替えてもそれなりに納得できるリストにはなるのだが、そうすると「mama」「potty」「puppy」みたいな幼児語が上位を占める一方、「the」などの機能語の優先度が下がるという問題があった。各種の努力をしても獲得年齢のカバー率は限定的であり、一部の重要語すら抜けるという問題もあった。なので、やはり王道であるコーパス内の出現率をベースに調整するということで落ち着いた。そのコーパスWikipediaとニュースなので、専門用語や学術用語のスコアが無駄に高くなることがあるのは今後の課題である。COCAとかのバランスコーパスを使えばもうちょいマシにはなりそうだが、そのために500ドルとか払うのもなぁ。

訳語は日本語WordNetWiktionary日本語版のデータをもとに適当に類語展開した上で対訳コーパス内の頻度を数えてつけているので、精度はいまいちだが、再現率はかなり良い。たまに誤訳や超訳があるが、WordNet由来の英語の語義説明が確認できるので実用上の問題はないだろう。


そもそも何でこの単語リストを作ったのかというと、自分が何語くらい知っているのかを知るためと、たまに復習して既知語の記憶を維持するためだ。結果として、少なくとも17000語くらいは知っているというのはわかったし、2時間あれば上位20000語を流し読みすることができたので、目的は達成できた。獲得年齢を使うことで上位語の納得感が高まり、出現率で調整することで全ての語を一定の基準で扱うことができる。ネイティブ英語話者とある程度知的な会話をしたり、新聞や雑誌や小説を辞書なしで読めるようになるということを目標にすると、10000語目くらいまでは覚えておくべき単語ばかりだ。15000語を過ぎるとだんだん怪しくなってくるが、それでも知っていて損はない。

あと、派生語や関連語や熟語はまとめて覚えた方が学習効率が良さそうだと改めて感じた。辞書データにはそれらのデータを付与してあるので、うまいこと組織化して、より単語集っぽい体裁のデータを吐き出しても面白いだろう。まず、"live", "living", "lively", "livable", "liveness" といった派生語はまとめるべきだ。さらに、"live in", "live with", "live on", "live down", "live large", "live together", "live up", "live up to" といった熟語や定型句も同時に表示すべきだ。ランキングにおいて語根でる "live" が出たときにその子達を全て消費して表示すればよい。もうちょい頑張って、"alive", "aliveness" あたりもくっつけられるかもしれない。そうやって語集団リストを構成したと仮定すると、上位5000語集団くらいを覚えればOKみたいな単語集ができるかもしれない。派生元と派生先の親子関係は、獲得年齢の伝搬の際にすでに抽出してある。あと、熟語に関してもインデックスを使って抽出して既に辞書に登録してある。N-gram頻度のデータベースが重要熟語の選定に役立った。

さらに言うと、より意味に踏み込んで、"live" に紐付けて "dwell", "alive", "exist", "survive", "reside" とかを一気に覚えるという方法もあるだろう。これは類語検索アルゴリズムを応用すればできそうだ。重複を避けてグループ化しようとするとクラスタリングみたいな話になってきて面倒なので、重複を許す方が現実的だろう。"live" は生きるという意味もあるし、住むという意味もあり、どちらかに決めることにあまり意味はない。それより、「生きる」「住む」「走る」「美しい」「素早い」といった大きな意味のリストを作る方が重要だろう。WordNetのsynsetをクラスタリングする研究はいっぱいあるっぽいので、そのデータを貰ってくればできそうだ。
(追記:後に類義語をまとめて覚えるための連想英単語集を実装した)


ところで、「赤毛のアン」(Anne OF Green Gables)の冒頭の段落に現れる単語のレベルを見てみよう。どのレベルを保持していればこの作品をすらすら読めるのか。

MRS. Rachel Lynde lived (2) just (2) where (2) the (1) Avonlea main (5) road (6) dipped (27) down (8) into (3) a (1) little (4) hollow (28), fringed (45) with (1) alders (369) and(1) ladies’(13) eardrops (1402) and (1) traversed (75) by (1) a (1) brook (87) that (1) had (1) its (1) source (66) away (31) back (1) in (1) the (1) woods (59) of (1) the (1) old (1) Cuthbert place (1); it (1) was (1) reputed (122) to (1) be (1) an (1) intricate (124), headlong (267) brook (87) in (1) its (1) earlier (3) course (5) through (1) those (1) woods (59), with (1) dark (6) secrets (13) of (1) pool (9) and (1) cascade (88); but (1) by (1) the (1) time (1) it (1) reached (3) Lynde’s Hollow it(1) was (1) a (1) quiet (13), well-conducted (10) little (4) stream (10), for (1) not (1) even (2) a (1) brook (87) could (1) run (1) past (8) Mrs. Rachel Lynde’s door (11) without (1) due (8) regard (9) for (1) decency (141) and (1) decorum (137); it (1) probably (17) was (1) conscious (62) that (1) Mrs. Rachel was (1) sitting (6) at (1) her (1) window (9), keeping (2) a (1) sharp (13) eye (6) on (1) everything (16) that (1) passed (23), from (1) brooks (87) and (1) children (3) up (1), and (1) that (1) if (1) she (1) noticed (7) anything (15) odd (18) or (1) out (1) of (1) place (1) she (1) would (3) never (8) rest (5) until (7) she (1) had (1) ferreted (168) out (1) the (1) whys (1) and (1) wherefores (381) thereof (65).

レベル100までの語を知っていると過程しよう。そうすると、"alder"、"eardrop"、"intricate"、"decorum"、"decency"、"headlong"、"ferret", "wherefore" でつまづく。"alder"(ハンノキ)はレベル369なので、ネイティブ話者でも知らない可能性が高いが、文脈から推定するに、道を囲む存在だということはわかる。"eardrop"(耳飾り)なんてレベル1402なんで、普通は出てこない古風な言い回しだろうが、文脈と字面から、淑女の耳から垂れる物だと推定できる。"intricate"(入り組んだ)、"decorum"(礼儀作法)、"decency"(礼儀)、"headlong"(向こう見ずな)は、知らないと文脈から推定するのは難しい。ただ、文学作品で出てくる難解な形容詞や副詞や名詞は「あれげな」「あれげに」「あれ」などと言い換えれば意味が通るというか、無視してもなんとかなることが多い。"ferret"(狩り出す)は動物のフェレットがする何らかの動作だろうと推定できなくもなさそうだが、なかなか難しいところだ。"wherefore"(理由)も古風な言い回しで、字面から判断するに場所に関する疑問みたいなことかと思ってしまうところだが、"why"(理由)の言い換えであり、これも知らないと推測は難しい。

そういうわけで、レベル100まで知っていてもこの冒頭の段落の読解には手こずる。冒頭でつまずいていては、その先も明るくはなさそうだ。文脈推定力を駆使するだけでは厳しい語が多いので、実際には辞書がないと読んでいられないだろう。レベル50だと、"cascade"(急流)、"brook"(小川)とかの普通名詞でつまづくので、辞書を引きまくるはめになり、読むペースが遅過ぎて投げ出したくなってしまうだろう。逆に、レベル150までマスターしていれば、"alder" とか "wherefore" とかを無視するか辞書引くかすれば読めるので、この作品を何とか楽しめるだろう。

次、「チャーリーとチョコレート工場」(Charlie and the Chocolate Factory)。この作品は意図的に単語を限定して書かれているので、非ネイティブにも読みやすいとされる。

These (1) two (3) very (4) old (1) people (1) are (1) the (1) father (6) and (1) mother (4) of (1) Mr Bucket. Their (1) names (1) are Grandpa (160) Joe and (1) Grandma (151) Josephine. And (1) these (2) two (3) very (4) old (1) people (1) are (1) the (1) father (6) and (1) mother (4) of (1) Mrs Bucket. Their (1) names (1) are (1) Grandpa (160) George and (1) Grandma (151) Georgina. This (1) is (1) Mr Bucket. This (1) is (1) Mrs Bucket. Mr and (1) Mrs Bucket have (1) a (1) small (2) boy (10) whose (12) name (1) is (1) Charlie.

冒頭だけなら、レベル10くらいで読めるのかな。幼児語である "grandpa" と "grandma" のレベルが100を超えているのは、Wikipediaとニュースコーパスの頻度からレベルを算定している弊害だろう。獲得年齢だけで考えれば、"grandpa" は4.89で "grandma" は3.88なので、もっとレベルを低く算定しても良かったかもしれない。それら例外を除けば、おそらくレベル50までで、この作品に現れるほとんどの単語はカバーできるのではないかと思う。実際私も通読したが、ほとんど辞書を引くことなく読解することができた。ただし、単語数を絞った作品では、基本語を組み合わせた熟語を駆使することで表現を豊かにする傾向があり、非ネイティブにはそういった熟語が鬼門になる。熟語に関しては、非ネイティブは日常生活で身に着けることはできないので、熟語集を予め読んでおくしかない。

何が言いたいかというと、ほぼ全ての単語の重要度をレベルという尺度に落とし込んでみると、文章の読みやすさを定量評価できるということだ。また、そうして測定できる読みやすさに応じて、読者がどの程度の語彙力を備えているべきかというのを予め知り、学習して備えることができる。アンはレベル150くらいは欲しいし、チャーリーはレベル50で十分だろう。


技術的な話からはちょっとずれるが、どうやって英単語を覚えるべきかという話を蛇足ながら書いてみたい。英単語を覚えていくにあたり、重要語を優先して扱うのは定石である。よって、レベル別にまとめられた市販の単語集を使うのが王道だ。個人的には、松本茂の「速読速聴・英単語」シリーズがおすすめである。単語は例文と一緒に覚えると記憶に定着しやすく、またその例文も単文でなくまとまった文章のものであることが望ましい。よって、同一の文章を英語と日本で併記した対訳コーパスとその中に現れた単語の解説がついた形式の単語集が望ましい。また、一冊で済ませるような手軽なものよりも、網羅性を重視して分量を増やしつつ、段階的に取り組めるものがよい。同シリーズはまさにそれで、Basic、Daily、Core、Opinion、Business、Advanced、TOEIC Standard、TOEIC Globalの8冊があって網羅性も素晴らしく、また付属のCDを聴きながら取り組むとリスニング力も上がる。社会人になりたての頃はTOEICでスコア280を叩き出した私も、この8冊とForest英文法を地道にやって2周したら何とか英字新聞が読めるようになって、その頃にはスコアも950を超えた。あと、風早寛の「速読英単語」シリーズと鈴木陽一のDUOシリーズと中澤幸夫の「テーマ別英単語ACADEMIC」も対訳コーパス方式でお勧めできる。それらも全部2周ずつやった頃には満点取れたので、テスト対策としては、この方法で十分だと思う。

しかし、実際の会話となると未だにダメダメな私だ。ネイティブ話者同士が非ネイティブ話者に気を使わないで話している状況では、半分くらいしか聞き取れないのが実際のところだ。会話力をつけるには会話の経験が必要であり、私にはその時間が圧倒的に少ないのが問題である。英文読解に偏った方法は、陰キャ・コミュ障でもできるという利点はあるが、やはり実際に英語で会話しないと、実用的な英会話力は身につかない。とはいえとはいえ、周囲の英語話者を「無料の英会話教師」として扱うのは失礼だ。彼らに話しかける以前に、彼らに有益な情報を与えて友好関係を育むのに必要な最低限のコミュニケーション能力は自助努力で身につけておくべきだ。その一環として単語集を回しておくのは悪い話ではない。

ところで、人は忘れる。新しい事を覚えると古い記憶は曖昧になっていく。よって、語彙力を維持するには、日常で豊富な語彙を使い続けるか、定期的に再学習する必要がある。単語集を回すのはそれにも効果的ではあるが、時間がかかりすぎる。同じコンテンツを読んでも面白くは無いし教養が深まらない。なので、再学習の際には単語のみを一覧するというのは効率的だろう。今回の単語リストはまさにそのために作った。リストを一瞥して、知らない単語のみをメモっておいて、そこに集中して覚え直すという使い方が良いだろう。メモ機能というか、フラグを立てておいて後でリスト化する機能があると便利そうだが、それは追って検討しよう。


まとめ。単語の出現確率と獲得年齢データベースを組み合わせると、レベル別の単語集を自動生成できる。単語の並び順に何が正解であるかの基準を設けるのは難しいので精度を論じることはできないが、私個人の主観としては、そこそこまともなリストになっていると思う。これをベースに、何らかのグループ化を行えば、それっぽい単語集ができるだろう。例文の自動収集とかもできると良さげだ。