続編はオリジナルよりも優れていますか?

May 09 2023
著者: Justin Cheigh および Daisuke Yamada 要約: この記事では、続編がオリジナルよりも優れているかどうかという質問に答えようとしています。そのために、特定の映画シリーズのレビューに対してセンチメント分析を行います。

著者:ジャスティン・チー山田大輔

要約:この記事では、続編がオリジナルよりも優れているかどうかという質問に答えようとしています。そのために、特定の映画シリーズのレビューに対してセンチメント分析を行います。50,000 件の映画レビューを含むkaggle データセットでトレーニングしましたが、Python のセレンライブラリを使用して IMDb から映画レビューをスクレイピングしますGitHub リポジトリをチェックして、読んでくれてありがとう!

これから見ていくシリーズ

モチベーション

続編が実際にオリジナルよりも優れているかどうか疑問に思ったことはありますか? ええ…私たちは皆そこにいました。実際、この何世紀にもわたる疑問に対する答えは、私の生涯にわたって私たちを悩ませてきました. 私たちは答えを求めて精査しました。標準的な映画理論は具体的な答えを与えませんでした。言語学と文学理論は完全に一致していませんでした。哲学は混乱を増やしただけです。そこで、最後の可能な手段であるデータ サイエンスに目を向けました。簡単なカンフー パンダ マラソンの後、作業に取り掛かりました。

私たちの計画は、ラベル付けされたデータを使用して感情分析モデルをトレーニングすることでした。このモデルを使用すると、さまざまなシリーズの映画のレビューの感情を判断できます。ここから、続編とオリジナルを比較できるように、各映画の人気を測定するヒューリスティックを開発できます。

データのスクレイピングと前処理

まず、データが必要でした。50,000 件の映画レビューを含むIMDb データセットがkaggleで見つかりました。それぞれにポジティブまたはネガティブのラベルが付けられています。このデータセットは、バイナリ感情分析モデルのトレーニングに最適でしたが、さまざまなシリーズの映画レビューに関するデータも必要でした。

私たちは、ハリー・ポッター、スター・ウォーズ、カンフー・パンダ、カーズの 4 つの異なるシリーズを扱うことにしました。各シリーズの各映画のIMDb で映画のレビュー/ランキングを見つけた後、セレンを使用してデータをスクレイピングしました。このデータを CSV ファイルのフォルダー (/reviews/original) として保存しました。各ファイルには、(少なくとも) 映画のレビューと関連する星の評価が含まれています。今後は、これらの星評価を評論家評価または単に評価と呼びます。

感情値(肯定的または否定的な感情)をラベル付けしたトレーニング データセットとは対照的に、これらのレビューには批評家が決定した実際の評価(1 ~ 10、1が最悪、10 が最高) がありました。後で分析する際に、この不一致を認めます。

スクレイピングされたデータの例 - カンフー パンダ 2

感情分析モデル

この後、感情分析モデルのトレーニングに着手しました。最初のステップは、レビューを何らかの数値ベクトルにエンコードすることです。単純な方法は、単語を 1 つのホット エンコードするだけです。ただし、これは、単語の意味的な理解を欠く巨大な入力ベクトルにつながります (たとえば、USA と America を完全に異なるものとして扱います)。

したがって、単語埋め込みレイヤーを使用することにしました。単語の埋め込みは、意味の類似性を考慮した方法で単語を数値ベクトルとして表します。たとえば、同義語はベクトル空間で互いに「近い」場合があり、次のような意味関係を学習することもできます。

Word 埋め込みの利点の例 (developers.google.com から)

具体的には、事前トレーニング済みの GloVe 単語埋め込みを使用して、モデルに埋め込みレイヤーを定義しました。この埋め込みレイヤーを定義したら、モデルの定義に進みました。基礎となるモデルでは、双方向の LSTM (Long Short-Term Memory) を使用することにしました。LSTM は、長期的な依存関係を処理するように設計されたリカレント ニューラル ネットワーク (RNN) の一種です。

従来の RNN では、時間による逆伝播が必要なため、一般的に勾配消失 (または爆発) の問題が発生しますLSTM は、情報の流れを制御できるメモリ セルを使用することで、この問題を解決します。つまり、3 つのゲートがあります:入力ゲート(セルに入る新しい情報)、忘却ゲート(現在のセル情報のどれだけが忘れられるか)、および出力ゲート(LSTM の出力を生成するために使用されるセル状態の量)。 )。シグモイド活性化によって表されるこれらのゲートは、より長期的な依存関係を可能にします。以下に、LSTM のアーキテクチャを示します。

LSTM アーキテクチャ

