Skip to content

Releases

sekken v0.6.0

Choose a tag to compare

@Warashi Warashi released this 15 Oct 03:29
v0.6.0
9c62036

sekken 0.6.0 です。配布する文字言語モデル lm.zst を新しくし、英数字を混ぜた技術的な文の変換を直しました。本人の文から語の n-gram を数える個人化を足しました。

lm.zst は新しいものに入れ替えてください。model.zst は 0.5.0 のものと同じです。0.5.0 の lm.zst もこの版のエンジンで読めますが、精度は新しい lm.zst の方が上です。バイナリと Emacs 側は一緒に上げてください(バージョンが合わないと警告が出ます)。

変換の精度

sekken-train の評価文での先頭一致です(凍結、個人化なし)。どれも同じ評価の入力で測りました。

条件 英数字を含む技術文(1,741 文) 英数字を含む作者の文(1,997 文)
0.5.0 の lm.zst、下のカタカナ語と数値変換の変更の前のエンジン 74.4% 55.5%
0.6.0 の lm.zst、同じエンジン 78.9% 60.5%
0.6.0 の lm.zst と 0.6.0 のエンジン 84.8% 60.6%

技術文は Kubernetes の日本語ドキュメントと The Rust Programming Language の日本語訳から取りました。0.5.0 のエンジンそのものでは測っていません。

