Twitterと形態素解析
R Advent Calender 25日目の記事を担当しますメロスです。
12月25日である本日は街中がピンク色に包まれるあのクリスマスです。
今年ももうそんな時期なんですね。
ところで、街中がカップルで埋め尽くされる中、
ある重要なプロジェクトが裏ではしっていることをご存知でしょうか。
そう、卒論です。
卒論締め切り間近の学生にとっては、
クリスマスどころではないとか、
いや、むしろ絆を深めるチャンスであるとかないとか。。。
僕は誰かの役に立ちたいという気持ち、
すなわち自己承認欲求がえげつない人間ですから、
彼・彼女らの悲痛な叫びを汲み取って、
こんな僕にも手伝えることはないか考えてみました。
構想としてはこんな感じです。
①Twitterから「卒論」を含むツイートを取得
②ツイートに含まれる形容詞の使用頻度ランキングを出力
③ランキングの結果から卒論に没頭している学生の気持ちを察し、エールを送る
①Twitterから「卒論」を含むツイートを取得
ツイートデータをとってくるためには以下の3つが必要になります。
(1)Twtitterのアカウント
(2)TwitteRパッケージのインストール
(3)ROAuthパッケージのインストール
TwitteRパッケージを利用すると、
ツイートの取得やRからのツイートが可能になります。
詳細はこちらにありますので、ご参考に。
http://cran.r-project.org/web/packages/twitteR/twitteR.pdf
また、ROAuthパッケージはOAuth認証のためのパッケージとなっており、
そのー、深く考えたら負けです。
この記事では(2)以降について記していきます。
なんで、まずはTwitteRパッケージとROAuthパッケージをインストールしましょう。
install.packages("twitteR") install.packages("ROAuth")
インストールが完了したので、
実際に「卒論」というキーワードを含んでいるツイートを
とってきます。
#「卒論」を含むツイートを取得 library(twitteR) library(ROAuth) twit.oauth <- OAuthFactory$new( handshakeComplete = TRUE, signMethod = "HMAC", consumerKey = "*********************", consumerSecret = "*********************", oauthKey = "*********************", oauthSecret = "*********************) registerTwitterOAuth(twit.oauth) n <- 3200 tweet <- searchTwitter("卒論",n)
これで3200ツイートのデータがとれました。
②ツイートに含まれる形容詞の使用頻度ランキングを出力
ツイートがどういう単語から構成されているのか調べるために
RMeCabを使って形態素解析を行います。
そのためには、以下の2つが必要になります。
(1)MeCabのインストール
http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#download
(2)RMeCabパッケージのインストール
http://rmecab.jp/wiki/index.php?RMeCab
実際にRMeCabを使って、大好きな言葉を形態素解析してみます。
> library(RMeCab) > RMeCabC("お家に帰るまでが遠足です") [[1]] 名詞 "お家" [[2]] 助詞 "に" [[3]] 動詞 "帰る" [[4]] 助詞 "まで" [[5]] 助詞 "が" [[6]] 名詞 "遠足" [[7]] 助動詞 "です"
RMeCabC()は日本語文字列に対して、
形態素解析の結果をリストとして返す関数です。
「お家に帰るまでが遠足です」という一文が
意味をもつ最小の言語単位に分割されたことになります。
先ほど取得したツイートデータにも形態素解析を行い、
形容詞を対象とした出現回数のランキングを算出してみます。
こんどはRMeCabFreq()を使ってみます。
RMeCabFreq()はテキストファイルを形態素解析し、
その頻度をデータフレームとして返す関数です。
tweet.text <- character(n) for (i in 1:n){ tweet.text[i] <- tweet[[i]]$text tweet.text[i] <- gsub("RT.?@.*","",tweet.text[i],perl=TRUE) #RT以降の文章を削除 tweet.text[i] <- gsub("@\\w*","",tweet.text[i],perl=TRUE) #アカウント名を削除 tweet.text[i] <- gsub("http:\\/\\/[\\w\\.\\/]*","",tweet.text[i],perl=TRUE) #URL削除 } write(tweet.text,file="tweetdata.txt") word <- RMeCabFreq("tweetdata.txt") adjective <- word[word$Info1 == "形容詞",] adjective <- adjective[order(-adjective$Freq),]
形容詞ランキングトップ30はこんなふうになりました。
> head(adjective,30) Term Info1 Info2 Freq 3955 ない 形容詞 自立 85 3919 いい 形容詞 自立 34 3971 やばい 形容詞 自立 31 4018 眠い 形容詞 自立 27 4004 早い 形容詞 自立 20 4041 いい 形容詞 非自立 20 4007 楽しい 形容詞 自立 19 3952 つらい 形容詞 自立 14 3992 忙しい 形容詞 自立 13 4013 無い 形容詞 自立 11 3946 すごい 形容詞 自立 10 3999 悪い 形容詞 自立 10 4027 良い 形容詞 自立 10 3972 よい 形容詞 自立 9 4032 辛い 形容詞 自立 8 3985 多い 形容詞 自立 7 3986 嬉しい 形容詞 自立 7 4015 痛い 形容詞 自立 7 4034 遅い 形容詞 自立 7 3935 かわいい 形容詞 自立 6 3958 はやい 形容詞 自立 6 3984 可愛い 形容詞 自立 6 3993 怖い 形容詞 自立 6 3916 っぽい 形容詞 接尾 5 3937 きつい 形容詞 自立 5 4008 欲しい 形容詞 自立 5 4047 良い 形容詞 非自立 5 3922 うまい 形容詞 自立 4 3928 おかしい 形容詞 自立 4 3949 だるい 形容詞 自立 4
あー、なるほどね。うん。
わかる。わかる。
大丈夫です。
完璧に理解しました。
卒論で苦しんでいる彼・彼女らへのエールでしたら、
僕に任せてください。
③ランキングの結果から卒論に没頭している学生の気持ちを察し、エールを送る
進捗どうですか♡