双方向 LSTM は、 2 つの LSTMを使用してこの構造に基づいて構築され、双方向の情報の流れを可能にします。つまり、LSTM は過去の情報のみを保存しますが、双方向 LSTM は過去と未来の両方の情報を保存します。これにより、ネットワークは周囲の単語のコンテキストを持つことができます。そのアーキテクチャの図を以下に示します。

双方向 LSTM アーキテクチャ

双方向 LSTM を次のように実装しました。

# define pre-trained embedding layer
pre_emb = Embedding(
  input_dim=len(word_index)+1, 
  output_dim=seqlen, 
  weights=[embedding_matrix], # from GloVe embedding
  input_length=seqlen, 
  trainable=True
  )

with tf.device(device):
    # define bidirectional LSTM
    model = Sequential([
        pre_emb, # embedding layer
        Bidirectional(LSTM(128, return_sequences=True)), 
        Dropout(0.2),
        Bidirectional(LSTM(64)),
        Dropout(0.2),
        Dense(128, activation='relu'),
        Dropout(0.2),
        Dense(1, activation="sigmoid") # binary classification
    ])

    # compile
    model.compile(
        loss=BinaryCrossentropy(from_logits=True),
        optimizer='adam',
        metrics=['accuracy']
    )

トレーニングが完了すると、このモデルは50% のベースラインと比較して、テスト セットで86.9% の精度を獲得しました! このトレーニング済みモデルができたので、それをスクレイピングした映画のレビューで使用できます。そのため、スクレイピングした CSV ファイルを取得し、レビューに対するモデルのセンチメント予測に基づいて、0 (ネガティブ) または 1 (ポジティブ) を含む「センチメント」列を追加しました。これらの CSV ファイルは /reviews/annotated に保存されました。

結果と分析

素晴らしい!したがって、各シリーズの各映画のレビューごとに、モデルのセンチメント予測 (0 または 1) と批評家の実際の評価 (1 ~ 10) の 2 つの情報があります。いくつかの表記法を定義しましょう。レビューrを修正します。M(r)をレビューのモデルのバイナリ感情予測とし、C (r) をレビューが関係する映画の批評家の実際の評価とします。

M(r)C(r)の関係は? まあ、良い評価のレビューは直感的に肯定的な感情を持っているはずです。これは、 M(r)C(r)の間に正の相関が必要であることを意味します。実際、絶対的な理想的なケースは、次の関係です ( C(r) が絶対的または客観的な満足度を反映していると仮定します)。

M(r)/C(r) 関係の理想的なケース

では、実際の関係とは?

M(r)とC(r)の関係

これらのプロットを分解してみましょう。各列は、あるシリーズの映画を表しています。例として、最初のハリー・ポッター映画を表す左端の列を使用します。この映画のスクレイピングされたレビューのセットをRとします。次に、プロットを次のように解釈できます。

  • 一番上の数字 (7.7) は批評家の平均評価です。形式的には(C(R)) を意味します。
  • 赤色の数字は、モデルがポジティブと予測したレビューの批評家の平均評価です。正式には平均 ({C(r) | R および M(r) = 1} の r)。
  • 青色の数字は、モデルが否定的と予測したレビューに対する批評家の平均評価です。正式には平均 ({C(r) | R および M(r) = 0} の r)。

これを確認した後、M(r) によってグループ化された C(r) の分布をさらに調査することにしました。次のプロットが得られます。

Star Wars/Harry Potter の C(r) を指定した M(r) の分布

たとえば、Harry Potter Positive プロットは、モデルが肯定的な感情を含むと分類した Harry Potter 映画のレビューに対する批評家の評価の分布を示しています。これらのプロットがどのように見えることを期待または希望しますか? M(r)とC(r)の関係の理想的な式に戻りましょうポジティブ プロットには評価が 5 を超えるレビューのみが含まれ、ネガティブ プロットには評価が 5 以下のレビューのみが含まれることを願っています。

少なくとも、評価が肯定的である場合は評価が高くなり、否定的である場合はその逆の場合に、レビューの数をいくらか増やしたいと考えています。これは肯定的なプロットにも当てはまり、私たちのモデルが肯定的に評価されたレビューをうまく分類できることを示しています。ただし、これはネガティブには当てはまりません。私たちのモデルは、否定的な評価のレビューをうまく分類できません。

これは興味深いです。考えられる説明の 1 つは、肯定的なレビューはより明白であるということです。彼らは「この映画は素晴らしかった!」などと言います。一方、否定的な評価のレビューは、解読するのが少し難しい場合があります。次の (偽の) レビューを考えてみましょう: 「この映画の CGI とアニメーションが好きな人もいるかもしれませんが、私はファンではありませんでした」. これは、ニューラル ネットワークにとって非常に難しいケースです。「愛」や「ファン」などの言葉は一般的に肯定的な感情に関連付けられていますが、これが否定的なレビューであることを知るには、文脈を真に理解する必要があります。