変更

  • lm.zst を新しくしました。zenz-v2.5-dataset の Wikipedia 由来のペアで学習した、公式の Mamba-3 SISO の式のモデルです(sekken-train の run py-mix-a-wiki)。英数字の読み下しを綴りに書き換えた組で学習しています
  • 辞書に無い長いカタカナ語(パフォーマンスオーバーヘッド)を 1 区間で打っても、後ろがひらがなで残らなくなりました。語彙に無いカタカナ語を、語彙のカタカナ語の並びとして採点します
  • 数字の literal の後で SKK の数値変換の見出し(#つ など)を引きます。'3;tuno が「3角」ではなく「3つの」になります。打った半角の数字のままの候補が先に出ます。漢数字(三つ)は下位の候補に出し、全角の数字には書き換えません
  • literal の直後のひらがなの候補に掛ける罰則を軽くしました(既定 2、--literal-kana-penalty)。'Emacs;no の「の」が漢字になりにくくなります
  • 確定した文から本人の語の n-gram を数え、配布の model.zst に混ぜるようにしました。数えた分はエンジンを止めたときに sekken-server-personal(既定は user-emacs-directory の sekken-personal.zst)に書きます。M-x sekken-learn-files と sekken learn で、過去に書いた org・Markdown の文もまとめて数えられます
  • 確定で lm.zst の出力層を動かす個人化は、動かすたびに元の重みへ引き戻すようにしました(--adapt-anchor、既定 10)。引き戻さないと、数千文確定すると一般の文の変換が崩れていました。動いた出力層は、元にした lm.zst の指紋と一緒に保存します。lm.zst を入れ替えると古い出力層は読まずに学び直すので、sekken-lm.zst を手で消す必要はありません
  • --lm-int8 で lm.zst の線形層を int8 の行列積で読めるようにしました(aarch64 の dot product、x86_64 の AVX-512 VNNI か AVX-VNNI)
  • DEL と backspace は入力中の語の末尾をかな 1 つ分ずつ消します
  • ローマ字の読み方を変えました。n 単体は子音の前と区間の終わりで「ん」になります。子音 1 文字は「っ」にせず、重ねた子音(kk)で「っ」にします。z の後の空白は全角空白になります。二重の ; / ' はどの区間でもその文字 1 つになります
  • 前置引数のコマンドでは語を確定しません。候補一覧の外のコマンドは、一覧が出ていても走る前に確定します
  • エンジンの JSON-RPC に learn が増えました

Assets

  • lm.zst: zenz-v2.5-dataset の train_wikipedia.jsonl の全ペアから学習した、読みと出力を交互に並べる条件付き文字言語モデル(run py-mix-a-wiki、57 MB)
  • model.zst: Wikipedia 日本語版と FineWeb-2 日本語から学習した語 bigram モデル(Kneser-Ney、118 MB。0.5.0 と同じ)
  • THIRD-PARTY.md: 学習データ、辞書および同梱データの出典・許諾条件

学習済みモデルは CC BY-SA 4.0 で提供します。FineWeb-2 由来の部分(model.zst)には ODC-By 1.0 と Common Crawl の利用規約も掛かります。出典とその他の条件は THIRD-PARTY.md を参照してください。

sekken v0.5.0

Choose a tag to compare

@Warashi Warashi released this 19 Sep 00:41
v0.5.0

sekken 0.5.0 です。確定した文で言語モデルを個人化し、自動確定を「見えていたもの」に揃え、変換方式を投機的変換に一本化しました。

model.zst と lm.zst は 0.4.0 のものと同じで、そのまま使えます。ただし lm.zst は必須になりました。

変更

  • 確定した文で lm.zst の出力層を 1 歩動かす個人化を足しました。語の終わりで 1 位候補に置き換わったときと C-j で候補を選んだときに、読みと文をエンジンに送ります。動いた出力層はエンジンを止めたときに sekken-server-adapted-lm(既定は user-emacs-directory の sekken-lm.zst)に書き、次の起動はそのファイルを lm.zst より先に読みます。捨てるにはそのファイルを消します。lm.zst を入れ替えたときも消してください。エンジン側は --adapt-lr(既定 3e-3)、--adapted-lm、JSON-RPC の adapt です
  • 個人化は誤変換かどうかを見ません。外れた語のまま置き換わった文を学習した後は、M-x sekken-register で登録しただけでは登録した語が先に出ないことがあります。登録した語を C-j で一度選べば、次の変換から先に出ます
  • 自動確定は、走る前に見えていたものをそのまま入れ、新しい変換を待たなくなりました。候補がまだ届いていなければ、見えていたかな(打ち足す前の 1 位候補に残りのかなを繋いだもの、または全部かな)のまま置き換わります。保存や送信の直前にエンジンの応答を待って止まることはありません。最新の候補が要るときは C-j を使います。打鍵ごとの先読みが失敗しても打鍵は止まらず、理由は sekken-convert-last-error に残ります
  • 変換方式を投機的変換に一本化し、lm.zst を必須にしました。N-best の並べ替え方式と言語モデルなしの格子だけの方式、--rerank-width、--spec-rounds 0 は消しました。sekken-server-lm が nil ならエンジンを起動する前にエラーになります
  • 母音を待つ子音で終わる語(nek)は表示どおり「ねk」で置き換わります。境界で閉じた区間の末尾の子音は変換して送ります(Nek; は「ねっ」)。> で終わる語(O>)は接頭辞の見出しで先読みします
  • 入力中の語の状態を sekken-word.el に集めました。振る舞いは変えていませんが、sekken-input-typing-commands は sekken-word-typing-commands に改名しました
  • ローマ字解析の期待値を Rust と Emacs で共有する share/input-cases.tsv を足し、末尾の空の区間を送らない扱いを揃えました
  • エンジンの JSON-RPC に adapt が増え、--lm が必須になりました。0.4.0 の Emacs 側とこの版のエンジンは組み合わせられません。バイナリと Emacs 側を一緒に上げてください

Assets

  • model.zst: Wikipedia 日本語版と FineWeb-2 日本語から学習した語 bigram モデル(Kneser-Ney、118 MB。0.4.0 と同じ)
  • lm.zst: zenz-v2.5-dataset の Wikipedia および llm-jp-corpus-v3 由来データの全量から学習した、読みと出力を交互に並べる条件付き文字言語モデル(run interleave-full。0.4.0 と同じ)
  • THIRD-PARTY.md: 学習データ、辞書および同梱データの出典・許諾条件

学習済みモデルは CC BY-SA 4.0 で提供します。FineWeb-2 と llm-jp-corpus-v3 由来の部分には ODC-By 1.0 と Common Crawl の利用規約も掛かります。出典とその他の条件は THIRD-PARTY.md を参照してください。

sekken v0.4.0

Choose a tag to compare

@Warashi Warashi released this 14 Sep 10:51
v0.4.0

sekken 0.4.0 です。ユーザー辞書を足し、打鍵に合わせて 1 位候補が見えるライブ変換にしました。

model.zst と lm.zst は 0.3.0 のものと同じで、そのまま使えます。

変更

  • ユーザー辞書を足しました。SKK 辞書に無い固有名詞や自分の語彙を M-x sekken-register で登録すると、エンジンが sekken-server-user-jisyo(既定は user-emacs-directory の sekken-jisyo)に書き、次の変換から SKK 辞書より先に引きます。置き換わった語を直して region で選んで呼ぶと、読みは最後に置き換えた語のかなが既定値になります。登録できるのは送りなしの語だけです。エンジン側は --user-jisyo と JSON-RPC の register です
  • 打鍵に合わせて入力中の語の 1 位候補が overlay に見え、語の終わり(空白や改行、移動、送信、保存など、語を続けるコマンド以外)で確定の打鍵なしにそのまま置き換わります。1 位以外の候補は C-j で選びます。completion-at-point-functions への候補の提供と corfu-auto の連携は外しました
  • 入力中の語は自分が打ち始めた位置からポイントまでの文字で、もとからバッファにある文字や貼り付けた文字は語になりません。空白以外の打てる文字はすべて語の文字なので、1on1 のような語も 1 語として打てます。置き換えを undo で取り消してローマ字に戻せば語に戻ります
  • / で開いた区間は SKK の abbrev として綴りをそのまま見出しに引き(/emacs → Emacs)、> は接頭辞・接尾辞の境界になります(O>Kai → 御会、Toukyou>Kai → 東京会)
  • ' で開いた区間は辞書を引かず綴りのまま出します(Kyouha'Emacs;wo;tsukau → 今日はEmacsを使う)。リテラルの ' は '' です
  • エンジンの入力を変えました。henkan の params はローマ字の input ではなく、エディタがかなにして種類(kana / convert / literal / abbrev)と > の印を付けた区間の列 pieces です。0.3.0 の Emacs 側とこの版のエンジンは組み合わせられません。バイナリと Emacs 側を一緒に上げてください
  • ローマ字を前置して学習した旧形式の lm.zst(0.1.0・0.2.0 のもの)は読み込みで拒みます。0.3.0 以降の交互形はそのまま読めます
  • 変換表から n' を外しました

