アプリをダウンロードするとき、まずそのアプリに投稿されているレビューを参考にする人は多いと思います。
でもレビューって数が多くて全部見るのは難しいですよね。
そこで今回は wordcloud という表現で、アプリのレビューをひとめでわかるように可視化してみたいと思います。
wordcloudとは
ある文書中の出現する単語を様々な大きさ、色で表すことで、文書の特徴を一枚の画像に可視化したものです。
レビューデータの収集
App Storeのアプリレビューは下記のURLに該当するアプリのIDを入れると、JSON形式で取得することができます。
https://itunes.apple.com/jp/rss/customerreviews/id=(アプリID)/page=1/json
今回はTwitterアプリを対象とします。IDは333903271です。
page=のあとの数字を変えることで、10ページ分まで取得することができます。
下記のスクリプトでアプリのレビューデータを取得します。
import pandas as pd
import requests
import json
rss_url = 'https://itunes.apple.com/jp/rss/customerreviews/id={}/sortBy=mostRecent/page={}/json'
app_id = '333903271'
def get_reviews(url):
"""
iOSレビュー取得のAPIレスポンスから[点数、タイトル、文章、名前]のリストを取得する
"""
response = requests.get(url, timeout=3.5)
response_json = json.loads(response.text)
reviews = [[int(entry['im:rating']['label']), entry['title']['label'], entry['content']['label'], entry['author']['name']['label']]\
for entry in response_json['feed']['entry']]
return reviews
review_list = []
# 1~10ページ分のレビューを収集
for i in range(1, 11):
page_url = rss_url.format(app_id, i)
reviews = get_reviews(page_url)
review_list += reviews
review_df = pd.DataFrame(review_list, columns=['point', 'title', 'review', 'name'])
収集したデータはこんな感じ。

WordCloudの作成
集めたレビューデータを元にwordcloud画像を作成します。
まず、形態素解析のためにいMeCabをインストールします。
$ brew install mecab
$ brew install mecab-ipadic
続いてpythonでwordcloudライブラリをインストールします。
$ pip install wordcloud
下記のスクリプトでwordcloudを作成できます。
日本語入力のために、実行環境での日本語フォントファイルのパスを指定してください。
# 日本語用のフォントが格納されているパスを指定
FONT_PATH = '/System/Library/Fonts//ヒラギノ角ゴシック W3.ttc'
def prepare_word_list(words):
"""
wodcloudに入力用の文字列を作成する
Args:
words([str]): 文章のリスト
Retruns:
str: 全単語から指定した品詞のみを抽出し、スペース区切りで結合した文字列
"""
m = MeCab.Tagger('')
parsed_words = []
for word in words:
items = [x.split('\t') for x in m.parse(word).splitlines()]
for item in items:
if item[0] == 'EOS' or item[0] == '':
pass
elif item[1].split(',')[0] in ["名詞", "形容詞", "動詞"]:
parsed_words.append(item[0])
return ' '.join(parsed_words)
def make_wordcloud(words, file_name):
"""
入力した文章から、wordcloud画像ファイルを作成する。
Args:
words(str): スペース区切りで単語を結合した文字列
file_name(str): 画像ファイル出力先のパス
Returns:
なし
"""
parsed_words = prepare_word_list(words)
wordc = wordcloud.WordCloud(
font_path = FONT_PATH,
background_color='white',
contour_width=2,
width=800,
height=600,
).generate(parsed_words)
wordc.to_file(file_name)
make_wordcloud(review_df['review'], './image/twitter_wordcloud.png')
Twitter, アカウント、 凍結、 フォロー、 タイムライン、、、などtwitterらしいワードが並んでいますね。
まとめ
iosアプリのレビューを可視化することができました。
大量の文書のイメージをクイックに捉えたい時にwordcloudは良いかもしれませんね。