Binary Diary

今を一番楽しんでいこうMy Life

Engineering Manager Advent Calendar の全エントリーをテキストマイニングしてみた

どうもこたにんです。

Engineering Manager(以下EM)なみなさま、アドベントカレンダーお疲れ様でした!
数多のエンジニアリングマネージャー達による、様々なアウトプット。
2018年を締めるに相応しい読み応え抜群の記事たちでした!

全ての記事はこちらからご覧になれます。
(ちなみに わたしの記事はvol.1の20日目 だよ!)

これらを読み進めると、EMのみなさまのアウトプットには近しい言葉が並ぶなあと感じました。
マネジメント、組織、心理的安全、などなど、、、
立場や環境は違えど考え方は近いんだなあと、言葉ひとつひとつで感じる。

この感じたいい感じの感じ(エモみ)をどうにか可視化できないかしら?
われわれって、エンジニアだよね?

ということで、可視化しました!

ドンッ!

f:id:Kotanin0:20181229231930p:plain

良い!良い感じにエモい!!
かなり簡易的なテキストマイニングなので、単語の荒れなどは目をつぶってください。

こう見ても、組織・チーム・人という言葉が多く利用されていることがわかります。
EMな役割だと、具体的な技術よりも人にフォーカスした言葉が多いですね。
エンジニアリングしている領域が、プログラムではなく人である、というのがわかる。

これをどう活かすかなどは考えずにアウトプットしてみました。
EMアドカレ全50記事、どれも読み応え抜群だったので何かしら発展させたくて。
EMなみなさまの言葉選びを可視化して、それが何かのお役に立てば幸いです。

上位言葉まとめると「エンジニアチームを組織的にマネジメントする人」がEMなのかもしれない。
ショート記事ですが、本編はここまでとさせていただきます。

おまけ:これ作るためにやったこと

1. 全50記事の本文をテキストファイルに落とす

スクレイピングしたかったけど、アウトプットしている場所が人それぞれだったので。
地道に50ページから抜き取りました。

2. MeCab に食べさせる

形態素解析エンジンMeCabに、本文ファイルを食べさせました。
詳しくは Python3からMeCabを使う - Qiita が参考になると思います。

実行コマンドはこちら。

> mecab -Ochasen content.txt | grep -e "名詞" -e "形容詞" | cut -f 3 > words.txt

// mecab -Ochasen が以下な感じなので、品詞でgrepした上で変化前の形の部分のみcut

価値 カチ 価値 名詞-一般

フォーカス フォーカス フォーカス 名詞-一般
組織 ソシキ 組織 名詞-サ変接続
高く タカク 高い 形容詞-自立 形容詞・アウオ段 連用テ接続
マネジメント マネジメント マネジメント 名詞-一般

これで単語だけが格納されたファイルの準備が整いました。


3. WordCloud で可視化する

GitHub - amueller/word_cloud: A little word cloud generator in Python
WordCloudという可視化できるライブラリがあったのでそれを使いました。

さっき用意した単語リストを食べさせるだけ。
pythonでお好きなように書いてあげてください、大事なのはライブラリ使うとこだけ。

# 便宜上改行入れていますが、適宜よしなに
wordcloud = WordCloud(
      background_color="white", 
      font_path="~/Library/Fonts/ヒラギノ丸ゴ ProN W4.ttc", 
      width=900, height=500, 
      regexp="[\w']+",
      repeat=True,
collocations=False, max_words=180) .generate(text)

コンストラクタ引数気にせず使うと、大きさダメ、1文字ダメ、重複する、など痒かった。
ので、いろいろ引数は指定しておきます。

  • Macだとフォント指定しておいたほうが良いらしい
  • 画像の幅と高さはお好きに
  • デフォだと1文字を対象としないので正規表現をセットしてあげておく
  • 同じ単語が重複しちゃってたので、repeat, collocations を指定しておく
  • 最大単語数はお好きに

他にもいくつかパラメータはあるみたいです、色変えたりなんたり。
詳しく知りたい方は 公式リファレンス を参照ください。

これで画像がアウトプットできるので、プロット使うかファイル出力するかご自由に。
WordCloudの関数使うなら to_file() てのがあったはず、これもリファレンス参照で。

おまけのおまけ:頻出キーワードランキング

さくっと出しておきます。

> cat words.txt | sort | uniq -c | sort -nr | head -n 30
 550497 チーム
 422 組織
 385277 自分
 262 エンジニア
 261 マネジメント
 253 ため
 252 エンジニアリング
 237 メンバー
 235 もの
 218 マネージャー
 216 開発
 211 必要
 198 ない
 197182 それ
 177173 良い
 151 これ
 151147 技術
 142 プロダクト
 142134 Engineering
 133 成長
 133 仕事
 131 on
 124 Manager
 121