Help us understand the problem. What is going on with this article?

RMeCabを使って、タダで留学できると話題のトビタテ留学JAPANの学生が投稿している留学ブログサイトのデータをインポートしてテキスト分析してみた トップ20編

More than 3 years have passed since last update.

タダで留学できると話題のトビタテ留学JAPANという留学奨学金プログラムはご存知でしょうか? 

ぼくは、そんなトビタテ留学JAPANの学生が留学体験記を投稿しているトビタテジャーナルというサイトの運営・開発をしています。サイトのデータベースから投稿されたテキストを分析してみると、留学生はどんな単語をよく使っているのかという質問に答えたり、分類ごとにクラスタリングしていくことができそうです。自分でブログやメディアなどを運営している人はそういうことが気になって分析してみたいと思ったことは1度や2度ではないのではないでしょうか?

ただでさえテキスト・データを加工したり、分析するのは手間がかかる作業ですが、特に日本語になると、英語などの言語と違い、単語と単語の間にスペースがないので、トークナイズ(単語ごとに分ける)するのがさらに難しいです。ただ、知ってる人も多いかと思いますが、オープンソースで、MeCabという、Google 日本語入力開発者の一人である工藤拓さんによって開発されたライブラリを使うと日本語をトークナイズするのが簡単にできます。さらに都合のいいことに、RでMeCabが使えるように、石田基広さんが作られたRMeCabというのがあるので、それを使うと簡単にRで、つまりはExploratoryの中でテキスト・データをトークナイズしていくことができます。

今日は、そのMeCabのインストール、さらにそれをExploratoryの中で使うためのセットアップ、そして軽く日本語データに対するテキスト分析の方を順を追って説明していきたいと思います。

Mecabと辞書をインストール

以下にMacでのインストールを説明しますが、Windowsの方は、こちらを参照してください。

環境

  • MacOX 10.11.6(ElCapitan)
  • Homebrewがインストールされていること。Homebrewを持ってない方は、こちらからHomebrewをダウンロードしてください。

MacでMecabを使うためには、Mecab本体と辞書の2つをインストールする必要があります。

brew install mecabで、Mecab本体をインストールします。

brew install mecab

次に、brew install mecab-ipadicで、Mecabで利用する辞書をインストールします。

brew install mecab-ipadic

次のように表示されれば、インストールは成功しています。

brew-install-mecab.png

RMeCabをインストールする

次に、RからMeCabが使えるようRMeCabをインストールしましょう。こちらもMacでの例を説明しますが、Windowsの方はこちらを参照してください。

ターミナルから次のコマンドを打ち込んで下さい。

R -e "install.packages(\"RMeCab\", repos = \"http://rmecab.jp/R\")"

次のように表示されれば、インストールは成功しています。

install.packagesRMeCab.png

RMeCabにある機能を、Exploratoryで使いやすくするように、関数を定義する

RMeCabのトークナイズの関数をExploratoryの仕組みの中で使いやすくするように、こちらに関数を定義しましたので、下記のコードをこちらからダウンロードしてください。

mecab_tokenize <- function(tbl, text_col, .drop=TRUE){
 loadNamespace("RMeCab")
 loadNamespace("tidyr")
 text_cname <- as.character(substitute(text_col))
 text <- tbl[[text_cname]]
 tokenize <- function(text){
   tokens <- unlist(RMeCab::RMeCabC(text))
   data.frame(.token = tokens, .pos = names(tokens))
 }
 if(.drop){
   tbl[[text_cname]] <- lapply(text, tokenize)
   token_col <- text_cname
 } else {
   tbl$.token <- lapply(text, tokenize)
   token_col <- ".token"
 }
 tidyr::unnest_(tbl, token_col)
}

次に、矢印の部分を押して、R packages/Scriptsを選んで下さい。

add-rscript-packages.png

矢印のAddボタンを選んで下さい。

add-rscript.png

さっき関数を定義したファイルを選んで下さい。

mecab-desktop.png

しっかり保存されていますね。

mecab-exp.png

Wordpressの投稿データをCSVエクスポートする

管理者画面から、投稿データをCSVエクスポートします。

csv-export.png

このCSVをExploratoryにインポートします。

csv-export-exploratory.png

これで、テキスト分析をしていくための土台が整いました。

WordpressでCSVエクスポートができない方は、こちらからWP CSV Exporterというプラグインをダウンロードしてください。

テキスト分析をする

トークナイズする

token-rmeacb.png

上記のタイトルの文章を先ほど定義した関数を使って、トークンナイズしましょう。

mecab_tokenize(text_col=post_title)

mecab_tokenize.png

これで、先ほどまで文章だったpost_title列が単語毎に分かれましたね。

stopwordを取り除く

次に、今のままだと、矢印のように、日本語には、意味のない不要な単語が多く含まれています。これらの単語をstopwordsと呼んでいます。

stopwords-rmecab.png

意味のあるテキスト分析をするためには、これらの単語を取り除く必要があります。そのために、こちらに日本語の不要な単語リストがまとまったファイルがあります。ダウンロードして拡張子をcsvに変えてExploratoryにインポートしてください。その際は、「あそこ」がカラム名にならないように、First Row as HeaderをNoに変えてください。

stopwords-rmecablist.png

一度こちらのデータをJapaneseという名のデータ・フレームにしてインポートしましたら、次に、anti_joinという関数を使って、このJapaneseデータ・フレームに入っていないデータだけを残すというオペレーションを行います。

anti_join(Japanese, by=c( ".token" ="X1"))

japaneselist.png

不要な単語が取り除かれたのが確認できました。

さらに不要なデータを取り除く

次に、データを見ていくと記号がいくつか入っていることに気が付きます。よく考えてみると、助詞や助動詞や副詞や接頭詞なども不要であることに気が付きます。なので、名詞と動詞だけに絞ってフィルタリングしていきましょう。

mark-stop.png

filter(.pos %in% c("動詞","名詞"))

delte-sign.png

次に、字数が1文字以下のテキストデータも意味がないので取り除きましょう。

filter(str_length(.token)>1)

dstr_length.png

これで不要な単語はほとんど取り除くことができました。

トップ20を計算する

次に、最もよく頻出している意味のある単語トップ20を計算して出したいと思います。それぞれの単語の個数を数えるために、まず、.token列をグルーピングします。

group_by(.token)

group_bymecab.png

次に、.token列をsummarizeしてそれぞれの単語の個数を数えましょう。

summarize(.token_n = n())

summarize_mecab.png

次に、top_n関数を使ってランキングを計算します。

.token_n列のヘッダーをクリックして、Top Nを選んで下さい。

topn-rmecab.png

すると、コマンドが自動生成されます。Runボタンを押してください。

topn-rmecab2.png

これで、最もよく頻出している意味のある単語トップ20を計算することができました。

ビジュアライズする

次に、データを直観的に理解するためにVizタブに行って、X軸に.tokenをY軸に.token_nをあてはめてビジュアライズしてみましょう。

topn-viz.png

次回は、クラスタリングなどまでしてみたいと思います。

興味を持っていただいた方、実際に触ってみたい方へ

Exploratoryはこちらからβ版の登録ができます。こちらがinviteを完了すると、ダウンロードできるようになります。

ExploratoryのTwitterアカウントは、こちらです。

Exploratoryの日本ユーザー向けのFacebookグループを作ったのでよろしかったらどうぞ

分析してほしいデータがある方や、データ分析のご依頼はhidetaka.koh@gmail.comまでどうぞ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away