百人一首テキストエディタ

詩的な文章を書いてみてください。あなたにぴったりの小倉百人一首をご紹介します。

はじめに一度だけ、判定器を取り込みます

この道具は、書いた文章を外へ送りません。判定は、いまお使いの端末の中だけで行います。 そのために、判定するしくみ(約160メガバイト)を、この端末へ取り込みます。

通信量が大きいので、高速で、通信量の制限がない回線でお使いになることをお勧めします。 取り込みは最初の一度だけです。二度目からは、保存したものを読み込むので数秒で始まります。

0 / — メガバイト  

  1. 言葉の対応表を読み込む
  2. 判定器の本体を取り込む
  3. 判定器を組み立てて、計算機(GPU)に載せる

組み立てには十数秒かかることがあります。画面が止まって見えても、動いています。

技術情報

何をしているか

書いている文を、12個の主題(待つ、逢えない、人目、別れ、約束、涙、独り、月、秋、春、冬、時)について 「有」か「無」かで判定し、その配列に近い札を100首から選んでいます。100首の側の主題は、あらかじめ人手で付けてあります。

判定のしくみ

TypeSafe社の jev(System One型モデル)の考え方を借りています。文章を書かせるのではなく、 型の決まった問いを並べて、確率つきの答えを一度に返させる方式です。その再現実装である kev を手がかりに、ここでは12個の問いを1本の系列にまとめ、 「待つ?」「逢えない?」…と並べた各「?」の次の位置を一度に読み取っています。 12回ぶんの計算が1回で済み、判定はこの端末で 0.1秒から0.3秒 で終わります。

使っているもの

  • 土台のモデル … llm-jp/llm-jp-3-150m(1億5千万パラメータ、Apache-2.0)
  • 追加の学習 … LoRA(土台は凍結し、全体の数パーセントだけを学習する方式)。 日本語の文章1602件に12主題の正解を付けて学習しました。取り分けた235件での正答率は0.955です。
  • 実行のしくみ … 学習した差分を土台に統合し、ONNX形式へ書き出して4ビットに量子化しました。 ブラウザでは transformers.js が WebGPU(使えないときはCPU)で動かします。
  • 札の絵 … Wikimedia Commons のパブリックドメインの絵札100枚

外と通信するもの

判定器の取り込みと、部品の読み込みだけです。書いた文章、判定の結果、選ばれた札は、どこへも送りません。 書いた文章はこの端末のブラウザの保存領域に残り、次に開いたときに続きから書けます。

百人一首テキストエディタ

詩的な文章を書いてみてください。あなたにぴったりの小倉百人一首をご紹介します。 判定器を読み込んでいます