ますですブログ

思ったことや感じたことなど。

テキストマイニングによるツイート分析

この記事は、僕のTwitterアカウントのツイートをテキストマイニングにかけてみた結果を紹介するものである。よって、僕のTwitterアカウントとは関係のない人にとっては、ほとんど何の意味もない記事となることをお断りしておきたい。あと今回の記事、めちゃくちゃ長い(9000字弱ある)ので、その点についても注意されたい。多分読んでる人のほとんどは半分くらいで読むのをやめそうな気がする。

 

さて、僕のTwitterをフォローしている人は知っていると思うが、僕は10月17日あたりに「自分のツイートをテキストマイニングにかけ、その結果を分析してみようと思う」と高らかに宣言していた。しかし、それから10日間僕は色々と理由をつけて自分の宣言から逃げ続けていた。単純に、めんどくさかったからだ。しかし自分でやると言った手前上、実行しないのは許されない。ということで今日、僕はついに重い重い腰を上げ、ツイートのテキストマイニングを実行した。

 

ということで、本題に入ろう。

 

そもそも「テキストマイニング」という単語が何を指しているのか分からない人もいるのではないかと思う。僕が説明するのもひとつの手だが、ここは専門家の言葉を借りて説明した方が確実なのでそうしたい。以下に引用する(ちなみに、細かいことはどうでもいい!と方はずっと下まで読み飛ばしてもらって問題ありません)。

テキストマイニングとは、文章(テキスト)から有益な情報を発掘(マイニング)するための方法である。テキストマイニングでは、自然言語処理の手法を用いて、文章を単語や句に分割し、単語の出現頻度や単語間の関係を統計的に解析することにより、文章から情報を抽出するということを実施する。したがって、テキストマイニングは、大量のテキストデータを効率的・客観的に分析するという目的を実現するのに有効な手段と考えられ、アンケート調査における自由記述式回答の解析、消費者から寄せられる要望や苦情の解析、Webサイトへの書き込み文章の解析、業務日報の解析などに有効である。

(内田治ほか(2012)『SPSSによるテキストマイニング入門』ⅲ頁) 

 要するに、大量の文章を統計的に解析する手法のことだ。

 

ちなみに上記引用文は、IBMの統計解析ソフトであるSPSSを用いて行うテキストマイニングを解説する入門書だが、今回の分析では、「KH coder」を用いる。なぜKH coderを用いるかというと、このソフトがフリーソフトだからだ。このソフト、無料で使用できる上に非常に使い勝手がよく、そしてこのソフトを用いた先行研究の数も実に豊富である(詳しくはKH Coder: 計量テキスト分析・テキストマイニングのためのフリーソフトウェアを参照)。これは本当に素晴らしいソフトで、多くの使用者から絶賛の声を受けている。KH coderを用いた面白い分析の例としては、とりあえず以下の3つを挙げておくので、興味のある方はこちらも参考にされたい。

 

①デリヘル譲の紹介文を解析し、「当たり」のデリヘル譲に特徴的な語と「ハズレ」のデリヘル譲に特徴的な語を突き止めたもの。ちなみにこの分析はタモリ倶楽部でも紹介されている。テーマがテーマなので、一応閲覧注意ということにしておこう。

shirotodotei.hatenablog.com

 

②マンションの広告ってすごい独特のポエムっぽいやつ多くないですか?下の記事は、そんなマンションポエムにはどのような特徴があるのかを分析したものだ。個人的に面白かったのは、関西と首都圏ではマンションポエムの特徴語がかなり異なるということ。この記事が一番無難かもしれない。

dailyportalz.jp

 

③筆者のブログに対する「ヤフーコメント」「はてなブックマークのコメント」「Twitterでのコメント」の3つを分析し、それぞれの特徴を解析した記事。匿名性の高いSNSほど、コメントが陰湿になるのが視覚的に見えて面白かった。

prehyou2015.hatenablog.com

 

