Google Formへの回答を元にGoogle Colaboratoryで日本語ワードクラウドを作る


こんにちはGeraldです。
Google Formsで集めた回答をもとに、その場でワードクラウドを作って、セミナー参加者に見せたい!というご要望をいただき、誰でも実行できる方法を考えてみました。思いの外好評だったので手順をまとめます。

準備

  • Googleアカウントを作る
  • Google Formsでアンケートフォームを作る
  • アンケートフォームの回答をGoogle SpreadSheetに書き出しておく
  • Google Colaboratoryでノートブックを作る

ソースコード

wordcloud.py

fileId = '対象となるGoogle SpreadSheetのIDをここに書く'

#ライブラリのインポート
from google.colab import auth
from wordcloud import WordCloud
import gspread
from oauth2client.client import GoogleCredentials

#Google Driveへの接続要求
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())

# 日本語フォントを取得する
!apt-get -y install fonts-ipafont-gothic

# Google Formsから入力され、Google SpreadSheetに格納されている情報を収集する。
gotWords = []

book = gc.open_by_key(fileId) # 対象となるスプレッドシートを開く
shts = book.worksheets() # スプレッドシートの全シートを取得する。(Google Formsの回答シートが前提なのでシートは1枚)
row_list = shts[0].get_all_values() # 1枚めのシートからデータを取得する。

for j, row in enumerate(row_list):
  if j > 0 : # 1行目はヘッダーなので読み飛ばす
    for i,cell in enumerate(row):
      if (i > 0): # 1列目は回答時刻なので読み飛ばす
        gotWords.append(cell) # 回答時刻を除いて載せていく

splitted = ' '.join(gotWords) #リストを空白区切りで結合する。

# ワードクラウドの作成
fpath = '/usr/share/fonts/truetype/fonts-japanese-gothic.ttf'  # 日本語フォント指定

# パラメータはお好みで
wordc = WordCloud(font_path=fpath,
                  background_color='white',
                  width = 1600, height = 1200,
                  repeat = False,
                  collocations = False,
                  random_state = 42,
                  relative_scaling = 0,
                  contour_width = 0)

wordc.generate(splitted) # ワードクラウドを生成

# ここで画面にワードクラウドを表示。画像をダウンロードして利用。
wordc.to_image()

ポイント

  • Google SpreadSheetのファイルIDはURLの"d/"のあとから、"/edit"の手前まで。
  • Google Driveへの接続要求に来ると、別ページが立ち上がるので、承認して、許諾キーをコピーして、貼り付ける。
  • うまく行かないときは、”ランタイムを再実行”でなんとかなる。

参考にさせていただいたページ

今後

  • Mecabも動かして分かち書き対応する予定です。
  • 出力先を指定して、Webページに反映して、リアルタイムに変わっていくようにする予定です。

最後まで読んでいただき、ありがとうございました。