Assets

  • model.zst: Wikipedia 日本語版と FineWeb-2 日本語から学習した語 bigram モデル(Kneser-Ney、118 MB。0.3.0 と同じ)
  • lm.zst: zenz-v2.5-dataset の Wikipedia および llm-jp-corpus-v3 由来データの全量から学習した、読みと出力を交互に並べる条件付き文字言語モデル(run interleave-full。0.3.0 と同じ)
  • THIRD-PARTY.md: 学習データ、辞書および同梱データの出典・許諾条件

学習済みモデルは CC BY-SA 4.0 で提供します。FineWeb-2 と llm-jp-corpus-v3 由来の部分には ODC-By 1.0 と Common Crawl の利用規約も掛かります。出典とその他の条件は THIRD-PARTY.md を参照してください。

sekken v0.3.0

Choose a tag to compare

@Warashi Warashi released this 13 Sep 06:50
v0.3.0

sekken 0.3.0 です。語 bigram を Wikipedia + FineWeb-2 日本語の Kneser-Ney に、文字言語モデルを読みと出力を交互に並べた形の全量学習に差し替え、既定の重みと言語モデルの使い方を測り直した値にしました。作者の文 750 文の先頭一致は、0.2.0 の組み合わせに対して bigram だけで 40.9% → 55.5%、言語モデル込みで 50.1% → 62.1% です。Wikipedia の文では bigram だけで 30.6% → 31.5%、言語モデル込みでは 35.9% → 33.1% と下がります(作者の文の方に寄せた重みです)。

