仕組みの説明
1. モデルの構造
サブワード分割(BPE など)を使わず、1文字を最小単位として扱う Transformer です。 日本語はスペース区切りがないため、文字単位のアプローチがシンプルかつ軽量に動作します。
入力テキストは次の流れで処理されます。
- 文字埋め込み — 各文字を 384 次元のベクトルに変換します。
- 位置エンコーディング — 文字の並び順をモデルに伝えます(最大 192 文字)。
- Transformer エンコーダー(4 層)— 自己注意機構と SwiGLU FFN で周囲の文脈を読み取ります。
-
2 つの出力ヘッドで、文字ごとに独立して判定します。
- 句読点ヘッド: 「なし / 、 / 。」の 3 クラス分類
- 改行ヘッド: 改行すべきかどうかの確率(0〜1)を出力
2. 推論の流れ
入力テキストは前処理 → スライディングウィンドウ推論 → 判定の 3 ステップで処理されます。
ステップ 1: 前処理
既存の句読点(「、」「。」「?」)、改行、全角スペース、タブ、半角スペースをすべて取り除き、 プレーンな文字の列にします。モデルは「ここに句読点があるべきか」を文脈だけから判断します。
ステップ 2: スライディングウィンドウ
モデルが一度に処理できるのは最大 192 文字です。長い文章は 144 文字ずつずらしながら 重なりを持たせた窓(ウィンドウ)で切り出し、それぞれをモデルに通します。
複数の窓で重なった文字には、窓の中央に近いほど高い重みを与えます(Center Weighting)。 窓の端では文脈が不完全になりやすいため、中央の予測を優先することで境界のブレを抑えます。 すべての窓の結果を重み付き平均で統合し、各文字の最終的なスコアを得ます。
ステップ 3: 判定
- 句読点: 「、」や「。」のスコアが「なし」のスコアをマージン以上に上回った場合に挿入します。
- 改行: 改行確率がしきい値(デフォルト 30%)を超えた場合に挿入します。
3. 学習データ
このモデルは LLM-jp Corpus v4 を使って学習されています。日本語の多様なテキストを含む大規模なコーパスです。