先日、3年半お世話になった会社の最終出社日を終えました。
本日、3年半勤めた弊社の最終出社日でした。
— VTRyo (@3s_hv) 2021年9月6日
自分史上一番長い在籍で、好き勝手自由に活動させてもらった3年半は本当に最高でした
お世話になった皆さん本当にありがとうございました
9月はまるまる作家活動をします。
本職再始動は10月からやっていく予定です。
引き続きよろしくお願いしゃす😎
その後、ありがたいことにメンバーから卒業記念メッセージ色紙(デジタル)を頂きました。
フレンドリーなメッセージから、僕の卒業を寂しく思ったり懐かしんだり、大変様々なメッセージをいただき感無量でした。
そこで、この感動を忘れないためにもWordCloudに食わせ、メッセージの頻出度を可視化してみました。
なお、実際に誰がどんなメッセージを送ってくれたかわからなくなるので投稿主のプライバシーも守れます。
WordCloudとは
単語の出現頻度に応じて文字が大きくなり、頻繁に表示される単語を可視化します。 図内の単語が大きいほど、その単語はより多く出現しているということです。
そのWordCloudをつくるのに、OSSのword_cloudを使っていきます。
Python3.7をベースにword_cloudの実行環境を作成する
Macにあれこれライブラリをインストールするのは好みじゃないので、Dockerで作っていきます。
Python3.7を選択したのはOSSが公式でテストしている最新バージョンだからです。
The code is tested against Python 2.7, 3.4, 3.5, 3.6 and 3.7.
FROM python:3.7.12 # setup RUN apt-get update RUN apt-get -y install locales && \ localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LANGUAGE ja_JP:ja ENV LC_ALL ja_JP.UTF-8 ENV TZ JST-9 ENV TERM xterm RUN pip install --upgrade pip RUN pip install --upgrade setuptools # (mecabは日本語を扱うため) RUN apt-get install -y vim less mecab libmecab-dev mecab-ipadic-utf8 RUN cp /etc/mecabrc /usr/local/etc/mecabrc RUN pip install wordcloud mecab-python3
docker build -t wordcloud .
英文章で実行する
日本語でやる前に、英文章で動くのか確認します。
ソースコードはこちらを参照。
Pythonを使ってWordCloud(ワードクラウド)を作成する | ジコログ
- メイン処理
#en.py from wordcloud import WordCloud text = open("constitution.txt", encoding="utf8").read() wordcloud = WordCloud(max_font_size=40).generate(text) wordcloud.to_file("en.png")
- 読み込むファイル(en.pyと同じディレクトリに保存する)
これで準備です。
- 作業ディレクトリをマウントしてコンテナにアタッチする
docker run -it -v $(pwd):/code wordcloud /bin/bash
- 実行
# cd code && python en.py
ディレクトリにen.pngができていれば成功です。
日本語文章で実行する
さて本題の日本語での実行です。word_cloudは単語と単語の区切りをスペースによって判断しているため、このまま日本語を食わせても解析できません。
よって、日本語を扱うためのライブラリを使用します。といってもDockerfileの時点ですでにインストールしてあるので、ここから用意するのは日本語フォントくらいです。
一旦コンテナからデタッチして、Macのターミナルで作業します。
- 日本語フォント
日本語フォントはなんでもいいです。ダウンロードして、ファイルを作業ディレクトリに配置しましょう。
cp ~/Downloads/YasashisaAntiqueFont/TrueType(サポート外)/07YasashisaAntique.ttf ~/wordcloud
- 実行ファイル
ソースコードはこちらを参照。
Pythonでwordcloudを作ってみた。 - Qiita PythonのWord Cloudで表示しない単語を増やす
#coding: utf-8 from matplotlib import pyplot as plt from wordcloud import WordCloud import MeCab def create_wordcloud_ja(text): fontpath = './07YasashisaAntique.ttf' # 自分の名前も追加しておくとノイズがより減ります stop_words_ja = ['もの', 'こと', 'とき', 'そう', 'たち', 'これ', 'よう', 'これら', 'それ', 'すべて', 'さん', 'おつかれ', 'お疲れ', '会','の', 'さ','い'] #形態素解析 tagger = MeCab.Tagger() tagger.parse('') node = tagger.parseToNode(text) word_list = [] while node: word_type = node.feature.split(',')[0] word_surf = node.surface.split(',')[0] if word_type == '名詞' and word_surf not in stop_words_ja: word_list.append(node.surface) node = node.next word_chain = ' '.join(word_list) wordcloud = WordCloud(font_path=fontpath, width=500, height=300, stopwords=set(stop_words_ja)).generate(word_chain) wordcloud.to_file("ja.png") # テキスト読み込み with open('ja.txt', 'r', encoding='utf-8') as fi: text = fi.read() create_wordcloud_ja(text)
- 作業ディレクトリをマウントしてコンテナにアタッチする
docker run -it -v $(pwd):/code wordcloud /bin/bash
- 実行
# cd code && python ja.py
ディレクトリにja.pngができていれば成功です。
噛みしめる
無事WordCloudが生成されました。単語を元に噛みしめていきましょう。
なお、表示除外ワードには「本名」「おつかれ」「お疲れ」「助詞」などを登録しています。
でかワード: 入社 / 仕事 / 一緒
入社というワードが頻出したのは、僕が会社紹介の記事を書きまくっていたことでその記事を読んで入ったんだよというエピソードが展開されていたからのようです。もちろん入社してからずっと仕事してたねというメッセージもあります。
こうしてみると、たくさんの人に読んでもらったんだなと噛みしめが発生します。
記事とはおそらくこれのことでしょう。ありがとうございます。
中くらいワード: マツリカ / ランチ / お世話 / 部署 / 思い出 / 記事 / 発信
2018年くらいからいたので、部署関係なくメンバーと関係性があったように思います。特に誰かが入社した際は、初日の歓迎ランチはまあまあの確率で参加してた記憶もあるのでランチや部署、思い出という単語がランクインしているようです。
記事、発信という単語はさきほどのアウトプットに関連するエピソード展開です。読んでくれる人がいるから成立することを忘れてはいけませんね。ありがとうございます。
特殊ワード: サイクリング / ストイック / 神戸 / 北千住
2019年、関西メンバーと酒を交わすべく始発で神戸にいったエピソードが展開されていました。関西メンバーは香川、兵庫、大阪。そして東京組数名が神戸に集結し、ただただ酒を飲んでラーメンを食って公園のネッコと戯れました。平和な時代もあったことを思い出します。
サイクリングは2020年にロードバイクを買ったことで、社内でサイクリングをしまくったからでしょう。そこで北千住までハンバーガー食べに行きました(神奈川県在住)。
仕事以外でも多くのメンバーと関わらせてもらった噛みしめが発生しました。ありがとうございます。
おわりに
色紙にメッセージを書き込んでくださったみなさまありがとうございました。これをもらうと本当にやめるんだな……と実感が湧いてきます。寂しい。
次の場所でも活躍できるよう精進していきます。応援よろしくお願いします。