北野坂備忘録

主にインストールやプログラミングのメモを載せています。

岡三マンは何人で構成されているか自然言語処理で解析してみた

Twitterで有名な「岡三マン(@okasanman)」は複数人執筆説があります。
twitter.com

そこで、本稿では統計解析環境「R」を用いて岡三マンが何人で執筆されているのか分析してみました。

今回は 2018/03/08 から 2018/03/18 までの 796tweet を分析対象とします。

分析にはRのライブラリ「RMeCab」を用いました。
この中の docMatrix()関数を用いるのですが、デフォルトでは名詞、動詞、形容詞のみを抽出するようになっています。
しかしながらtweetは短いので同じ名詞が出てくる可能性は極めて低く、あまり役に立ちません。
そこで今回は、本人判別でよく用いられる「助詞」「助動詞」と、句読点にも着目して「記号」を抽出することにしました。

library(RMeCab)
res <- docMatrix("okasand", pos = c("助詞","助動詞","記号"))

okasandはテキスト化された796tweetが全部入ったディレクトリです。

今回はward法でクラスタリングします。
(こちらの記事を参考にしました。)
RによるTwitterユーザーのクラスター分析 | 浅草橋のペンギン

okasanclust <- hclust(dist(t(res)), "ward.D")

結果をプロットしていきます。

plot(okasanclust)


すると、このような結果が得られました。
f:id:kenichia:20180321105157p:plain

height-1000で切ると4本線、height-2000で切ると3本線になります。
執筆数のバランスを考えると4人執筆の可能性が高いか。一人がメインで頑張っているとすると3人の可能性があります。

本来はこのあとクラスタリングされたtweet内容を精査していくのですが、今回はそこまでしておりません。
今回は簡略化のため分析対象を「助詞」「助動詞」「記号」に留めましたが、「動詞」「形容詞」を含めてもいいでしょう。
あと、こういった執筆者判別には投稿時刻、投稿曜日を分析する「タイムスタンプ解析」を組み合わせると精度がさらに上がります。今回は自然言語処理ということでそちらのほうには手を出しませんでしたが、実務でやるときにはそのあたりも視野に入れるとよいでしょう。


自然言語処理クラスタリングに関して学びたければこちら、


言語処理のための機械学習入門 (自然言語処理シリーズ)


ビジネスに関するクラスタリングについて知りたければこちら、


データサイエンティスト養成読本 機械学習入門編 (Software Design plus)


Rを用いた自然言語処理に興味があればこちらの書籍を参考にしてください。


Rによるやさしいテキストマイニング: 機械学習編

Rによる機械学習入門

 こちらの本を読んでみました。


Rによる機械学習入門

 一言で言うと「詰め込み過ぎ」
 どれくらいギュウギュウかというと、第7章が「仮説検定」なんですが、
・仮説検定の枠組み
・ノンパラメトリック検定
・分散分析
 このそれなりにボリュームのある3つの話題がたった14ページで解説されています。キツい。全ての章がこんな感じです。

 内容解説には「ていねいに解説」とありますが、「数式を多用し解説を端折り過ぎている」と言った方が適切です。
 正直これで独学するのは難しいでしょう。内容は充実しているので、どちらかというと教科書的に使用する、十分な知識を持った教師が解説しながら何回かに分けて読み解いていく、という使い方が適切だと思います。

Rプログラミング本格入門: 達人データサイエンティストへの道

 いい本だったのでご紹介。


Rプログラミング本格入門: 達人データサイエンティストへの道

 「本格入門」とありますが「入門」ではなく「本格」派です。初心者向きではありません。内容紹介でも「中級者へ向けて書いた入門書」と書かれてあり「それは入門書ではないのでは……?」という気がします。実際にRを使って既に何度か頭を打った人向けです。

 第2章の「基本的なオブジェクト」で既に「あ、そーなの?」みたいな話がいっぱいありました。Rの基本的なオブジェクトである「ベクトル、行列、配列、リスト、データフレーム、関数」の6つをこれだけ理解できているひとはそんなにいないんじゃないでしょうか。

 あとは第8章「Rの内部を覗く」も良かった。遅延評価、コピー修正、レキシカルスコープ、環境について解説しています。特にレキシカルスコープは自分でRの関数を作る人のハマりどころ。なかなか思った通りの挙動をせず苦しめられた人も多いのでは。この章を読むとだいぶ見通しが良くなると思います。

