見出し画像

データサイエンス×演劇 〜トピックモデルによる舞台のジャンル・特徴分け PART2〜

こんにちは、Yu_Seです。
さて、データサイエンス×演劇ということでデータサイエンスを使った舞台のジャンル・特徴分けを行った実験結果とその考察について、3部構成でまとめた記事のPART2です。
PART1で既に書いたように、ここからはトピックモデルに関する説明と、それを使った舞台のジャンル・特徴分けの結果についてまとめていきたいと思います。
この分析を行ったモチベーションやトピックモデルに辿り着いた経緯に関しては、PART1の記事の方をご参照下さい。

では早速本編へと入っていこうと思います。

トピックモデルとは?

まずはトピックモデルがそもそも何なのかについて説明したいと思います。
これから舞台のジャンル・特徴分けをする際に使用するモデルなので、クラスタリング(分類器)の手法の一つであることは想像がつくかなと思います。
トピックモデルは文章をその内容から判断してクラスタリングする手法なのですが、データサイエンスでクラスタリングといっても複数種類存在していて、ざっくりと以下のようなものがあります。

ハードクラスタリング
1つの対象物に対して1つのクラスタしか割り当てられないクラスタリングの方法
ソフトクラスタリング
1つの対象物が複数のクラスタに属することを許すクラスタリングの方法

そして、トピックモデルは後者の方のソフトクラスタリングに該当し、1つの対象物に対して複数のクラスタ、つまり複数のジャンルに分けることが出来る手法です。これによって、1つの舞台作品に対して複数の舞台ジャンルを割り当てることが出来ます。
例えば、PART1で紹介したインプロカンパニーPlatformの「その探偵の名、」だったら、即興劇(インプロ)ジャンルとサスペンスジャンルの2つに分けることが出来るのです。これをもし、ハードクラスタリングの手法で分類してしまうとどちらかのジャンルに所属せざるを得なくなってしまいます。今回の舞台のジャンル・特徴分けにはハードクラスタリングよりも、ソフトクラスタリングのトピックモデルの手法の方が適していると思っています。

といった訳で、トピックモデルは簡単に言ってしまえば、データに含まれる自然言語(文章)から複数のクラスタに属すことを許しながら分類する手法であるということです。
ここでは詳しく触れませんが、トピックモデルは自然言語の解析の研究の中から発展したクラスタリング手法で、以下のサイトを参考にするとより数学的な視点で理解することが出来ますのでご参考までに。


トピックモデルを活用した事例:SmartNews

このトピックモデルですが、実は様々なサービスに応用されており私たちの暮らしを支えている技術でもあるのです。
ここではその一例として、SmartNewsで活用されているトピックモデルであるLDA(Latent Dirichlet Allocation)を用いたニュース記事の分類について説明しながら、トピックモデルが具体的にどう応用されるものなのかのイメージを持って頂ければと思います。

SmartNewsは、多くのユーザーに利用されているニュースアプリで、読者の方もご存知の方は多いと思います。私もニュースアプリは普段SmartNewsを利用しています。最近ではクーポンなんかも表示されていて、吉野家やはなまるうどんで食事をした時はよく利用するようにしています。
そんなSmartNewsですが、チャンネル別にニュース記事が分かれています。「トップ」「国内」「政治」「経済」「エンタメ」「スポーツ」「新型ウイルス」「舞台・2.5次元」などといったチャンネルが存在します。そのチャンネル、つまりそのジャンルに対応するニュース記事をチャンネル内で配信することによって、ユーザーが読みたいニュース記事に辿り着きやすいような仕組みになっているのです。
勿論、同じニュース記事で複数チャンネルにまたがって配信されているものもあります。例えば、「新型コロナウイルスによる舞台の中止」に関するニュース記事だったら、「新型ウイルス」チャンネルと「舞台・2.5次元」チャンネルに分けられるでしょう。


では、SmartNewsではニュース記事をどのようにして各チャンネルに分類しているのでしょうか。勿論、SmartNewsの社員が人力で一つ一つ分類している訳ではありません。
このニュース記事を各チャンネルに分類するときにトピックモデルが使われているのです。では、どのようなロジックでトピックモデルを使ってニュース記事が分類されていくのかを見ていきましょう。

SmartNewsで使用されているトピックモデルはLDA(Latent Dirichlet Allocation)といって、文章中に含まれる単語の潜在的意味を自動で解析することによって、潜在的意味が似た単語同士を同じトピックとしてグルーピングしてくれる技術です。そこで生成されたトピックから、その文章がどんなトピックで構成されているかを示すことで文章のジャンル分けが可能となるのです。
ちなみに、もっとLDAについて数学的に学びたいという方は、自然言語処理シリーズの「トピックモデルによる統計的潜在意味解析」という書籍を読むことをオススメします。(かなり説明が難解な本ですが、、、)


少々難しい説明になってしまったので、具体例を使って分かりやすく説明していきたいと思います。
例えば、以下のような文章のニュース記事があったとしましょう。

夏の甲子園優勝を決めたxx高校の選手たちが決勝のホームランを打った
yy選手は笑顔で声援に答えていた。