この3つを読んでもらえば分かるのだが、このテキストマイニング、本当に奥が深くてものすごく面白い分析手法なのだ。今のうちに身につけておけば、将来的に何かの役に立つんじゃないかとも思っている(研究職に就けなかったらこれで何とかしたい)。で、こんな面白い分析手法があるのなら、ぜひとも自分でも使ってみたいと思うのが僕の性分なもので、さっそく自分の過去のツイートを全てダウンロードして加工を加え、実際にテキストマイニングにかけてみた。ちなみに、ツイート履歴の取得方法についてはこちら(自分の全ツイート履歴をダウンロードする | Twitterの使い方 | ぼくらのハウツーノート)を参照のこと。

 

テキストマイニングに入る前に、僕のツイートの基本的な統計情報を示しておきたい。僕が主に使用しているアカウントは2013年3月に開設されたものなので、開設してからおよそ5年半運用していることになる。で、僕がツイート履歴をダウンロードした10月16日時点で総ツイート数は7180件だった。5年半の日数を大雑把に計算すると365×5+180=2005なので、7180÷2005=3.58と、大体1日当たり3.58ツイートしている計算になるだろうか。こう見るとなかなかたくさんツイートしているように思える。

 

続いて下の図は、1か月あたりのツイート数の推移をグラフ化したものだ。

f:id:highsucceed:20181029014645p:plain

この5年半、僕がどのようにTwitterと付き合ってきたかが一目でわかるグラフだ。ちなみに、2013年の4月から大学2年生で、2014年4月から3年生、2015年4月から4年生、2016年4月から大学院修士1年目、2017年4月から大学院修士2年目、2018年4月から大学院博士1年目である。

 

このグラフの特徴をまとめるとすると、①大学2~3年生の頃の僕はかなりTwitterにのめり込んでいたのか、しばしばひと月に200ツイート以上することがあった、②大学のゼミが始まった2014年の10月~11月あたりから月当たりのツイート数が減少し始め、月に200以上ツイートすることがなくなった、③卒論に忙しかった2016年から大学院に進学して現在まで、月当たりのツイート数は低落傾向にある、の3点だろうか。自分の生活の変化がこのように客観的に確認されて、非常に面白い。というか、2013年10月から2014年10月までの自分、Twitterしすぎじゃないか。

 

それでは実際にテキストマイニングに入ろうと思う。

 

最初に確認するのは、僕のツイートで頻繁に用いられている単語、すなわち頻出語である。総合的な頻出語リストを示しても、あまり面白くないので、品詞別の頻出語リストを示したい。なお、あまり長いリストを示してもアレなので、各品詞の上位10位までの頻出語を示すことにする。まずは「名詞」「サ変名詞(~するで動詞になる名詞)」「地名」「組織名」の上位10位の頻出語を見てみよう。ちなみに分析結果では「人名」もリストアップされるのだが、ここで公表するには色々と弊害がありそうな結果が出たので、残念ながら割愛した。

f:id:highsucceed:20181029024151p:plain

名詞の最頻出語は「バイト」だった。確かに日々のツイートではバイト関係のことをよくつぶやいている気がする。バイトを含め、「ゼミ」「大学」「スキー」というように、僕の大学生活でかなりの位置を占めたコミュニティが上位に来ている。「女子」が10位にランクインしているのが笑えるところだ。続いてサ変名詞の最頻出語は「研究」だった。研究なんて大学院に入ってからしかツイートしていないはずなので、そう考えると最近はよほど研究のことばかりつぶやいていると思われる。地名の最頻出語は「京都」だった。というかこのリストでは名字や出身地などかなり僕のプライバシーに関わることが示されていて、正直公開するのをためらったのだが、まあそこまで隠すようなことでもないと思い、公開している。やはり僕の大学についての地名が多い。組織名の再頻出語は、謎の「パ」であった。詳しく調べてみると、KH coderの辞書に登録されていない「たこパ」の「パ」や「パワプロ」の「パ」などが、独立で組織名に分類されてしまったようだ。ということでこれを無視すると、「同志社」になってしまう。やはり大学名が強い。10位に「松屋」がランクインしているのは、僕の食生活を表しているようだ。

 

次に、動詞や形容詞など、名詞以外の品詞の頻出語を確認してみよう。

