SLDA_thum2.png

2022.05.02

読了時間:15分

トピックモデルの派生形「SLDA」でレビュー解析【実践編】

古橋和宏

こんにちは!sodaの古橋です。
「SLDA」を用いたレビュー解析後編、実践編の記事になります。

前回記事で予告した通り、劇場版鬼滅の刃のレビューデータにSLDAを適用してみます。
データは「映画.com」のレビューデータを使用しました。

※ここから先、映画の内容のネタバレにご注意下さい




解析開始!・・・の前に

さっそく解析開始といきたい所ですが、解析のイメージを膨らませるためにまずは今回使用するデータをさらっと確認してみます。

kimetsu_data.png

レビュー数は全部で1112件。scoreは0.5~5まで0.5点刻みで存在します。
このデータを基に、SLDAでやりたいことは2つです。
1. textを良い感じに表現する潜在トピックの抽出
2. 1の潜在トピックをscoreの回帰にもフィットするよう調整して抽出

・・「潜在トピック」ってなんでしたっけ?
端的に言うと、「文書を圧縮して表現するための幾つかの単語グループ」みたいなものです。
こちらは後々、実際に抽出されたものを見てみましょう。
SLDAの場合、2の工程で潜在トピックに「score予測に対する影響度」という情報が付加されます。

このように、文書と同時にscoreの分布もモデリング出来るSLDAを用いることで、各トピックとそれに紐づく単語がscoreにどれくらい影響を与えるのか、可視化してみようと思います!

人によって点数の基準も違うので、レビュー文章のみからscoreをピタリと当てるのはなかなか人間でも難しそうに感じますが、果たしてどんな結果が出るのか楽しみですね!

では、以上を踏まえた上で実際に解析した結果を見てみましょう。

解析結果

まずはどんな単語がどれくらい出現したかのサマリーデータです。

kimetsu_word_freq.png

 ※キャラクターの呼び名は極力1種類になるよう統一しています。
  (「煉獄、煉獄杏寿朗、杏寿朗、煉獄さん、れんごくさん」->「煉獄さん」等)

煉獄さんの人気が凄まじいですね。
出現文書数が530となっているので、全体の半数近くのレビューに登場していることになります。
しかし、言語解析においてあまりに高頻度で出現する単語は解析の障害となることも多いので、残念ですが煉獄さんは泣く泣く単語リストから除外しています。。。

その他にも、今回は全体の30%以上の文書に登場する高頻度語及び、4文書以下にしか出現しない低頻度語を削除対象としました。

では次に、実際にSLDAを適用してどんな潜在トピックに分かれたのか、こちらです。

kimetsu_slda_latent.png

黄帯で書かれた「一般レビュー」「映像表現全般」などは、分析者(私です)が単語の所属確率を見て恣意的に付けた潜在トピックのタイトルになります。
例えばトピック1は「炭治郎」「猗窩座」「善逸」などのキャラクター名を表す単語が大きく表示されている(文字の大きさ=所属確率)のでそのまま「キャラクター」トピックとしました。

レビュー文章毎にこの5つの潜在トピックに対する所属率が割り振られるので、モデリングが上手く行っていれば、例えば映像表現に対して沢山言及しているようなレビューは、トピック2への所属率が高くなっているはずです。 kimetsu_topic2.png

そして、SLDAの結果として最も注目して頂きたいのが上部に記載された「係数」という数値です。

この係数が持つ意味ですが、SLDAの場合は文章毎に潜在トピックの割当率を計算し、割当率×係数の値をレビュー生成用の分布の平均として用いています。
ある文章のトピック分布がトピック0=100%だとしたら、文章内の全単語がトピック0に割当てられるので、割当率はトピック0が100%でそれ以外が0%、その場合トピック0の係数である3.869がそのままscore分布の平均になるため、その前後でscoreが生成される、という流れになります。

数値を比較してみると「映像」「迫力」等の単語が並ぶ映像表現全般のトピック2が4.776で最も高く、ストーリー・構成のトピック3が1.919で最も低くなっているので、この時点で単純に、「映像関連については概ね評価が高そうだな」、「ストーリーについては低い評価をしている方も結構居そうだな」という風に判断出来そうです。

ちなみに、高頻度後・低頻度後の削除を一切行わなかった場合の結果がこちらです。

kimetsu_latent__slda_all.png

3つのトピックに煉獄さんが最大の出現率で紛れ込んでいたり、鬼という単語が4つのトピックに割と大きく表示されていたりと、何を表すトピックなのか若干解釈が難しくなってしまう印象ですね。