この文章に対して、トピックモデルLDAをかけます。
先ほど説明したように、LDAは意味の似た単語同士を同じトピックでグルーピングしてくれます。結果は以下のような感じです。

スクリーンショット 2020-09-26 20.06.27

「夏」という単語だけがトピック1にグルーピングされ、「笑顔」と「声援」という単語がトピック3、その他の名詞は全てトピック2に分類されました。
この文章のトピックの構成割合を見ていくと以下のような感じになっています。

スクリーンショット 2020-09-26 20.12.04

トピック2に属する単語の数が多かったので、当然この文章のトピックの構成割合はトピック2が最も高く70%であることが伺えます。

ここでトピックモデルLDAの実行によって、以下の2つのことが極めて重要となってきます。

1. 同じトピックに所属する単語の集まりから、そのトピックがどんなクラスタ(ジャンル)なのか判定できること

2. 対象となる文章が複数のトピックの構成割合として表現されること

まず、トピック2に割り当てられた単語を見てみると、「甲子園」「優勝」「選手」「決勝」「ホームラン」などスポーツに関連する単語の集まりであることが分かります。これによって、上の一つ目の項目で書いているようにトピック2はスポーツトピックであることが判定できます。
また、この文章はそのスポーツトピックの構成割合が70%と高いことが分かります。これによって、この文章はスポーツジャンルに属するものであると判断出来るのです。

今回はスポーツジャンルにのみ属する文章だった訳ですが、「新型コロナウイルスによる舞台の中止」みたいなニュース記事だったら、新型ウイルストピックと舞台・2.5次元トピックの構成割合の両方が高くなることでしょう。その場合は、そのニュース記事は新型ウイルスジャンルと舞台・2.5次元ジャンルに属することになります。
これによって、ソフトクラスタリングでの説明の時にも書いたように、複数のジャンルに属することを許しながら分類することが可能になるのです。

ここまで書いたSmartNewsを例にとったトピックモデルLDAの事例は、以下のサイトで詳細が書かれているので気になる方はこちらもチェックしてみて下さい。


トピックモデルで舞台ジャンル・特徴分けされるイメージ

さて、SmartNewsで応用されている事例を読んで頂いて、トピックモデルの活用イメージはついたでしょうか?
ここからはいよいよ、PART1で準備したTogetterの舞台のTwitter感想データに対してトピックモデルを適用していく運びとなります。

その前にもう一度、トピックモデルを舞台の感想データにかけることでどんな結果・アウトプットが得られるかイメージをしておきましょう。

ここでもう一度、PART1でも取り上げた劇団柿喰う客の「御披楽喜」、劇団壱劇屋の「PIKCA ROON!」、青年団の「東京ノート」「東京ノート・インターナショナルバージョン」、インプロカンパニーPlatformの「その探偵の名、」のWord Cloudを眺めてみましょう。


劇団柿喰う客「御披楽喜」

wordcloud_柿喰う客 新作本公演『御披楽喜』ご感想まとめ

劇団壱劇屋「PIKCA ROON!」

wordcloud_【東京公演】東阪二都市ツアー2019劇団壱劇屋「PICKAROON!」感想まとめ

青年団「東京ノート」「東京ノート・インターナショナルバージョン」

wordcloud_青年団『東京ノート・インターナショナルバージョン』『東京ノート』感想まとめ

インプロカンパニーPlatform「その探偵の名、」

wordcloud_「その探偵の名、」感想まとめ


まず、どの公演の感想にも頻出するような「公演」「観客」「芝居」などといったワードは、特に公演のジャンルを特徴づけるものではないため、トピックモデルにかける際は除外しようかと思います。
PART1でも書いた通り、「御披楽喜」は「セリフ」や「スピード」「エネルギー」「情報量」「テンポ」「痴気」といった台詞回しの速さやスピード感を表すワード、「PIKCA ROON!」は「殺陣」「カッコ」「アクション」「迫力」「キレ」「武器」「衣装」「盗賊」といった殺陣を表すワード、「東京ノート」は「会話」「台詞」「戯曲」「同時多発」「発話」といった会話劇を表すワード、「その名の探偵、」は「インプロ」「即興」といった即興劇・インプロに関するワードと、「探偵」「犯人」「推理」「容疑者」「事件」といったサスペンスを表すワードが多いことが伺えます。
ここから、トピックモデルによって以下のような結果が想定されそうです。


【生成されるトピック】
Topic1(スピード感)・・・「セリフ」「スピード」「エネルギー」「情報量」「テンポ」「痴気」etc...
Topic2(殺陣)・・・「殺陣」「カッコ」「アクション」「迫力」「キレ」「武器」「衣装」「盗賊」etc...
Topic3(会話劇)・・・「会話」「台詞」「戯曲」「同時多発」「発話」etc...
Topic4(即興劇・インプロ)・・・「インプロ」「即興」etc...
Topic5(サスペンス)・・・「探偵」「犯人」「推理」「容疑者」「事件」etc...
【各公演に紐づくトピック構成割合】
「御披楽喜」・・・スピード感(100%)
「PIKCA ROON!」・・・殺陣(100%)
「東京ノート」「東京ノート・インターナショナルバージョン」・・・会話劇(100%)
「その探偵の名、」・・・即興劇・インプロ(50%)、サスペンス(50%)


