はじめに
私は現在、「仕事を楽しむためには?」というテーマで研究活動を行っています。
企業の口コミ情報を集めれば何かヒントが得られるのではと思い、データ分析に挑戦してみます!
環境
- macOS Mojave
- Python 3.7.4
- Google Chrome 79.0.3945.79
- ChromeDriver 79.0.3945.36
- selenium 3.141.0
- mecab-python3 0.996.2
スクレイピング
実装する前に、スクレイピングの注意事項を確認します。
Webスクレイピングの注意事項一覧 - Qiita
以下の記事を参考に、必要なツールを揃えます。
Python + Selenium で Chrome の自動操作を一通り - Qiita
転職サイトから口コミを収集します。
コードはこちら
形態素解析
以下の記事を参考に、必要なツールを揃えます。
Macでmecabを使う。 - Qiita
以下のコードを実行し、口コミを分かち書きします。
# coding: utf-8
import MeCab
mecab = MeCab.Tagger ('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
INPUT_FILE_PATH = "./scraping.csv"
OUTPUT_FILE_PATH = "./mecab.txt"
with open(INPUT_FILE_PATH) as f:
text = f.read()
# mecab.parse('')#文字列がGCされるのを防ぐ
node = mecab.parseToNode(text)
while node:
#単語を取得
word = node.surface
#品詞を取得
pos = node.feature.split(",")[1]
tmp_str = '{0} , {1}\n'.format(word, pos)
with open(OUTPUT_FILE_PATH, mode='a') as f:
f.write(tmp_str)
#次の単語に進める
node = node.next
このままだと、助詞などの意味のない単語ばかりになってしまうので、単語として意味を持ちそうな品詞を抽出します。
$ grep -e "名詞" -e "動詞" -e "形容詞" mecab.txt | grep -v "代名詞" | cut -d',' -f 1 > mecab_edited.txt
ワードクラウド
整形した口コミの出現頻度などを見える化するために、ワードクラウドを利用します。
以下の記事を参考に実装します。
Pythonでテキストマイニング ②Word Cloudで可視化 - Qiita
# coding: utf-8
from wordcloud import WordCloud
FONT_PATH = "/System/Library/Fonts/ヒラギノ角ゴシック W9.ttc"
INPUT_FILE_PATH = "./mecab_edited.txt"
OUTPUT_FILE_PATH = "./wordcloud.png"
with open(INPUT_FILE_PATH) as f:
text = f.read()
stop_words = ["出力画像から", "除去したい", "単語を", "設定してください"]
wordcloud = WordCloud(background_color="white",
font_path=FONT_PATH,
width=800,height=600,
stopwords=set(stop_words)).generate(text)
wordcloud.to_file(OUTPUT_FILE_PATH)
まだまだノイズが含まれるので「不要な単語をストップワードに登録 → ワードクラウド生成」を、分析できそうな結果が得られるまで繰り返します。
そして、得られたのが以下の画像です。
某IT系企業の口コミから生成しました。
この画像を見ても会社の傾向が分かりづらいので、特徴的な単語「モチベーション
」に絞って、さらに分析します。
果たして、モチベーションは高いのか?低いのか?
分析
まずは、文字列「モチベーション
」を含む口コミを抽出します。
$ grep "モチベーション" scraping.csv > scraping_motivation.csv
睡眠時間を削りすぎて力尽きたので、ここからは外部サービスを活用します。
→ AIテキストマイニング by ユーザーローカル
係り受け解析
転職サイトの口コミを分析して分かったこと
「モチベーション
」について係り受け解析した結果、出現頻度上位に「高い
」「上がる
」といったポジティブワードがランクインしていることから、「この会社の社員はモチベーションが高そうだ」ということが分かりました。
おわりに
ほぼ素人ながら、見様見真似でデータ分析に挑戦してみました。
結果的に欲しい情報までたどり着けなかったのですが、データを見える化することで新たな発見に繋がりそうだということは体験できました。
おそらく、目的を達成するために集めるデータや解析方法をトータルデザインしていかなければならないのでしょう。(難しそう・・・)
「仕事を楽しむためには?」 → 「モチベーション高い」 → なぜ?
しかし、データだけを頼りに全ての答えを導くのは難しそうなので、データをサポートツールとして使いつつ、
ユーザとともに仮説検証を繰り返すのが一番の近道なのではないでしょうか。
そう、デザイン思考のように。