f:id:highsucceed:20181029025531p:plain

 まずは形容動詞、最頻出語は「マジ」だった。3位の「めちゃくちゃ」にしろ、実に現代の若者感のある形容動詞である。そしてこの結果を見る限り、僕はTwitterで47回も「好き」とつぶやいているようだ。何が好きだったのだろうか。次に、動詞の最頻出語は「思う」だった。どうやら僕は普段から、あまり断定口調を好んでいないであろうことが読み取れる。そして、僕が驚愕したのが形容詞だ。なんと形容詞の最頻出語は「可愛い」だった。確かに「可愛い」とつぶやくことは多いかもしれないが、まさか「楽しい」や「多い」よりも上位に「可愛い」が来るとは思わなかった。先ほど名詞の10位が「女子」だったことを鑑みれば、僕は相当可愛い女子が好きなのだろう。副詞の最頻出語は「多分」だった。やはり、僕がTwitter上で断定口調を好んでいないことがここからも分かる。後、「全然」や「全く」などの強調語を多用しているのも興味深い。

 

以上が、僕の全ツイートにおける「頻出語」だ。次に、年ごとの「特徴語」を確認してみよう。特徴語とは、特定の語や特定の変数と強い関連を示す単語のことである。で、今回の記事では年ごとの特徴語を析出するわけだが、これをわかりやすく言い換えると、例えば2013年の1年間に特徴的に表れた単語を抽出してリストアップするという作業を、全ての年で実行するということだ。ちなみに特徴語を析出する上で用いる指標には「確率差」を用い(Jaccard係数を用いるつもりだったが、確率差の方が面白い結果が出たため)、上位10位までの特徴語を示すこととする。

f:id:highsucceed:20181029070333p:plain

各年の特徴語については箇条書きでコメントしていく。

  • 2013年はかなり特徴的なリストになっている。最も特徴的な単語は、「ゼミ」だった。この年にゼミ選考があったので、それを反映しているのだろう。あと、分割されているがこの年「宅建」の試験を受けたので、それも反映されている。「練習」や「筋肉」が入っているのは、この年は比較的、サークルの練習に参加していたことを示している。
  • 2014年は、特にサークル関係の単語が多く検出されている。「企画」「広報」「写真」「更新」はどれも、サークルでの役職に関するものだ。最も特徴的だったのは「笑」だが、これはリプライが多かったことを示しているのではないかと解釈した。「飲む」が多いのは、この年は比較的リア充だったことを示しているのではないか。
  • 2015年になると一転してサークルの色が薄くなり、「バイト」や「卒論」がランクインしている。実際、この年は4回生だがサークルにほとんど参加せず、バイトやゼミ活動に力を入れいていた記憶がある。あとなぜか10位に「死ぬ」がランクインしているのだが、この点については謎である。
  • 2016年も引き続き、サークル関係はほとんどなく「バイト」や「卒論」が特徴的である。「城崎」は、城崎旅行に行ったことが反映されている。ちなみに「合コン」が6位にランクインしているが、僕は生まれてこの方合コンには一度も参加したことはない。今でも合コンは都市伝説だと思っている。
  • 2017年は完全に大学院関係のツイートばかりになるので、特徴語にも「研究」が2位に挙がっている。あと、読者の方は突然「髪」がランクインしていて謎に思われるかもしれないが、僕はこの年ロン毛だったので、髪の毛に関するツイートを多くしていたことを示しているのだろう。
  • そして今年、2018年だが、やはり「研究」が多い。あと、分割されているが「モンハン」も特徴的だ。実際、今年の2月にモンハンを買って1か月ほどずっとのめり込んでいたので、それが表れているというわけだ。ただ、2018年だけやたらと動詞が多く、特徴的な名詞が少ないのが若干気になるが、なぜかは分からない。

 

以上が、各年の特徴語である。全体的に見ると、2013年から2014年はサークル関係のツイートが、2015年から2016年はバイトや学業(主にゼミ)関係のツイートが、2017年から2018年は大学院関係のツイートがより多く観測されていることが読み取れる。特徴語を見ている限り、2014年から2016年までの3年間は割と充実したツイートを頻繁にしていただろうことが読み取れる。逆に言えば、あの頃と比較すると大学院に入ってからは腐ったようなツイートが多くなっているということだ。心当たりがないわけではないが、なんということだ。

 