まあここまで綺麗に結果が出ることはあり得ませんが、おおよそこういった生成されるトピックと、各公演に紐づくトピックの構成割合の2つの結果によって、全公演がトピックを用いてジャンル・特徴分けされていくイメージです。
Topic1の「スピード感」のように、特徴が現れているのが単語の集まりから分かっても、トピック名を付けにくいものも存在するかと思います。
ただこれによって、今まで私たちが予想していなかったような舞台ジャンルが生成されるかもしれませんし、少なくとも主観的に舞台を分類するよりも定量的で客観的にジャンル・特徴分け出来ることが期待されます。

pyLDAvisの見方

トピックモデルを用いた舞台のジャンル・特徴分けの結果にいく前にもう一つ、トピックモデルの実験結果の見方について説明します。

今回は、SmartNewsでの事例と同様にトピックモデルはLDA(Latent Dirichlet Allocation)を用いて行うのですが、生成されるトピックを可視化する際にpyLDAvisという可視化モジュールを使用しました。ですので、このpyLDAvisの見方について説明しておきます。

スクリーンショット 2020-09-26 22.53.57

上の図がpyLDAvisで可視化した、トピックモデルLDA実行によって生成されたトピックの分布を示したトピックマップになります。①〜④の4箇所把握しなければいけない項目があるので、順に説明していきます。


まず①の青い枠線の中は、表示させたいトピック番号を選択できる場所です。「Previous Topic」で一つ前のトピックへ、「Next Topic」で一つ後のトピックへ移動して表示できます。


次に②の黄色い枠線に囲まれた部分は、このpyLDAvisでメインとなる図になるのですが、各トピックの大きさと分布を表している図となります。
番号の振られた円一つ一つがトピックを表していて、似たトピック同士は近い位置に表示され、円の大きさは各トピックが付与された文章の数、ここではそのトピックに該当する公演の数に比例します。ですので、円の大きいトピックほど多くの公演に付与されているトピックといえます。


次に③の緑色の枠線で囲われたスライダーは、次の④とも関連してくるのですが、選択しているトピックの中に含まれている単語のランキングをどう表示させるかを選択できるスライダーです。スライダーの目盛りを見ると、0.0から1.0まで振られています。
このスライダーを左に0.0まで持っていくと、同じ単語の中で選択しているトピックに含まれている割合が高いものから順に表示され、スライダーを右に1.0まで持っていくと、トピックに含まれている単語数が多い順に表示されるようになっています。


最後に④の赤色の枠線で囲まれた単語とバーが表示された図ですが、①で選択しているトピックに対して含まれる単語のランキングを示していて、その単語の順番は③のスライダーで調節された順番になっています。
右の青いバーはその単語の総数、赤いバーは選択したトピック内に含まれる単語数を表しています。


スクリーンショット 2020-09-26 23.43.15

上の図は、トピック1を選択してスライダーを1.0つまりトピック1に含まれる単語の単語数が多い順に並んだランキングが表示されるように可視化した図です。
トピック分布のトピック1に該当する円が赤くなっていることに加え、トピック1に含まれる単語の数が多い順(赤いバーが長い順)に表示されていることが分かると思います。


このように少しだけ結果をチラ見させてしまいましたが、pyLDAvisを使ってトピック同士の距離感や含まれている単語の種類とボリュームを確認するこが出来ます。

トピックモデルの結果

さて、ここでいよいよTogetterから得た公演のTwitterの感想データを用いたトピックモデルLDAによって現れたトピックマップと、各公演毎のトピックの構成割合をお見せしたいと思います。


公演数は全部で2623公演という膨大な量です!
ただし、同じ公演でTogetter上での感想のまとめが2つ以上存在するものがあり、それらは複数回カウントされているので実際にはもう少し少ないのですが、そんな公演も一部なので2500公演以上はあると思って下さい。
また、データをスクレイピングしたのが2020年6月末ですので、それ以前にTogetter上でまとめが作られた公演が対象となっています。
さらに、今回Togetterの「演劇」「小劇場」タグのついた「感想」という表記を含むものに絞って抽出してきているので、そちらに感想を置いていない公演は対象外となっています。また、ツイート数が25ツイート以下の公演は、数が少なすぎて綺麗な結果が得られない可能性があるため、こちら側で除外させて頂きました。


それでは、今回実施したトピックモデルLDAによるトピックマップと、公演毎に付与されたトピックの構成割合の結果は以下のようになっています。


トピックマップ


公演別トピック構成割合表


結果の方如何だったでしょうか!?
かなり面白い結果と納得感のある舞台のジャンル・特徴分けだったのではないでしょうか?
この結果の考察については「データサイエンス×演劇 〜トピックモデルによる舞台のジャンル・特徴分け PART3〜」の方で詳しくまとめていきたいと思います。
今回もここまで読んで頂きありがとうございました、それではトピックモデルの考察の方楽しみにしていて下さい。
ではでは。

この記事が気に入ったらサポートをしてみませんか?