けむブログ

データ分析に関する気付きや学びを記録するブログ

記事の自動タグ付け方法について

記事の自動タグ付けがしたくて、事例を調べてみました!

つまりどれが良さそう?

  • 1記事1タグなら:記事分類→分類ごとに出現頻度の高い単語をタグ付け
  • 1記事nタグなら:本当は事例4のやり方が良さそう。ただBM25の使い方が理解できていない・・

簡単にいうと?

  • 事例1:記事を先に分類し、その中から出現頻度の高い単語をタグとして採用する
  • 事例2:記事ごとに、上位200文字の中からTF-IDFで重要単語として上がったものを5つ設定
  • 事例3:記事ごとに、特徴単語をBM25で抽出してタグ付け
  • 事例4:記事ごとに、独自ロジック(TF=IDF、BM25活用)で特徴単語を抽出しタグとして適用

具体的には?

事例1  ~記事を先に分類し、その中から出現頻度の高い単語をタグとして採用する~

分析手順

  1. カテゴリ別に収集した記事群においてコサイン類似度を用いて記事の類似度を測定する.
  2. 類似度が高く関連性が高い記事を収集する.
  3. 記事群の中でクラスタを生成する.
  4. クラスタ内において頻出単語 (関連タグ) を抽出する.
  5. 頻出単語 (関連タグ) をクラスタを構成する記事に対して付与する f:id:kemuex:20181022112055p:plain

事例2 ~記事上位200文字の中からTF-IDFで重要単語として上がったものを5つ設定~

  • 抽出したキーワードについて,TF-IDF 値を求め,得られた重要タグにタイトルタグとカテゴリタグを追加
  • 加えて、何人かにタグを付けてもらいそれを正解データとして以下の場合でタグ付けした時の正答率を求めている

  • 方法 1:キーワード抽出箇所全文,タグ数 5 つとした場合.→正答率低

  • 方法 2:キーワード抽出箇所 200 文字目まで,タグ数 5 つとした場合.→正答率高
  • 方法 3:キーワード抽出箇所全文,文字数によってタグ数を変化させる場合.→正答率中(記事によっては多くのタグをつけることができ説でない場合がある)

https://www.jstage.jst.go.jp/article/fss/26/0/26_0_21/_pdf/-char/ja

分析手順

  • 記事情報の取得
  • 形態素解析
  • TF-IDF 計算
  • タグ付け
  • 古い記事の削除
  • タグの重要度更新

事例3 ~記事ごとに特徴単語をBM25で抽出してタグ付け~

  • Okapi BM25 の操作を自作して自動タグ付け(※結果精度は粗いらしい)

kyoh86.work

事例4 ~記事ごとに独自ロジック(TF=IDF、BM25活用)で特徴単語を抽出しタグとして適用~

特徴

  • BM25で分類、かつ、一般語を更に弾くために青空文庫のデータを一般辞書としてtf-idfのロジックに組み込む
  • それらのデータを元にタグ付け

inside.pixiv.blog

分類手順

  1. 全作品の説明文を形態素解析器にかけて名詞(うまくいきそうなら副詞や形容詞も)を抽出
  2. BM25という情報検索で使われるアルゴリズムでキーワードを重み付けする
  3. 他の作品と結び付かないキーワードは捨てる(青空文庫のデータを一般辞書としてtf-idfのロジックに組み込む!)
  4. BM25重み付けの値の高い順に上位N個のキーワードを並べてやる(これを作品の「タグ」とする)