これは単なる潜在的な仮説です。より良い感じを得るために、肯定的/否定的な感情でグループ化するときに、各映画のワードクラウドを作成しました。

ハリー・ポッターのレビューのワードクラウド (左がポジティブ、右がネガティブ)

ここでいくつかの重要なことに気付きました。1つ目は、「ハリー・ポッター」、「本」、「映画」、「シーン」、「映画」などの非常に予測可能な単語が非常に一般的であることです. その理由の 1 つは、GloVe 埋め込みで固定コーパスを使用したことです。特定のコーパスに固有の単語埋め込みレイヤーを使用することは有益だったかもしれません。埋め込みレイヤーをトレーニング可能にすることでこれを説明しようとしましたが、GloVe 以外の別の方法を試すこともできたでしょう。

また、ポジティブなワードクラウドとネガティブなワードクラウドに「良い」などの単語が見られ、ネガティブなレビューを分類する際の問題が再確認されます。素晴らしい!データの視覚化を行い、データセットの理解を深めたので、入力映画mを取り、人々がその映画をどれだけ好きであるかに比例する値を出力するヒューリスティックH(m)を定義したいと思います。

ヒューリスティックとさらなる分析

モデルの予測と実際の評論家の評価の両方をH(m)で説明したかったのです。H(m)を次のように定義します。

最初に、肯定的な評価の平均評論家評価によって、肯定的な評価の数を重み付けします。次に、これを使用して、否定的なレビューの平均評論家評価によって重み付けされた否定的な評価の数を差し引きます。これは優れたヒューリスティックですが、私たちのモデルは否定的なレビューを分類するのに最適ではないことを覚えておく必要があります. したがって、否定的なレビューの平均評価は実際には気にしません。これにより、ヒューリスティックは次のようになります。

では、このヒューリスティックを使用すると、どのような結果が得られるでしょうか? 4 つのシリーズのそれぞれについて、2 つのプロットを作成することにしました。1 つ目は批評家の平均評価と映画の比較で、2 つ目はヒューリスティックと映画の比較です。

ハリー・ポッターのプロット
スターウォーズプロット
カンフーパンダプロット
車のプロット

シリーズごとにグループ化すると、平均評価プロットがあまり変化しないことに注意してください。これは、各シリーズのすべての映画が、レビュアーによってほぼ同じレベルで見られていることを示しています。これは、実際にこのサイトにレビューを投稿した個人と、さまざまなスコアを付けようとする意欲を示しているだけかもしれません.

右のプロットは、シリーズごとにかなりランダムに見えます。相対的なランキングが実際に重要であるため、y 軸の実際の数値はほとんど無関係であることに注意してください。系列が進むにつれてH(m)が増減する明らかな傾向はありません。これには間違いなく例外がありますが(スターウォーズ) 、オリジナルは続編よりもわずかに人気がある傾向があるようです.

もう 1 つの興味深い点は、ハリー ポッターを除けば、ヒューリスティックによると、最後の映画が最も人気がないか、最も人気がないかのどちらかであるということです。シリーズが人気の欠如のために生産を停止するか、高い評価で終了するため、これは直感的に理にかなっています. さらに、これはハリー・ポッターには当てはまりません。本が終了すると終了したからです.

結論と今後の課題

素晴らしい!続編がオリジナルよりも悪い、または良いという明確な傾向は見つかりませんでしたが、このテーマに飛び込む機会がありました. GloVe の単語埋め込みを適切に使用し、双方向 LSTM を実装することができました。さらに、データをスクレイピングして分析を行うことに成功しました。

将来的には、変換器などのより複雑な NLP モデルを検討する可能性があります。しかし、私たちの最大の問題は、適切なヒューリスティックH(m) を定義することでした。私たちのヒューリスティックが優れているかどうかを明確に判断するのは困難ですが、欠けている可能性があることを示唆する理由があります.

たとえば、あるシリーズの映画全体でa_pが一定であるとします。プロットから、これは大きな仮定ではないことがわかりました。次に、ヒューリスティックはH(m) = C * r_p -r_nに縮小されます。ここで、C = a_pは定数です。これは、批評家のレビューが私たちのヒューリスティックにほとんど考慮されていないことを意味します。これは、私たちのモデルが否定的なレビューを分類するのに最適ではないことをすでに知っているため、問題です.

これらの挫折にもかかわらず、これは全体的に本当に楽しいプロジェクトでした! 読んでくれてありがとう!