動画の「シリーズ性」をどうやって判定するか

 クローラは概ね完成し、シリーズかどうかを判定するロジックも一応できたのですが、始めてのRailsに少々苦戦しています。これを乗り越えれば、β版として公開できるでしょう。

 今回は、どうやって動画のシリーズ性を判定しているかを説明したいと思います。…が、その前にシリーズ性とは何か、シリーズ性を判定する上で何が障害となるかを説明します。

シリーズ性とは?

 まずシリーズ性とはなんぞやということですが、ゆっくりに限らずゲーム実況動画は大体が単発では終わらず、数個から多い人で百数十個の動画をシリーズとして提供するパターンが大方を占めています。

 で、ランキングサイトの今までにない試みとして、単一動画のランキングではなくシリーズのランキングを載せられたら面白いよねというのが、前回お話した本ランキングの1つの目的であるわけです。

 それを実現するためには、「この動画は何かのシリーズの一部であるかどうか」、あるいは「このマイリストはシリーズものをまとめたリストであるのかどうか」という判断を、どこかでする必要が出てきます。この性質のことをシリーズ性と勝手に呼んでいます。

シリーズ性を判定する材料にはなにがある?

 それがシリーズであるかどうかを判定する材料は、その取り扱いが技術的に易しいかどうかは置いておくと、次のようなものが考えられます。

  1. 同一のマイリストに含まれており、マイリストの制作者と、リスト中の動画の制作者が全て一致する。
  2. タイトルが類似している。
  3. 動画の説明文中に、シリーズ前後の動画、あるいはそれが属するシリーズものマイリストへのリンクがある。
  4. シリーズものは連続して観るはずなので、おすすめ動画に前後のシリーズが掲載される可能性がある。

 ただ、現在これらの全てを活用できておらず、概ね2に強く依存しています。

タイトルの「類似性」をどうやって判断する?

 タイトルの類似性、つまり文字列としての類似性を判定し、自分が設定したしきい値を超えれば「シリーズである」とするロジックですが、類似性を判断する基準を決めなければなりません。

 その基準には、現在は編集距離(レーベンシュタイン距離)を採用しています。編集距離とは、ある文字列を他の文字列に置き換える際に最小でどれだけの手順を要するかという指標です。

 現在のところ、この方法で「ゆっくり実況プレイpart1リンク」でタグ検索した約3,700件の動画から、2,400件のシリーズマイリストを抽出することができています。

 ただし、この手法には2つの問題があります。まず、当然ながら意味論的な類似性は全く考慮されないこと。そして、文字列が長くなるにつれ、形式的な類似性についても実態を反映しない可能性が高くなることです。例えば文章の一部を倒置させたりすると、人間の目には簡単な手順に映りますが、編集距離的には大幅な変更があったことになってしまいます(参考資料)。

もう1つの問題と、これからの改良策

 先に挙げた2つの問題のうち、前者は私の現在の技術ではどうにもなりませんし、他の手法で補えれば問題とはなりません。問題となるのは後者ですが、これは1と3で補うことを考えています。この組み合わせロジックは、次に説明するもう一つの問題の解決策にもなり得ます。まずはその問題について説明。

 ある動画群がシリーズであるとき、投稿者がそのシリーズを公開マイリストとしてまとめて登録するのはよくあることです。今までの説明も、それを当然の前提にしてきました。

 しかし、全ての投稿者が公開マイリストを用意するわけではありません。公開マイリストがない場合、最も多いパターンが、「前回:sm******** 次回:sm********」という形で説明文中にリンクを貼るパターンです。

 このパタ―ンは、公開マイリストを補足するというやり方では漏らしてしまうため、独自に補足するロジックを用意しなければなりません。また、このパターンは公開マイリストを用意している場合も併用されることが多いため、この補足ロジックを開発することは、さっき挙げた編集距離の認識不全問題の手助けともなり得ます。

つまりどうすんの?

 つまりこういうことです。動画のシリーズ性を判定する際に、審査を2段階設けます。現在はまず「ゆっくり実況プレイpart1リンク」のタグ検索を行い、その各動画の説明文中のマイリストを抽出し、抽出されたマイリストに対して判定を行っています。以下が現在の処理です。

  1. 「ゆっくり実況プレイpart1リンク」でタグ検索
  2. 各動画の説明文中のマイリストを抽出
  3. 抽出されたマイリストに対して、編集距離による類似性の判定

 このロジックに、次の段階を加えます。

  • 類似性にネガティブ判定が出た場合、説明文中の動画へのリンクを辿っていく。
  • 辿っていった動画がリンクし、かつ同一投稿者である限度で、そのリンクチェーン内の動画をシリーズとみなす。

 このロジックを加えることで、編集距離による類似性判定でグレーな場合も、シリーズ性が認められる可能性が高まります。そもそも、編集距離の類似性は私が感覚的なしきい値を設定しているわけで、合理的な基準があるわけではありません。今説明したロジックは、そういったあいまいな要素を排するため、組み合わせることによってかなりの精度の向上が期待されます。

まとめ

 このロジックはまだ構想だけで、実装はできていません。そもそも「ゆっくり実況プレイpart1リンク」という、人間の手作業による、すでにシリーズであることが強く推定される高い精度のふるいに掛けられており、本来はこのタグの付く動画の数だけシリーズがあるはずです。しかし、現在はその3分の1を漏らしているので、早いところ実装して改善したいものです。もっとも、テスト公開が先だとは思いますが。

 今回は、シリーズ性の判定方法について説明しました。こういうアルゴリズムを自分で作ることは、計算機学を学校で学んだわけではない身にとっては新鮮でありながら、大変難しいものです。文中で何か間違ったことを言っていたら、指摘して頂けるとありがたいです。

 次回更新時は、β版の公開のお知らせ…になるといいな。