テキスト句読点付与 (軽量Transformerモデル v)

テキストに、Transformerモデルを使って句読点と改行を付与します。 モデルサイズ: 読み込み中

音声入力: 未開始

結果

処理時間: -

待機中

仕組みの説明

1. モデルの構造

サブワード分割(BPE など)を使わず、1文字を最小単位として扱う Transformer です。 日本語はスペース区切りがないため、文字単位のアプローチがシンプルかつ軽量に動作します。

入力テキストは次の流れで処理されます。

  1. 文字埋め込み — 各文字を 384 次元のベクトルに変換します。
  2. 位置エンコーディング — 文字の並び順をモデルに伝えます(最大 192 文字)。
  3. Transformer エンコーダー(4 層)— 自己注意機構と SwiGLU FFN で周囲の文脈を読み取ります。
  4. 2 つの出力ヘッドで、文字ごとに独立して判定します。
    • 句読点ヘッド: 「なし / 、 / 。」の 3 クラス分類
    • 改行ヘッド: 改行すべきかどうかの確率(0〜1)を出力
入力: 文字 ID (input_ids) Token Embedding Positional Embedding LayerNorm & Dropout Transformer Encoder (4 Layers) Self-Attention SwiGLU FFN Final LayerNorm Punct Head (Linear Layer) 句読点予測 (NONE / 、/ 。) Newline Head (Linear Layer) 改行予測 (確率 0.0~1.0)

2. 推論の流れ

入力テキストは前処理 → スライディングウィンドウ推論 → 判定の 3 ステップで処理されます。

ステップ 1: 前処理

既存の句読点(「、」「。」「?」)、改行、全角スペース、タブ、半角スペースをすべて取り除き、 プレーンな文字の列にします。モデルは「ここに句読点があるべきか」を文脈だけから判断します。

ステップ 2: スライディングウィンドウ

モデルが一度に処理できるのは最大 192 文字です。長い文章は 144 文字ずつずらしながら 重なりを持たせた窓(ウィンドウ)で切り出し、それぞれをモデルに通します。

複数の窓で重なった文字には、窓の中央に近いほど高い重みを与えます(Center Weighting)。 窓の端では文脈が不完全になりやすいため、中央の予測を優先することで境界のブレを抑えます。 すべての窓の結果を重み付き平均で統合し、各文字の最終的なスコアを得ます。

スライディングウィンドウ 入力テキスト(句読点除去済み) あ い う え お か き く け こ さ し す せ そ た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま み む め も ... ウィンドウ 1 192 文字 ウィンドウ 2 192 文字 重なり 48 文字 ストライド: 144 文字 Center Weighting(中心重視の重み付け) 窓の中央ほど予測を信頼し、端ほど控えめに扱います 0.25 0.63 1.00 0.63 0.25 中央 重なった文字は、各窓の重みに基づいて加重平均されます 最終スコア = Σ(重み × 予測) / Σ(重み)

ステップ 3: 判定

  • 句読点: 「、」や「。」のスコアが「なし」のスコアをマージン以上に上回った場合に挿入します。
  • 改行: 改行確率がしきい値(デフォルト 30%)を超えた場合に挿入します。

3. 学習データ

このモデルは LLM-jp Corpus v4 を使って学習されています。日本語の多様なテキストを含む大規模なコーパスです。