単語単位で解析結果を見てみる

前回記事で言及したように係数は単語にも紐付けられます。
単語単位に落とすことで、潜在トピック単位での係数比較では出来なかった解析が可能になります。
例1. レビューを男女別に分けて解析し同単語同士での係数の差を比較
例2. 競合他社の製品と自社製品をそれぞれ解析にかけ、同じく単語同士の係数を比較する

なぜ潜在トピック単位だと上記のような係数比較が出来ないのでしょうか?

潜在トピックは学習によって得られる、基本的にデータに対してユニークな結果です。
違うデータから得られた潜在トピックは、当然トピックの内容そのものが違ってくるので、値の単純比較が出来なくなるというのがその理由ですね。
単語単位であれば、異なるデータでも同一の単語が存在し得るためそれが可能になります。

映画.comでは性別のデータはありませんが、スマホアプリからのレビューかWebサイトからのレビューかがわかりますので、試しにこちらでデータを分けて解析し、単語の係数を比較してみました。

kimetsu_word_comp.png

赤棒がアプリから青棒がWebサイトからのレビュー投稿を解析した時の単語係数になります。
全体的にアプリ経由でのレビューの方が係数が高いですが、例えば「声優」という単語はWebサイトからのレビューの方が3倍以上高い係数になっていますね。

「Webかアプリか」だとなかなか難しいかもしれませんが、「競合製品と自社製品」等で同様の比較を行えば、よりビジネスに直結する結果が得られることも期待出来そうです。

気になるモデルの精度は?

まずは潜在トピックの分かれ方です。
心配していた「予測に引っ張られて潜在トピックの内容が滅茶苦茶になってしまうのでは?」という部分を確認するため、同じデータで普通のLDAを適用した場合の潜在トピックと比較してみました。

kimetsu_latant_lda_slda_.png ※トピックは順番指定が出来ないので、同じような分かれ方をしたトピック同士線で繋いでいます

どうでしょうか?
細かな違いは勿論ありますが、SLDAで付けた潜在トピックのタイトルをLDAの結果にも流用出来るレベルには似通った内容になっているのではないでしょうか!
この結果を見る限り、潜在トピック抽出という点では特に問題は無いように思えます。

次に、scoreに対するモデルのあてはまりです。
こちらはSLDAと「LDA+LDAのトピック分布を使用した重回帰分析」の2つで比較しました。

kimetsu_r2_val.png

トピック数5~15の範囲でそれぞれ解析し決定係数を比較してみたところ、SLDAが概ね0.4前後LDA+重回帰だと0.15前後という結果でした。
SLDAの方も決して当てはまりが抜群に良いとは言えませんが、少なくともSLDAがsocre回帰をちゃんと組み込んだ形でトピックを抽出してくれているというのは、この数値からも確認が出来ました。

まとめ

SLDAによるレビュー解析、いかがでしたでしょうか!

今回はデモということもあり、離散値であるscoreに対して連続値の回帰をあてはめていたり、細かいパラメータの調整等は行っていないため精度面は微妙かもしれませんが、まだまだ精度向上の余地はあると思います。

加えて、モデル自体の発展形としてトピックの情報とは別のデモグラフィック情報を付け加えることが出来るもの等、SLDAを派生・発展させたものも数多く存在します。
このあたりもまた折を見て、紹介していきたいですね!

ではでは、最後までお読み頂きありがとうございました!

RELATED POST

GAN_thum14.png
  • Tech Blog
  • 技術説明

2023.11.17

Stable Diffusionでミロのヴィーナスを復元してみる

お久しぶりです!sodaエンジニアの國田です! 「ミロのヴィーナス」って不思議ですよね?両腕の無い像で、現在に至るまで、多くの芸術家や科学者が欠けた部分を補った姿を推定していますが、現在のところ、定説と呼べるようなものはありません。「どのようなポーズをとっていたのか?」想像は多岐に及びますが、これに...

SentimentSLDA_thum1.png
  • Tech Blog
  • 技術説明

2023.09.25

感情分析とSLDAで文章から感情係数付きトピックを抽出してみる

こんにちは! sodaの古橋です。 ブログ投稿の間隔が結構空いてしまいまして、気付けば世間では阪神タイガースが18年ぶりとなるリーグ優勝を決めていました。 久々の優勝ということで大いに盛り上がっていますが、我が敬愛する中日ドラゴンズは2年連続の最下位争いを繰り広げているという状態で、私は...