出現集中の概念
- 文字列が2回出現した文章数÷文字列が1回出現した文章数
- 文字列が1回出現した条件付きでの2回以上出現する確率
- 文字列がポアソン分布に従って出現するなら単語頻度に一致する
- 実際の部分文字列はもっと広く分布する
- 人間が決めたキーワードの分布はその一部に濃く分布する
スコア
- 「文字列が1回出現した文章数」は要するにDFなので、これで割るのはIDFである
- tf-idfだと分子がtfだが、こちらはDF2を持ってきた
- df2が3以下だと、対数スコアを-10000とする
- スコアが0.5を超えていたら0.5で飽和させる
これは文字列を引数として「キーワードらしさ」を返す関数と解釈できる
- 「この文書を代表するキーワードらしさ」ではない、文書は引数に取らない
- 「この言語におけるキーワードらしさ」である
- この関数は事前に大きなコーパスから求めておく必要がある
- どういう形で保存しておくと良いだろう?
- 接尾辞配列の形で十分な情報があるが、過剰に詳細
- 異なる文章での出現回数だけで良い、それも0か1か2以上かがわかれば十分
キーワード抽出を単語分割の問題に帰着している
- 分割されたそれぞれの文字列のスコアの積を最大化する分割を求める問題
- スコアが1以下なので、同じスコアであれば分割しない方が得
- なぜ?→キーワードの部分文字列もスコアが高いため
- SentencePieceと数学的には似た構造になりそうな気がする
- see SentencePieceのユニグラム言語モデル
- 「キーワードらしさ」のスコアを「単語らしさ」と読み替えてる
- Viterbiアルゴリズムで尤度最大となる単語分割を求める
分割した後で以下の条件を満たすものをキーワードとする
- 頻度が0.00005から0.1の範囲
- 対数スコアが-1以上
- 長さが2以上