本稿は機械翻訳であり、原文は英語です。 原文を読む

書き言葉の日本語の半分は158文字。次の45%にはさらに1000文字が必要となる。

A student works late in a small bookshop cafe with an open dictionary and a notebook of practice strokes, brush pen in hand, shelves of books rising into warm lamplight behind her as rain runs down the window.

100の漢字でコーパスの40.74%をカバーできる。872文字で90%に達する。次の5パーセントポイントにはさらに290文字が必要となる。

1001588721,1622,136 kanji40.7%90.0%95% → 100%coverage
ツールによる、学習した文字数に対するカバー率。最初の100文字で40ポイントを獲得し、最後の974文字で5ポイントを獲得する。

kanji frequency toolは、60の文学作品から抽出された709,707回の漢字出現で構成されるコーパス上で動作する。指定した文字数でそのテキストのどれくらいが読めるかを尋ねると、以下のように回答する。

  • 最も頻度の高い100漢字 — 40.74%(全出現回数における割合)
  • 158漢字 — 50.11%、テキストの半分
  • 872漢字 — 90.02%
  • 1,162漢字 — 95.00%
  • 全2,136漢字 — 100%

その列を下に読み進めると、その形状は明白である。最初の100文字で40パーセントポイントを獲得する。次の772文字で49ポイントを獲得する。その後の290文字で5ポイントを獲得する。そして最後の974文字 — リスト全体のほぼ半分 — が最後の5パーセントを獲得する。

あらゆる言語における同じ曲線

これがジップの法則であり、その執拗なまでの再現性こそが奇妙な点である。任意の大きなテキストの単語を出現頻度順に並べると、順位rの単語の頻度はおよそ1/rに比例して低下する。2番目に頻出する単語は1番目の約半分の頻度で現れ、10番目は約10分の1、100番目は約100分の1の頻度となる。

これは英語、日本語の漢字、ラテン語、そして言語学者が録音機を持って現れるまで書き言葉の伝統を持たなかった言語においても成立する。プログラミング言語でも成立する。また、概ね都市の規模、ウェブサイトの訪問数、姓においても成立する。

この法則に欠けているのは、合意された説明である。ピアンタドーシによる2014年のレビュー論文は誠実な概観を示している。このパターンには議論の余地がなく、提案されたあらゆるメカニズム — コミュニケーションの最適化、ランダムタイピング、優先的接続、意味構造 — は、詳細の予測に失敗するか、偽である事象も同時に予測してしまうかのいずれかである。これは言語の研究において最もよく記録された規則性の一つであるが、なぜそれが存在するのかを説明できる者は誰もいない。

内側から感じる感覚

この曲線は心理的な特徴を持っており、言語を学んだことのある人なら誰しもその両端を経験している。

始まりは幸福感に満ちている。100文字 — 2週間の学習量 — を覚えるだけで、テキストの40%が壁ではなくなる。新たに覚える文字はいずれも実に高頻度で現れるため、進捗が加速しているように感じられる。同じページ内で再びその文字に出会うのだ。

その後、曲線は残酷なまでに平坦化する。ツールは補数を「次に現れる漢字が未知である確率」として出力するが、この数値こそが、実際の読書感覚をより正確に表す指標となる。既知の漢字が100文字の場合、1.7文字に1文字の割合で手が止まる。872文字では10文字に1文字である。1,162文字では20文字に1文字となる — これは流暢さに思えるかもしれないが、そうではない。1文が20文字だとすれば、毎文つっかえることになるのだ。

最後の区間こそが学習者が挫折する場所であり、この曲線はモチベーションに帰することなくその理由を説明する。終盤の文字は定義上稀少である。1つの文字を学習しても1週間再会しないことがあり、これこそが記憶が減衰するまさにその条件である。1文字あたりの努力が増加するのではない — 1文字あたりの強化が崩壊するのだ。

なぜマシンにとっても重要なのか

この同じ偏りが、言語モデルがテキストをどのように分割するかを決定する。

語彙数は有限でなければならず、ジップ分布においては確率質量の大部分がごく一部の要素に集中し、稀少な要素の終わりのない裾が続くことになる。あらゆる単語に固有のトークンを与えると、その裾は使用不能になる — 何百万ものエントリーがそれぞれ数回しか出現せず、学習は不可能となる。一方、各文字に固有のトークンを与えると、頻出単語がそれぞれダース単位のスロットを無駄に消費することになる。

サブワードトークン化はその妥協案であり、tokenizer toolはその結果を示している。頻出単語は単一のトークンとして生き残り、稀少な単語は断片へと細分化される。それこそが、度数分布曲線をそのままデータ構造にしたものである。また、モデルが「the」を完璧に扱い、珍しい姓をうまく扱えない理由もここにある — 姓の方が難しいからではなく、十分なデータが存在しなかった分布の領域に位置しているからである。

アンドそれは圧縮の上限を設定する。entropy labは次の記号がどれほど予測外であるかを測定するが、偏った分布は低エントロピーな分布である。ごく一部の文字が支配的であれば、より少ないビット数で符号化でき、これこそが圧縮アルゴリズムが利用する原理そのものである。テキストが非常に良く圧縮される理由こそがジップの法則であり、上記のカバー率の表は、同じ事実をビットではなく文字数で数えたものに過ぎない。

覚えておく価値のある数値が1つある。95%のカバー率であっても、20文字に1文字の割合で漢字は未知のままである。この曲線は最初は寛大で最後は無慈悲であるが、その両半球はまったく同じ法則なのだ。