きういノート

一打粉砕に怒喝の心力を込め、万物を叩き割る剛剣の刃を生み出さん

Bag of Words を用いたラブライブ!School idol diary のトピック推定

kiui-4.hatenablog.jp

 これの続きです。前回のゼミで形態素解析の概要について発表したら、教授に『Bag of Words の勉強してみたら良いかもしれない。』って言われたので調べてみた。今回も自然言語処理の話です。

 

・ Bag of Words とは?

文書の構造や文法を全て無視して単語の出現回数にのみ注目して、文書に書かれている話題(トピック)を推定すること。

 

 ふむ、何となくは分かったから具体的な分析に移りましょ。

 

・全体像の推定

f:id:kiui_4:20180506174056j:plain

 という訳でこちらを用意しました。おひょ~~~!ラブライブ!School idol diary、神なんすよね......(読んでない方はまず全部読みましょう、話はそこからだ。)

 これの一章を全部Rの形態素解析パッケージにブチ込んだところ、全部で9476文字、単語の数は1192語になってました。意外と長いわね。

でまぁ色々と計算して頻出語(名詞)をグラフに書いてみました。それがこちら

f:id:kiui_4:20180506175715j:plain

 棒の長さが長い程、その棒の色に対応した単語が多く出現してることになります。圧倒的な"穂乃果"って単語の出現度数。グラフを見て分かるように、どうしてもキャラクターの名前ってのは分析の際にはノイズになってしまいがちなんすよね。

 穂乃果を除けば、『ステージ』『学園』『舞台』って言葉が多く使われているのが分かりますね。そうなんです、この文書の一章は学園祭で穂乃果と海未がのぞえりの舞台を見る話なんです。意外とそれっぽい推定が出来ているような気がするわね。

 

・もうちょっと深く

 文書の全体的な話題が見えてきたので、次は文書の意味段落ごとの話題を推定しようと思います。ここで単語の重要度を推定する TF-IDFモデルと言われるものを導入します。(こっからちょっと難しく感じるかも)

 

f:id:kiui_4:20180506181813j:plain

 TFIDF:意味段落d に出てくる単語w の重要度 

TF: 意味段落d に出てくる単語w の出現回数

DF:単語w が出てくる意味段落の数   N:全意味段落の数

 

 って見てもよく分かんないね。TF-IDF(単語の重要度)とはTF値とIDF値の乗算によって求められる数です。

 1. TF値

出現回数の多い単語ほど重要って考え方の元に出来た値。

 2. IDF値

別名、逆文書頻度。右辺のlogの部分。重要でない単語ほど値が高くならないようになってる便利なヤツ。

例えば『私』とか『です』とか助詞や接続詞を始めとした、どんな段落にも出てくる単語は重要じゃないって考え方から出来た値。logの中身を見ると、ある特定の意味段落にしか出てこない単語に対しては N/DF はより大きくなり、どの意味段落でも出てくる単語に対しては N/DF は1に近くなるように作られてる。(説明が下手)

 

 ・段落ごとのトピック推定

約10000字ある文書を一つ約2000字に区切って独断で段落分けしてトピックの推定を試みる。TF-IDF値もRが計算してくました。R便利すぎてひっくり返るよね。

 

1. 段落1

f:id:kiui_4:20180506192238j:plain

『パンフレット』『学園』『祭』とかが特徴的なワードかな...と思う。学園祭と絡めた物語の導入部分だってことが少し伺えるかな。

 

2. 段落2

f:id:kiui_4:20180506192256j:plain

『イケメンコンテスト』『バンド』『仮装』『部』って単語から、学園祭の賑やかな雰囲気が分かるし、色んな人達が色んな出し物をしてることがハッキリと伺える。

 

3. 段落3

f:id:kiui_4:20180506192304j:plain

花吹雪が舞う中での絵里のキスシーンです、はい。完全にのぞえり結婚です本当におめでとうございます、末永くお幸せに。

 

4. 段落4

f:id:kiui_4:20180506192314j:plain

ロミジュリの舞台を見ながらめっちゃドキドキしてるのが伺えますね。この時の海未ちゃんがまた可愛いんだよな...。

 

5. 段落5

f:id:kiui_4:20180506192324j:plain

 結構難解だなぁ...。舞台が終わって客席から歓声が上がってる情景が見えなくもないかな...?

 

 ここまでの出力結果を見るに、頻出単語だけを追っても『学園祭を舞台とした物語の導入→そこでの賑やかな雰囲気を描写→絵里のキスシーン→ロミジュリを見てドキドキ→客席から歓声』って言う大まかな物語の流れを掴むことが出来るってワケです。でもやっぱりそこまで精度が出てない気がしますね...。

 

・まとめと今後の展望

今回はBag of Wordsの考え方を身に付ける為に推定を行ったので、精度の低さには目を瞑ることにする。恐らく、本一冊の文書を全部読み込んで、そっから4つの章に分けたりしないと、信頼出来るまでの精度は出ないと思う。今回は労力や技術の都合上見送ったけど、やってみたいなぁ...。

今後の展望としては、引き続き自然言語処理について勉強してもいいけど、また別の面白そうなことがあったら軽率に勉強したいな~って思う。

因みに今回もこの記事がゼミでの発表資料や原稿の大元になるぜ!ガハハw

 

 じゃあまた、これにて失礼。

 

・参考文献

RMeCabFunctions - RとLinuxと...

【特別連載】 さぁ、自然言語処理を始めよう!(第2回: 単純集計によるテキストマイニング) | DATUM STUDIO株式会社

grahamian.hatenablog.com