そして最後に、KH coderの本領発揮ともいえる「共起ネットワーク分析」である。共起ネットワーク分析とは、文書内での各単語の出現パターンを解析し、そのパターンの似通った単語(これを「共起の程度が強い」という)同士を線で結んだ図を描くことで、その文書において、それぞれの語がどのような用いられ方をされているのかを視覚的に確認することのできる分析である。要するに、「そのテキストデータにおいて、どんな言葉が多く出現していて、どの言葉とどの言葉が一緒に用いられているかを視覚的に表す」手法だ。これはもう図を先に見たほうが早いので、先に示してしまおう。

f:id:highsucceed:20181029044145p:plain

これは、僕の全ツイート(7180件)を分析の対象として描いた共起ネットワーク図である。線で結ばれた語が、僕のツイートでよく一緒に用いられている語で、円の大きさはその語の出現数を示している。特徴語として拾われたフォロワーのIDを除外するかどうか迷ったのだが、入れておいた方が解釈しやすいのでそのままにしておいた。ちなみに当事者である僕からすれば、このネットワーク図は怖くなるほど僕のツイートの傾向を表している。

 

例えば濃い緑のサブグラフ(線で結ばれた単語の集団)を見ると、ここに挙がっているフォロワーとのリプライでは頻繁に「笑」を用いていたことが分かる。あと、このサブグラフはサークル関係の語が多くまとめられている。あと、自分でもビックリしたのだが、僕はかなり自分の大学のことを「クソ大学」と表現してツイートしているようだ。「マジ」も線で結ばれているので、よほど大学のことを「クソ」だと思っているのだろう。他にも、ピンク色のサブグラフでは「月」「提出」「字」が線で結ばれているが、これは去年、修論を提出するまでの残り日数とその日書いた字数をTwitterに記録していたことが表れている。あと、「@yodoyan_ydk」のIDと「行く」が線で結ばれているのは、このアカウント主と頻繁に「ラーメンに行くぞ」とのリプライを飛ばしあっているからである。まさかここまで再現されるとは。

 

ということで、ここからは各年ごとに共起ネットワーク図を描いていこうと思う。その年ごとに、特徴的なネットワーク図が描かれていて、個人的には非常に面白い結果となっている。なお、フォロワーのIDは除外しないことにした。

 

【2013年のツイートを元に作成した共起ネットワーク図】

f:id:highsucceed:20181029045755p:plain

先ほど特徴語分析でも確認できたように、この年のツイートはサークル関係のものがほとんどであるように見える。というか、半分以上はサークル関係の単語だ。下の方に「iPhone」とあるが、これを見てそう言えば2013年の11月の学園祭の時期にiPhone4Sをパクられたなぁと懐かしい気分になった。あと、この頃は「笑」ではなく「www」や「wwww」に見られるように、いわゆる「草」を生やして笑いを表現していたのが読み取れる。こんなところまで分かるのだ。

 

【2014年のツイートを元に作成した共起ネットワーク図】

f:id:highsucceed:20181029054407p:plain

2014年の共起ネットワーク図はかなりいびつというか、あまり綺麗な図にはならなかった。特定の語の出現数が突出したことにより、全体的に語を囲む円が小さくなったことが要因だ。どうもこの年は特定のフォロワーに対し、かなり多くのリプライを送っていたようだ(1つの語の大きさから推測するに、特定のIDと300回ほどリプライしている)。そしてこの年も、サークル関係の語が多い。特に面白いと感じたのは、「ドイツ語」という語が抽出されていることである。これを見て思い出したが、そういえば僕は第二外国語のドイツ語を再履修しまくっており、3回生であるこの年もドイツ語の試験に追われていたのだ。嫌な記憶だ。

 

【2015年のツイートを元に作成した共起ネットワーク図】

f:id:highsucceed:20181029055229p:plain

