LoginSignup
2
0

More than 1 year has passed since last update.

デスクトップRしか使ったことがないノンプログラマーが、始めて使うRStudio Cloudでワードクラウドを作るまでの“道のり”

Last updated at Posted at 2021-07-14

RStudio Cloudを試す

ノンプログラミンで可視化する方が好みなので、プログラムには疎く、今になって「RStudio Cloud」を知りました。
試用がてら、ワードクラウドを作ることにししました。
経験不足もあり思い通りにはできず、何度もつまずきながら進めました。
RStudio Cloudの基本は以下を参考にしました。

アカウントを作り、RStudio Cloudを開きます。

image.png

パッケージをインストール

Twiterのツイートを解析しようと考えたので、まず「twitterR」をインストールしました。

image.png

image.png

少々反応が遅いのですが、インストールできました。

image.png

機能するかを試すためにTOKYO(1118370)のトレンドワードをピックアップしてみました。

trends <- getTrends(1118370)

image.png

このほか、以下のパッケージインストールしました。

install.packages("dplyr")
install.packages("magrittr")
install.packages("stringr")
install.packages("wordcloud2")

後述しますが、インストールできなかったのが形態素解析の「RMeCab」です。

ツイートを取得・失敗

この手順で操作を開始したのが2021/7/11(日)だったこともあり、「晴天を衝け」を含むツイートを取得しました。

image.png

ここから、(思い出したので)「File」→「New File」→「R Script」でスクリプトエディタを使い始めました。
取得したツイートをデータフレームに変換します。

image.png

テキスト列のみを抽出し、結合します。

texts2 %<>% str_replace_all("\\p{ASCII}", "")

を使い、今回はここで記号やアルファベットを削除します。

エラーが出て先に進みません。

image.png

原因がわからなかったので、新しいプロジェクトを作り、再実行しました。

image.png

「xfile2」という一時ファイルを作り、そこに加工したツイートテキストを保存し、形態素解析を実行します。
形態素解のために、「RMeCab」というパッケージをインストールしようとしたのですが、以下のようなエラーが出ます。

install.packages ("RMeCab", repos = "http://rmecab.jp/R ", type = "source")

・・・・・・
When you run
downloaded 1.4 MB

installing * source * package RMeCab ...
** using staged installation
** libs
g ++ -std = gnu ++ 14 -I "/opt/R/4.1.0/lib/R/include" -DNDEBUG -I / usr / local / include -fpic -g -O2 -c Ngram.cpp -o Ngram .o
In file included from Ngram.cpp: 2:
RMeCab.h: 25:10: fatal error: mecab.h: No such file or directory
etc.etc
・・・

ネットを検索して、他の方法も試したのですが、うまくいきませんでした。
海外のコミュニティに質問を投げたところ「ユーザーレベルでは無理。RStudioの管理者次第」という返答が返ってきました。

RMeCabについてはあまり詳しくないのですが、R本体と同じ環境にインストールしないといけないため、クラウド版には組み込めなかったのかもしれません。

形態素解析はデスクトップのRで回避

そこで、方針を変更しました。
RStudio Cloudで抽出したツイートをcsvで出力し、デスクトップのRで形態素解析をかけ、RStudio Cloudに取り込んでワードクラウドを作ることを試すことにしました。

また、先に進めず2日間止まっていたため、取得するツイートも変更しました。
『新宿駅から半径10kmの範囲で「ラーメン」を含むツイート』を取得することにしました。

tweets2 <- searchTwitter('ラーメン', geocode='35.689607,139.700571,10km', n = 5000, since = "2021-07-12", lang="ja")

csvに出力します。

write.csv(tweetsdf2, file="tweetsdf2_csv.csv")

(画面ではwrite.tableを使っていますが、write.csvで出力したものを使っています。)

image.png

文字化けは秀丸で回避

「Export」を実行します。

image.png

デスクトップのRから読み込みます。
ところがこれがうまくいきません。
文字コードを指定する、「readr」ライブラリを使うなど、いろいろ試しました。

