LoginSignup
1
1

More than 3 years have passed since last update.

wordcloudを使ってアプリレビューを可視化する

Last updated at Posted at 2020-06-28

アプリをダウンロードするとき、まずそのアプリに投稿されているレビューを参考にする人は多いと思います。
でもレビューって数が多くて全部見るのは難しいですよね。
そこで今回は 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'])![twitter_wordcloud.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501910/8c3531e3-7cde-a60f-8d5d-d8acd8594c6b.png)

収集したデータはこんな感じ。

スクリーンショット 2020-06-28 17.36.11.png

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')

完成したwordcloud画像がこちら!

Twitter, アカウント、 凍結、 フォロー、 タイムライン、、、などtwitterらしいワードが並んでいますね。

まとめ

iosアプリのレビューを可視化することができました。
大量の文書のイメージをクイックに捉えたい時にwordcloudは良いかもしれませんね。

1
1
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
1
1