見出し画像

プログラミング素人のデザイナーがPythonでワードクラウド作ってみた

こんにちは、久しぶりの更新になりました。あゆみです。

最近は、大学に行く日とバイト先の介護施設に通う日数が同じか、何なら介護施設にいる時間の方が長いので、快活な同年代よりも、認知症の高齢者とのコミュニケーションの方が多い日々を過ごしています。
もう若い飲み会とかサークルのノリについていける自信がありません。

こちらは毎年恒例のあくあたん工房アドカレ2021の12/7の記事になります。

ぜひ上のリンクからほかの記事もご覧ください!

アドカレの参加も早いことに3年目となりました。
私は来年の4月には大学院生になります。時が流れるのは早いですね。(毎年言ってる)(年々早くなってる気がする)

さて今年の記事は、全くコードを書けないデザイナーがなんか作ってみたよ~~!です。

これまでも、デザインで表層の部分を作るだけでなく、実際に動くものや仕組み作りの部分がやってみたいと思っていたのですが、日々の課題や研究に流されてそのきっかけをつかめずにいました。

そんな時、授業の名前だけを見て直感で履修した授業で「1クオーター(約2か月)で何か新しい技術を習得してその成果をみんなで共有しましょう」という課題が出ました。これはいい機会だと思い、言語処理をやってみたかった私はPythonで言語処理系のなんか作ってみよ~!という課題を設定し、プログラミングの第一歩を踏み出したのです。


最終的に、指定したテキストファイルを勝手に解析してワードクラウド画像を出力してくれるコードを作成しました。いかにも初心者が最初に取り組んだモノらしいクオリティですが、それはご愛敬ということで。

画像1

これは去年のアドカレの記事のワードクラウドです、デザイン思考について書いてますね。

総学習時間は以下のようになりました。

最初に全くコードを書けない私が、と言いましたが、ちょっとだけ嘘です。

研究でホームページを作ったりしてHTMLやCSSなどのweb系の言語はある程度習得していたので「正直いけるやろ」と思っていましたが、コードを書くところにたどり着くまでの道のりがとても長くて険しいものでした。何ならコード自体はほぼコピペなので自分で書いたのは2,3行です。

では順番に私がぶつかった壁を紹介していきます。


まず、マジで用語がわかりません。日本語で書かれているはずなのに全く理解できない文章がいっぱい出てきました。このツイートが本当に共感しかなかった。

これに対する一番手っ取り早い解決方法は、有識者を隣に置いて作業する、です。

次にぶち当たった壁は環境構築です。Pythonの環境構築がほかの言語に比べて難しいということは聞いたことがあったのですが、課題期限のかなりギリギリまで環境構築のミスに関するエラーを吐き続けて、そのたびに「読めない日本語」記事を解読するという作業をするのはかなり精神に来ました。


これに対する一番手っ取り早い解決方法は、有識者を隣に置いて作業する、です。


今回の課題で泣きついたときに、対応してくれた2人の友人には大変感謝しています。
やっぱり持つべきものは友達ですね!


これら二つの壁を超えればあとはネットにある豊富な先行事例からコードをコピーしてきて自分の環境に合わせてちょちょっと書き換えれば完成です。
今回はかなり一般的なもので、ライブラリをそのまま実行するだけで作れることが分かったので、あまり深く考えずにそのライブラリの作者のブログに書いてあることに従って作成しました。

コピペだらけの初心者の書いたコードを公開するのは恥ずかしいですが、コードがあったほうがなんかそれっぽいので貼っておきます。

import MeCab
from wordcloud import WordCloud

# テキストを読み込む
with open('note.txt', mode='rt', encoding='utf-8') as fi:
   source_text = fi.read()

# めかぶを使う
tagger = MeCab.Tagger()
print(tagger.parse(source_text))

# 名詞を取り出して文字列にする
node = tagger.parseToNode(source_text)
word_list = []
while node:
   word_type = node.feature.split(',')[0]
   if word_type == '名詞':
       word_list.append(node.surface)
   node = node.next

# 一般的な単語を取り除く
while "は" in word_list :
   word_list.remove('は')
while "が" in word_list :
   word_list.remove('が')
while "ん" in word_list :
   word_list.remove('ん')

# リストを文字列に変換
word_chain = ' '.join(word_list)
# 文字列からワードクラウドを作成
W = WordCloud(
       width=640, 
       height=480, 
       background_color='white', 
       font_path='C:/Users/aowal/font/NotoSansCJKjp-hinted/NotoSansCJKjp-Regular.otf'
       ).generate(word_chain)

W.to_file("result.png")


まとめ


今回はローカルのテキストファイルを分析するだけのものになりましたが、時間があればAPIもたたいてみたかったです。よくツイッターで見る自分のツイートをワードクラウドにしてくれるやつとかも作ってみたいなと思いました。ただ、今は卒業研究に進学がかかっているので、研究を提出した後に、卒業できるようにお祈りしつつまたプログラミングにも挑戦したいなと考えています。

本当はこの記事を読めばプログラマ独特の言語が分からないデザイナーさんでも私と同じ作業ができるようになる!という超お役立ち記事にしたかったのですが、執筆時間を確保できず、結局ただの感想文になってしまいました。お役立ち記事もいつか公開できたらいいな。

この記事が気に入ったらサポートをしてみませんか?