WordPressにプログラムを埋め込む方法~ワードクラウドサイト制作②~

このサイトはアフィリエイト広告を含みます
IT・ブログ

前回の記事

この記事は「WordPressにプログラムを埋め込む方法~ワードクラウドサイト制作①~」の続きです。

前回の記事を読んでない方は下記リンクを活用ください。

WordPressにプログラムを埋め込む方法~ワードクラウドサイト制作①~
ワードクラウドサイトの概要ワードクラウドは文章データの中から出現頻度の高い文字を可視化してくれる技術で見た目のインパクトが強いのが特徴です。昔からワードクラウドって面白いなぁと思っていたので、下のようなツイート内容をワードクラウドしてくれる...

この記事で紹介するワードクラウドサイト

この記事ではツイート内容をワードクラウドしてくれるサイトの制作方法を解説しています。

実際のサイトは下記リンクにあるので、是非ご覧ください!

ツイート内容をワードクラウドしてみた
twitter ワードクラウド使い方ツイッターのアカウント(@以下)を入力し、送信ボタンを押すと10秒ほどでワードクラウドの画像が表示されます。過去1週間分のツイート情報からよく使用している単語が一目でわかります。 twitter ワードク...

WordPressからRプログラムを呼び出す際の注意点

前回の記事では、WordPressからPHP経由でRプログラムを呼び出す方法について解説しました。

PHP側で注意すべき点は前回の記事で解説したので、今回はR側で注意すべき点について解説します。

R側でも重要になってくるのがユーザー権限です。

ubuntuでRプログラムを実行する際はubuntuのユーザーで作成・実行されますが、

WordPressから実行する際はWordPressのユーザーとして設定されているwww-dataで実行されます。

そのため、プログラムやプログラムから出力するファイルはWordPress以下のディレクトリに保存することをお勧めします。

ライブラリのインストール先に注意!

また1番注意していただきたいのは、Rプログラム内で使用するライブラリのインストール先です。

私は初めubuntuのローカルユーザーでプログラムを作成していたため、ライブラリもubuntuのローカルユーザーのディレクトリにインストールしていました。

しかし、この場合だとWordPressのユーザーであるwww-dataはubuntuのローカルユーザーのディレクトリにアクセスできないため、ライブラリの読み込み時にエラーがでます。

対策としては、スパーユーザーでライブラリをインストールする方法をお勧めします。

スパーユーザーでインストールすることでwww-dataからでもライブラリが読み込めるようになります。

以下コマンドを記載します。

スーパーユーザーでRを起動

sudo R

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

install.packages("ライブラリ名")

Rプログラム:ワードクラウド

プログラム全体の構成

プログラムの全体構成は下のようになっており、HTMLの入力フォームからツイッターアカウント情報を取得後、PHPを介してワードクラウド用のRプログラムを呼びだす仕組みになっています。

  1. HTMLー
    • 入力フォーム
  2. PHPー
    • アカウント情報をテキストファイルに書き込み
    • Rプログラムの呼び出し
    • 画像データの表示
  3. Rプログラムー
    • テキストファイルの読み込み
    • ツイート情報の収集
    • ワードクラウド
    • 画像データの作成

その内、R部分のソースコードを下記に示します。

Rソースコード

# ライブラリの読み込み
library(tm)
library(twitteR)
library(RMeCab)
library(dplyr)
library(purrr)
library(stringr)
library(wordcloud)
library(wordcloud2)
library(tidyverse)
library(webshot)
library(htmlwidgets)


# アクセストーンの設定

ak <- "API Keyを入力"
ask <- "API Secret Keyを入力"
at = "Access Tokenを入力"
ats = "Access Token Secretを入力"

# アクセストークンを発行
setup_twitter_oauth(ak, ask, at, ats)

# ディレクトリの移動
setwd("アカウント情報を保存したテキストファイルのディレクトリ")

# ツイッターアカウントを取得
account <- read.table("filestream.txt")
account <- as.character(account[1,1])
account <- gsub(" ", "", paste("from:@", account))

# ツイッターからツイートを検索&収集
tweets <- twListToDF(searchTwitter(account, lang="ja", n=300))

# 取得したツイートから\\p{ASCII}を除去
tweets = str_replace_all(tweets$text, "\\p{ASCII}", "")

# ツイートを一つのテキストに結合
tweets_all = ""
for (i in 1:length((tweets))){
  tweets_all = paste(tweets_all, tweets[i], seq = "")
}


# テキスト出力
write.table(tweets_all, "tweets_all300.txt")


# RMeCabによる携帯要素解析(名詞や形容詞を抽出し、出現回数をカウント)
docDF_tweets = docDF("tweets_all300.txt", type = 1)

# 名詞(noun) and 非自立 (non-autonomous)を抽出
docDF_tweets2 = docDF_tweets %>% filter(POS1 %in% c("名詞","形容詞"), POS2 != c("非自立"))


# ワードクラウドを作成&画像生成
png("wordcloud.png", width = 400, height = 400)
wordcloud(docDF_tweets2$TERM,docDF_tweets2$tweets_all300.txt, min.freq= 1, scale=c(4.0, 1.0),
 colors = brewer.pal(8,"Dark2"))
dev.off()

コメント

タイトルとURLをコピーしました