メロスは激怒した。必ず、集計係としての人生から逃れなければならないと決意した。

メロスには社内政治がわからぬ。メロスはデータマイナーの卵である。数学を学び、コ

ードをかきながら暮らしてきた。けれども、自由に対しては、人一倍に敏感であった。

 

 

 

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

あー、なるほどね。うん。
わかる。わかる。
大丈夫です。
完璧に理解しました。

卒論で苦しんでいる彼・彼女らへのエールでしたら、
僕に任せてください。

③ランキングの結果から卒論に没頭している学生の気持ちを察し、エールを送る

進捗どうですか♡