「初心者が実践的に学ぶ」とは? ~専門家の誤謬~

 岩波データサイエンス刊行委員会メンバーによる連続する2つのツイートを見ていただきましょう。


 最初のツイートは「初心者が実践的に学ぶ」の話をしています。
 ところが、それを受けたはずの2つ目のツイートは完全に「実践的にベイズを使う」話になっています。
 正直、2つ目のツイートの内容は全く初心者向けではありません。
 「実践的」かつ「押さえるべき三大トピック」なのは確かですが、これがすんなりと理解できる初心者はいないでしょう。


 専門家はこういう間違いをやりがちです。
 つまり、自分が初心者だったころのことをまるで覚えていないかのように振る舞うのです。本人は初心者向きの話をしているつもりでも、実際のところは全く初心者向きではない(もしかすると、本当に頭が良くて初心者時代が無かったのかもしれませんが)。


ベイズモデリングの世界

 まだ刊行されてはいませんが、『ベイズモデリングの世界』はおそらく初心者向きではなく、「最先端の研究者から見た俯瞰的な状況解説」になっていると思われます。
 初心者がこの本を読んでも「何が書いてあるかほとんどわからない……」となるでしょうから、手を出すのは他のベイズ入門書を読んでからの方が良いと思います。入門書の紹介はあるみたいなのでそこだけ読むのも手かもしれません。

時系列分析の入門書

 時系列分析の入門書はいくつかありますが、今のところ初心者向けのおすすめはこちら。


入門はじめての時系列分析

 本文中ではExcelSPSSを使っていますが、SPSSの環境は必要ありません。それぐらい内容が丁寧でわかりやすい。

 この本で、

・時系列分析とは何か
・自己回帰(AR)モデルとは何か

をざっくりと掴んでから、他の本にとりかかると良いと思います。

「科学技術立国」は幻想なのではないか?

 CS、特に機械学習系の研究室はまだ企業とのつきあいが多く優遇されていますが……。
 今、「日本の科学にお金が落とされていない」という話が噴出しています。
 「このままでは科学技術立国を堅持できない」という日経新聞の記事もありました。

www.nikkei.com

 私は、これは逆だったのではないかと考えています。
「日本は科学技術によって経済的に潤った」
 のではなく、
「日本に経済的余裕があったから科学技術に投資できた」
 だけではないか、ということです。

 つまり、「朝鮮戦争から始まる特需によって科学技術部門に投資できた」だけであって、「科学技術部門への投資によって高度経済成長が発生した」わけではないのではないかと考えています。
 「科学技術」によって「立国」したのではなく、「立国」によって「科学技術」が発展した。
 上の記事ではノーベル賞を取り上げていますが、それでいくと「ノーベル賞を取れるような研究をしたから経済が発展した」のではなく、「経済が発展したからノーベル賞を取れるような研究ができた」ということです。

 この理論に従うと、今後中国がノーベル賞の数が増えていき、日本は減っていくと思われます。
 なぜなら、中国は経済的に豊かであり、日本は相対的に貧しくなっていくからです。

 「科学技術」に投資することが「経済の活性」に繋がらないのであれば、「科学技術」に投資せず「経済の活性」に投資したほうが良いということになります。なぜなら、経済が活性して初めて「科学技術」に投資されるからです。

 統計的因果推論に足を踏み込むと、どうしてもこういった、「今まで思い込んでいた原因と結果が実は反対ではないか」ということを考えてしまいます。