tweetsdf3 <- read.csv("tweetsdf2_csv.csv", header=T, fileEncoding = "UTF-8")
tweetsdf3 <- read.csv("tweetsdf2_csv.csv", header=T, fileEncoding = "shift-jis")
tweetsdf3 <- read.csv("tweetsdf2_csv.csv", header=T, fileEncoding = "UTF-8-BOM")
tweetsdf3 <- read.csv("tweetsdf2_csv.csv", header=T, fileEncoding = "CP932")

以下のようなエラーが出ます。

 警告メッセージ: 
1:  read.table(file = file, header = header, sep = sep, quote = quote,  : 
   入力コネクション 'tweetsdf2_csv.csv' に不正な入力がありました 
2:  read.table(file = file, header = header, sep = sep, quote = quote,  : 
  incomplete final line found by readTableHeader on 'tweetsdf2_csv.csv'

ネットで検索して調べたのですがうまくいかず、結局「秀丸」で「SHIFT-JIS」コードでで保存しました。
うまく変換できない文字も出ましたが、Rで取り込むことができました。

tweetsdf3 <- read.csv("tweetsdf2_csv.csv", header=T, fileEncoding = "shift-jis")
head(tweetsdf3)

  favorited favoriteCount  replyToSN             created truncated
1     FALSE             0       <NA> 2021-07-13 12:00:59     FALSE
2     FALSE             1       <NA> 2021-07-13 12:00:22     FALSE
3     FALSE             1       <NA> 2021-07-13 11:59:34      TRUE
4     FALSE             0 mg_sparrow 2021-07-13 11:59:28     FALSE
5     FALSE             0 tk02948096 2021-07-13 11:59:23     FALSE
6     FALSE             0       <NA> 2021-07-13 11:59:05     FALSE

テキストだけを抽出するなどし、形態素解析をかけます。

library(stringr)
library(magrittr)
#テキスト列のみを抽出し、結合
texts2 <- tweetsdf3$text
texts2 %<>% str_replace_all("\\p{ASCII}", "") #今回はここで記号やアルファベットを削除
texts3 <- paste(texts2, collapse = "")
#一時ファイルを作り、xfile2という名前で保存
xfile2 <- tempfile()
write(texts3, xfile2)
library(RMeCab) 
frq_Tw2 <- RMeCabFreq(xfile2)
file = C:\Users\hrogawa\AppData\Local\Temp\RtmpOaE1o8\file16d830b9944 
length = 8398 
frq_Tw2 %>% arrange(Freq) %>% tail(50)
         Term  Info1                    Info2 Freq
1709 たまたま   副詞                     一般  467
2196     会話   名詞                 サ変接続  469
3623   シャツ   名詞                     一般  469
1847     特に   副詞                     一般  471
1481   変える   動詞                     自立  474
4733          名詞                     一般  475
486    なんて   助詞                   副助詞  479
1595     れる   動詞                     接尾  496
1136     作る   動詞                     自立  499
1610   くれる   動詞                   非自立  507
1555     流す   動詞                     自立  520
8185          名詞                   非自立  588
5439          名詞                     一般  640
8060     分間   名詞                     接尾  643
426           助詞                   終助詞  647
6249          名詞                     一般  709
496           助詞 副助詞並立助詞終助詞  722

csvに書き出します。
fileEncodingを付与しないとRStudio Cloudで文字化けするので、警告メッセージが出ましたが、4日間にまたがるこの処理を先に進めたいので、目をつぶりました。

write.csv(frq_Tw2, file="frq_Tw2.csv", fileEncoding = "UTF-8")
 警告メッセージ: 
1:  write.table(frq_Tw2, file = "frq_Tw2.csv", fileEncoding = "UTF-8",  : 
   出力の変換中に不正な char 文字列があります 
2:  write.table(frq_Tw2, file = "frq_Tw2.csv", fileEncoding = "UTF-8",  : 
   出力の変換中に不正な char 文字列があり

RStudio Cloudに戻りました

今度はRStudio Cloudに取り込みます。
「Upload」をします。

image.png

write.csvで取り込みます。

image.png

image.png

形容詞を抽出してワードクラウドを作ります。

image.png

「ない」というワードが頻出して目立つので、見栄え調整のためにこの行を外します。
wordcloud2を実行しました。

image.png

「Export」でHTMLとして出力します。

image.png

出力結果です。

image.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0