変更

  • model.zst の形式を v4 にしました。0.2.0 の model.zst はこの版では読めず、この版の model.zst は 0.2.0 では読めません。lm.zst も交互形になり、0.2.0 のバイナリでは使えません。バイナリ・model.zst・lm.zst を一緒に置き換えてください
  • 語 bigram は Wikipedia 日本語版に FineWeb-2 日本語(1 本の 2 文書おき、3728 万文)を足して数え、Kneser-Ney(割引 0.8)で平滑化しています
  • かな罰則の既定を 2 → 4、辞書順位の重みの既定を 1 → 3 にしました(--kana-penalty / --rank-weight で変えられます)
  • lm.zst を渡したときの既定を、N-best の並べ替えから、言語モデルの提案で格子を再探索する投機(幅 5・反復 3)にしました。並べ替えに戻すなら --spec-rounds 0 です。1 打鍵あたり 10 ms ほど、文全体で 40〜110 ms ほど遅くなります
  • z- の変換結果を ~(U+FF5E、全角チルダ)から 〜(U+301C、波ダッシュ)に変え、skkeleton の表と同じにしました
  • っ を単独で綴った送り仮名(Toxtuta → 取った)でも送りあり候補を引くようにしました
  • 交互形の言語モデルは、直前の変換で採点した候補の状態を持ち越して、伸びた分だけ読みます

Assets

  • model.zst: Wikipedia 日本語版と FineWeb-2 日本語から学習した語 bigram モデル(Kneser-Ney、118 MB)
  • lm.zst: zenz-v2.5-dataset の Wikipedia および llm-jp-corpus-v3 由来データの全量から学習した、読みと出力を交互に並べる条件付き文字言語モデル(run interleave-full)
  • THIRD-PARTY.md: 学習データ、辞書および同梱データの出典・許諾条件

学習済みモデルは CC BY-SA 4.0 で提供します。FineWeb-2 と llm-jp-corpus-v3 由来の部分には ODC-By 1.0 と Common Crawl の利用規約も掛かります。出典とその他の条件は THIRD-PARTY.md を参照してください。

sekken v0.2.0

Choose a tag to compare

@Warashi Warashi released this 10 Sep 23:10
v0.2.0

sekken 0.2.0 です。n-gram モデルのファイル形式を変え、起動を約 5 秒から約 1 秒に縮めました。

変更

  • model.zst の形式を、読み込んだ配列のまま引ける固定幅の列に変えました。0.1.0 の model.zst はこの版では読めず、この版の model.zst は 0.1.0 では読めません。バイナリと一緒に置き換えてください
  • sekken server はモデルの読み込みを別スレッドで進め、読み込み中でも version に即応答します。Emacs 側は初回の変換が成功するまで sekken-server-startup-timeout(既定 60 秒)で待ちます
  • モデルの読み込みに失敗したときは stderr と JSON-RPC エラーに理由を残して終了します

Assets

  • model.zst: Wikipedia 日本語版から学習した語 bigram モデル(0.1.0 と同じ頻度を新形式で保存したもの)
  • lm.zst: zenz-v2.5-dataset の Wikipedia および llm-jp-corpus-v3 由来データから学習した条件付き文字言語モデル(run f645ee5、0.1.0 と同じ)
  • THIRD-PARTY.md: 学習データ、辞書および同梱データの出典・許諾条件

学習済みモデルは CC BY-SA 4.0 で提供します。出典とその他の条件は THIRD-PARTY.md を参照してください。

sekken v0.1.0

Choose a tag to compare

@Warashi Warashi released this 10 Sep 15:29

sekken 0.1.0 の初回リリースです。

Assets

  • model.zst: Wikipedia 日本語版から学習した語 bigram モデル
  • lm.zst: zenz-v2.5-dataset の Wikipedia および llm-jp-corpus-v3 由来データから学習した条件付き文字言語モデル(run f645ee5)
  • THIRD-PARTY.md: 学習データ、辞書および同梱データの出典・許諾条件

学習済みモデルは CC BY-SA 4.0 で提供します。出典とその他の条件は THIRD-PARTY.md を参照してください。