クラスメソッドにジョインしましたShirotaです(再)

さよならの 半年後に 出戻りし ブログのネタを 皆に託して
2022.01.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。クラスメソッドに再ジョインしたShirotaです。
また入社したということで本日は改めて、自己紹介をしたいと思います。

今回はデータアナリティクス事業本部のインテグレーション部で機械学習エンジニアとして仕事をすることになりました。
以前、クラスメソッドに在籍していた時はAWS事業本部に所属しAWSエンジニアを経てソリューションアーキテクトとしてAWS環境の構築・コンサルティングを行なっていました。
前職については、以前書いたブログに少々触れているスマートねこトイレのスタートアップの会社で開発チームに所属し、AWS環境周りの運用を行なっていました。
趣味は前回のジョインブログからあまり変わらず、DDRや派手な髪色などが好きです。最近はよく映画を観たりもするようになりました。
さいごになりましたが、興味のあった機械学習という分野への新たな挑戦ということでPythonやデータ分析など色々勉強をして行きたいと思います。どうぞよろしくお願いします!

そしていきなりの懺悔です。
私は、上記の再ジョインブログの文章をほぼ脳を使わずに書きました。


▲ まだ正月気分なんです、ごめんなさい

なぜそんなことをしたのか、またどうやってそれを実現したのかをこれからお話しします。

ジョインブログはここまでで終了です。ジョインブログが読みたかった方はここまでご覧頂きありがとうございました。

経緯

クラスメソッドに再ジョインするということは、再びジョインブログを書くということ。
DevelopersIOには、なんと戻ってきた人のためのジョインブログカテゴリが存在するのです。当たり前のように、ブログをかつて書いてきた人たちが改めてジョインブログを書く。最早一つの風物詩となっております。

かつて入社初日、オフィスに缶詰になりながら慣れないエディタと格闘してジョインブログを書いたことは今でも鮮明に思い出せます。
もしかしてまたアレをやるのか?
私はどちらかというと文章を書くことが好きです。
ただ、同じことを繰り返したり、自分についてを人に話すことは実はあまり得意ではないのです。
また、前回のジョインブログや今までのブログをご存知な方ならお分かりかと思いますが、 ちょっとズレたことを書きがちな傾向 があります。

またアレをやるのか?

しかし、逆に考えてみれば既に前科があるため傾向と対策は練れます。
同じ轍を踏むことなくズレたことを言わずに、かつブログネタを考える手間を省きたい。

技術で解決することにしました。

ジョインブログをかき集めてワードクラウドを作る

見出しが全てなのですが、はじめに載せたジョインブログの形式を保った文章はワードクラウドで頻出だった単語を選んで作った文章です。
ワードクラウドとはテキストデータを視覚化する手法の一つで、文章の中でより頻出である単語ほど大きく目立つように図示されるようにしたものです。
一時期、ツイートを分析してワードクラウドを作成することが流行ったので見かけたことのある人も多いのではないでしょうか。
イメージを掴みやすくするために、とある曲の歌詞でワードクラウドを作成してみました。


▲ 目が悪い人はメガネを外すと見えるかもしれません

これを、ジョインブログで作成します。
幸いにも、クラスメソッドはジョインブログのビッグデータが集まっています。
今回は、なるべく周りに馴染めるように同じ部署の人たちのジョインブログ(2020年1月〜2021年12月)17本のワードクラウドと、再ジョインブログ7本のワードクラウドを作成してみました。

用意したもの

  • ジョインブログのテキストファイル
  • Google Colaboratory(Python 3.7.12)
  • Google Drive

今回は、Google Driveにテキストファイルを置き、Google Colaboratory上でPythonを実行してワードクラウドを作成しました。
もしAWSを使うとしたら、S3にテキストファイルを置いてLambdaでPythonを実行するといった形で実現できる構成です。

実行したコード

from google.colab import drive 
drive.mount('/content/drive')

!pip install mecab-python3
!pip install unidic
!python -m unidic download
!apt -y install fonts-ipafont-gothic

import MeCab
import unidic
from wordcloud import WordCloud
import matplotlib.pyplot as plt

txtfile = open('/content/drive/My Drive/text/join-blog-text.txt', encoding='utf-8')
sample_text = txtfile.read()
tagger = MeCab.Tagger()
node = tagger.parseToNode(sample_text)
word_list = []
while node:
  word_type = node.feature.split(',')[0]
  if word_type in ["名詞"]:
    word_list.append(node.surface)
  node = node.next
word_chain = ' '.join(word_list)
font_path_gothic = '/usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf'
result = WordCloud(width=1200, height=630, background_color='white', font_path=font_path_gothic).generate(word_chain)
plt.figure(figsize=(12,10))
plt.imshow(result)
plt.axis('off')
plt.show()
result.to_file('/content/drive/My Drive/result/join-blog-wordcloud.png')

ワードクラウドを作成するにあたって、以下のものを利用しました。

  • Pythonの形態素解析エンジン「Mecab」のラッパーであるライブラリ「mecab-python3」
  • 形態素解析用辞書「UniDic」

また、ワードクラウドはデフォルトで日本語フォントが入っていないため、日本語フォントの導入も追加で実施しています。
他には、名詞だけをリストに追加してワードクラウドとしてなるべく単語だけをピックアップできるようにしました。

成果物

出来上がったものがこちらです。

まずは私が所属するデータアナリティクス事業本部のジョインブログから作ったワードクラウドがこちらです。


▲ これからの業務やこれまでやってきた業務の話が多そうです

そして、クラスメソッドに再ジョインした人たちによるジョインブログから作ったワードクラウドがこちらです。


▲ サンプルサイズが少ないのはあるのですが一際「サウナ」が目立ちます

この中にある単語を組み合わせ、ちょっとだけ自分に関する内容を織り交ぜて書いたジョインブログが冒頭のものになります。


▲ ワードクラウドから引用した単語を強調したものがこちら

もっと楽できるようにこれからしたいこと

今回は突貫でワードクラウドを作成してみたので、単語選択の精度(こと、が名詞として含まれてしまった)があまり良くなかったりしました。
他にも、ワードクラウドで出てきた単語をKerasで自動文章生成させてより人間の介入しないジョインブログを書いてみたり、この仕組みをクラウド上に載せてみたりとやってみたいことが出てきたりもしました。
これからは機械学習エンジニアとして、こういったこともより掘り下げてブログを書いていきたいなと思っております。

このブログが、ジョインブログを書く時に悩んでいる人の助けになれば幸いです。