自作のTwitter分析システムで「ポケレジェ」のユーザ感情分析をする
システム統括課 ブログ担当です。
昨年度 システム統括課では多くの学習と実践・システムの試作を通し、いくつかの興味関心を絞り込みました。
その内、SNSとの連携機能と自然言語処理への関心については、とりわけ形にしてみたい分野でもあったため、「Twitter分析システム」と題して構築と技術検証を行うことに。今回は、そのTwitterを用いたシステムの内容と成果の一部を抜粋してご紹介を致します。
Twitter分析システムとは
ご存知の方は多いと思いますが、Twitterとはサンフランシスコに本社を置くTwitter社が運営するSNSを指し、Twitterで投稿される発言を「ツイート」と呼びます。
「Twitter分析システム」はツイートデータに対し、大きく「データ収集」「感情分析」「可視化」の3つの機能を持ちます。特にメイン機能である「データ収集」においてはTwitterAPIを用いて1日数十万件のツイートを保存し、データ分析に活用し得る動作実績を作ることが出来ました。
「感情分析」では、「データ収集」機能で収集したツイートを解析して、発言内容がネガティブ・ポジティブのどちらの性質を持つかを判断する機能を実装しています。
更に今回は、検索エンジンや機械翻訳に長けている「Google」が提供するライブラリ「Google NaturalLanguage API」を組み込んでの実装と検証を行いました(以前から興味があったこともあり……)。
システム構成は以下の通りです。※一部抜粋
開発言語 | Python |
API(データ収集) | Twitter API v1 / v2 |
API(感情分析) | Google NaturalLanguage API |
ストレージ | Amazon S3 |
BI | Amazon QuickSight |
処理は以下のようなイメージ(順序)で進んでいきます。
図中①では検索条件を指定して前日のツイート情報を日次で取得します。
本システムをPythonで開発するにあたり、今回はTwitter APIとの連携にTweepyのライブラリを利用しています。
取得するツイートの検索条件(絞り込み)には、例えば以下のような条件を始め、仕様に併せ柔軟な指定を行うことが可能です。
- 特定のキーワードを含むツイート
- 指定のハッシュタグを付けられたツイート
- 任意のUserNameによるツイート etc.
なおTwitterAPI利用における注意点として、2022年5月現在 TwitterAPIはv2まで一般公開されていますが、v2にはv1にはない1ヶ月間でのツイート取得数に上限が設定されていたり、v1にはv2で実現可能なTwitterの新機能へアクセスする機能がなかったり等、それぞれ異なる特徴があります。
そのため、TwitterAPIのバージョンを選定する際は、システム要件に応じて使い分ける、もしくはその両方を切り替えられるよう実装しなければならないため、これを設計時の留意点とする必要があります。
図中②では、取得したツイート情報に対してGoogleNaturalLanguage(Google提供の自然言語処理)を適用し、感情分析を実行します。
この感情分析により、ツイート本文から感情のネガティブorポジティブの方向(score)と感情の強さ(magnitude)のパラメータを取得することが出来るようになります。
自然言語処理と言われると若干ハードルが高く感じてしまいそうですが、GoogleからPythonライブラリを用いた組み込みサンプルが提供されている他、ライブラリにテキストを渡すだけで、学習済みAIが受け取ったテキストの文脈などからscoreとmagnitudeをそれぞれ数値化してくれるので、実際にはだいぶ取っつきやすくなっています。
ただし、実装しやすい反面 APIの利用回数に応じてかかる料金が変わっていきます。
(調子に乗って使いすぎると思わぬ出費に繋がってしまいますので、ご利用は計画的に。。)
「ポケレジェ」のユーザ感情を分析してみた
GoogleNaturalLanguageを介することで、ツイートの感情やその強さが数値として表現出来るようになりました。
今回、この機能の検証としてとあるゲームの発売日前後のツイートに対して感情分析を行いました。
そのゲームとは……。
Pokémon LEGENDS アルセウス 通称「ポケレジェ」です。
ポケットモンスターシリーズの最新作として、今年の01月28日に発売されてまだ記憶が新しい方もいらっしゃるかも知れません。
かくいう私も、実際に購入してそれなりにハマってプレイしていた勢です(最初は様子見しようかなと考えていたのですが、Twitterのフォロワーが楽しそうに遊んでいるのを見て耐えきれず……)。
時間を忘れて推しポケの色違いを探したり、緊急回避でガケから転落したりと……色々ありましたが、非常に楽しく遊べた良いゲームでした。操作の難易度は若干高めでやりがいのある印象ですが、クリアすること自体は難しくないこともポケモンらしさであるように感じます。
さて、今回はこの「ポケレジェ」を対象に、関連するツイートデータを試作した「Twitter分析システム」により収集。更にその結果をBIツールを用いて可視化したので、この結果と所感をサンプルとしてご紹介します。
今回、データ保存先のストレージにはAmazon S3を採用しており、その連携の観点からS3同様にAWSが提供しているBIツール「Amazon QuickSight」を用いて可視化を試みています。
また、データの収集と可視化は以下期間「発売の1週間前、発売当日、発売後1ヶ月」を対象に実施しています。
以下は2つの指定キーワード(ポケレジェに関するキーワード)を含んだツイートを収集した際の、日別ツイート数の推移です。
図中のピークに到達している日が、「ポケレジェ」の発売日です。
ツイート数は発売日が近づくにつれ増加していき、発売日以後は増加すること無く緩やかな減少傾向であることがわかります。
多くの場合、発売日以降は少しずつ話題にあげる人が少なくなっていくはずなので、この推移は想定通りの動きをしているように思えます。
次に取得した全てのツイートに対する、ネガティブ・ポジティブの割合です。
図中の青がポジティブな感情を持つツイート、赤がネガティブな感情を持つツイート、緑はどちらとも言えないと判断されたツイートのように3種類に分類しています。
全体を通して、ネガティブかポジティブかを比較するとポジティブな意見の方が多そうです。しかしながら、目立つほど大きな偏りが生じているというわけでもないことから、この結果だけを元に「ポケレジェ」の評価を判断するのはやや早計に思います。
ということであれば、ここは全てのツイートデータを更に条件絞り込みを行いたいところ。
一般的なBIツール同様、勿論「QuickSight」にもフィルター機能は実装できます。
ということで、フィルターを用いてもう少しこのツイートデータの中身を深掘りしていきたいと思います。
以下はフィルター機能を用いて、それぞれ「ストーリー」「やりこみ要素」「キャラクターデザイン」「操作性」に関連する条件をかけ、データ抽出を行った結果のグラフです。絞り込みを行わなかった時のグラフと比較して、それぞれポジティブとネガティブの比率が顕著になっている様子が伺えます。
「ストーリー」「やりこみ要素」「キャラクターデザイン」に関しては、大部分がポジティブを占め、かつポジティブと比較してネガティブのツイート数が著しく少なくなっている様子が確認できます。
反対に、「操作性」についてはポジティブな意見を持つツイートが少なく、全体的にグラフが赤色に着色していることがご理解頂けるかと存じます。
上記より、特に本作(ポケレジェ)で評価されている点はゲーム自体の操作性よりは、どちらかといえば「ストーリー」や「やりこみ要素」「キャラクターデザイン」の面であることが見て取れそうです。
確かに私も、触れば触るほど楽しくなるアクションゲーム特有の面白さはありつつも、その爽快さにハマッたというよりはどちらかというと「キャラクターの魅力」であったり「思い切った世界観」といった要素を楽しんでいたようにも思います。
なんとなく感じていた「ポケレジェ」の魅力について、「Twitter分析システム」を通じ、数値として示すことが出来るようになりました!
あとがき
現時点では試作状態の「Twitter分析システム」ですが、今回一通りの流れを組んでみたことで改善点も見えてきました。
より多くの方に使いやすくなるよう、本システムのブラッシュアップを行っていければ、更に良い仕組みとしてご提供することが出来そうです。