この年の共起ネットワーク図の特徴は、フォロワーのIDの数がかなり多いことだろうか。つまり、この年は前年と比較すると、かなり幅広いアカウントとリプライを交わしていることが読み取れる。また、特徴語分析からも読み取れたことではあるが、2015年からサークル関係の語が全体に占める割合が減少し、代わってバイトや学業関係の語が増加している。なお、「入れる」と「感じる」が結ばれていてヤバい感じになっているが、「居候入ってる時の1日めっちゃ長い、下界にいるときの2倍くらいに感じる」等のツイートを反映した結果であって、ヤバいツイートではない。

 

【2016年のツイートを元に作成した共起ネットワーク図】

f:id:highsucceed:20181029060701p:plain

これまでとは打って変わって、大学院に進学した2016年のツイートではやはり研究関係の語が多く確認される。「大学院」「研究」「教授」「論文」「卒論」などの語が抽出されており、印象がガラッと変わっている。図の上の方に「今」「死ぬ」といった語が表示されているが、これは大学院生活に順応できていなかった若き日の僕の怨嗟の声といったところだろうか。あと、前述のようにこの年はロン毛だったので、しっかり「髪」が右上に示されている。

 

【2017年のツイートを元に作成した共起ネットワーク図】

f:id:highsucceed:20181029061258p:plain

最初に示したグラフを見ても分かるように、2017年以降、僕のアカウントのツイート数は顕著に減少している。その結果、この図のように、それぞれの語の出現数が小さくなっている。それにしてもこれ以前の図とは大きく異なった、実にいびつな共起ネットワーク図である。まず、フォロワーのIDが1つしか抽出されていない。これは、これまでと比べてリプライの数が減少したことを示している。また、サブグラフ(線で結ばれた語のまとまり)を構成する語の数がきわめて少ない。おそらくこれは、それぞれのツイートの内容がバラバラになっており、各ツイートの類似点が検出されにくかったのだろう。逆に、灰色のサブグラフを見ればわかるように、「進捗」「状況」「字」「提出」「期限」などの語はそれぞれ濃い線で結ばれている。これは、下の画像のように同じような修論の進捗状況に関するテンプレート文を一定期間量産していたためである。この画像を見ると、共起ネットワーク分析の正確さが伝わるのではないだろうか。

f:id:highsucceed:20181029062249p:plain

 

【2018年のツイートを元に作成した共起ネットワーク図】

f:id:highsucceed:20181029062538p:plain

そして最後にこれが、2018年、つまり最近の共起ネットワーク図である。再び、割と綺麗にまとまった図になったようだ。リプライの数も若干増加しているようである。図を見たところ、特にモンハンに関するリプライが多かったらしい。僕はこの年から大学院博士課程に進学したのだが、それに伴って、「研究」「学会」「論文」「指導」「教授」などの語が特徴的な語として観測されているようである。ただ、ここでも左上の方に「死ぬ」という語が出現しているのが何とも言えない気持ちになる。あと、地味に左の真ん中らへんに「結婚」という語が表れているのも、自分が歳を重ねるにつれて結婚に関するツイートが増えていることを示しており、これまた何とも言えない気分になる。

 

さて、以上が僕のTwitterアカウントのツイートをテキストマイニングにかけ、分析を行った結果である。これまで見たように、テキストマイニングを用いれば、自分でも意識していなかったりとうの昔に忘れてしまったようなことを、客観的な形でなおかつ視覚的に確認することができる。今回は頻出語および特徴語の確認と、共起ネットワーク図の描写の3点しか行わなかったが、KH coderはその他にも様々な機能を備えており、より豊富な手段を用いてテキストデータを分析することができる、本当に素晴らしいソフトである(しかもこれが無料で使えるのだから、便利な世の中だ)。この記事を見てテキストマイニングに関心を持った人は、ぜひとも一度実際に自分で利用してみてほしい。自分のツイート履歴を分析してみたら、きっと面白い結果が出るはずである。

 

ただ、哀しいかな、自分のツイートを分析してみて一番面白いのは自分自身であり、他人からすれば恐らくそこまで面白いものではない。僕自身、ここまで文字数にして9000字弱、実に6時間近く記事を書き続けているが、ただの自己満で終わりそうな気がしてならない。