こんにちは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ページに反映して、リアルタイムに変わっていくようにする予定です。
最後まで読んでいただき、ありがとうございました。