📹

「字幕だけで動画を意味分割する:Embedding × 多次元Otsu法によるチャンク化設計」

に公開

字幕だけで動画を意味分割する — 多次元Otsu法によるシーンチャンク化アルゴリズム

🎯 Goal
字幕テキストだけを使って、動画の「意味の切れ目」で自動的にチャンク化(シーン分割)するアルゴリズムを、理論と設計の観点から解説します。
映像や音声解析は一切使わず、Embedding × 多次元Otsu法 × 再帰分割 のシンプルな設計で、意味的まとまりを検出します。


TL;DR

  • 字幕ごとに埋め込み(Embedding)を生成
  • 系列に対して 多次元Otsu法 を再帰的に適用
  • 前後の平均ベクトルの距離が最大になる点を分割点とする
  • チャンクの合計トークン数が max_tokens 以下になるまで再帰分割
  • トークン数は累積和で管理し、区間合計を O(1) で取得

問題設定

項目 内容
入力 SRT形式の字幕(インデックス、時刻、テキスト)
出力 意味が連続するとみなせる字幕群(開始・終了時刻+結合テキスト)
制約 映像・音響特徴は使用せず、テキストの意味変化のみで境界を検出

全体フロー


コアアイデア

  1. 各字幕テキストを高次元ベクトル(Embedding)に変換
  2. ベクトル列を時間順に並べ、任意の分割点で「前後の平均ベクトル差」を評価
  3. 差が最大になる位置を分割点とし、再帰的に分割を続ける
  4. 各区間の合計トークン数が max_tokens 以下になったら停止

アルゴリズム詳細

1. 字幕パース

SRTをブロック単位で処理し、以下を抽出します。

  • 開始時刻
  • テキスト

終了時刻は、そのシーンに含まれる最後の字幕の開始時刻を用います。
これは実装上の簡便化であり、実用上も十分機能します。


2. Embedding生成

各字幕を埋め込みモデル(例: text-embedding-3-small)でベクトル化します。
同時にトークン数も計測しておきます。
このトークン数は、再帰停止条件で利用します。


3. ベクトル正規化(L2)

ベクトル間の距離尺度を安定化させるため、各埋め込みを L2正規化 します。

e_t \leftarrow \frac{e_t}{|e_t|_2}

4. 分割点の探索 — 多次元Otsu法

ベクトル列

E = [e_1, e_2, \dots, e_T]

に対して、分割候補

\tau \in {1, \dots, T-1}

を全探索します。

目的関数(クラス間分散に相当)を次のように定義します。

J(\tau) = N_0 N_1 |\mu_0 - \mu_1|^2
N_0 = \tau, \quad N_1 = T - \tau
\mu_0 = \frac{1}{N_0}\sum_{t \le \tau} e_t, \quad \mu_1 = \frac{1}{N_1}\sum_{t > \tau} e_t

J(\tau) が最大となる位置を分割点とします。

💡 1次元Otsu法の多次元版
輝度ヒストグラムではなく、ベクトル分布の「意味的変化点」を最大化する方向で応用しています。


5. 再帰分割

任意の区間 [s, e] に対して上記探索を行い、分割点が見つかったら左右の区間に再帰的に適用します。


6. 停止条件(max_tokens)

  • 字幕ごとのトークン数の 累積和 を事前に計算
  • 区間 [s, e] の合計トークン数を O(1) で算出
  • 合計が max_tokens 以下ならシーン確定、再帰を終了

単一字幕の場合も当然分割せず確定します。


7. 出力再構成

確定した各シーンについて:

  • 開始時刻 = 最初の字幕の開始時刻
  • 終了時刻 = 最後の字幕の開始時刻
  • テキスト = 含まれる字幕の連結

としてSRT形式に再構成できます。


設計上のキーポイント

項目 ポイント
ベクトル正規化 L2正規化で距離評価の安定化
トークン管理 累積和でO(1)区間取得
分割点探索 全探索でOK(頑健かつ読みやすい)
停止条件 意味差ではなく max_tokens 一本化で安定化

計算量とパラメータ設計

要素 説明
計算量 平均再計算を素直に行う場合、1区間あたり O(T^2 \cdot d)
主要パラメータ max_tokens: 下流(要約・生成)に適したチャンク長に設定
埋め込みモデル コスト・品質・速度のバランスで選定(text-embedding-3-small など)

まとめ

この手法は、字幕テキストのみで意味的な区切りを抽出するシンプルなアプローチです。

  • 多次元Otsu法で「意味の変化点」を定量化
  • 再帰分割とトークン上限で「自然な文脈単位」に整形
  • 映像・音声なしでも チャプター化・要約前処理 に活用可能

📘 一文で言うなら:
「Embedding系列を多次元Otsu法で切ると、字幕だけで“意味的チャンク”が取れる。」


次の展開(応用例)

  • 生成AIの RAGチャンク化前処理
  • 自動 動画チャプター生成
  • 字幕付き講義動画の 要約単位抽出

Discussion