【Python】社会人一年目マンの日記を分析して、社会人生活のポジネガ判定とかをした


# はじめに

皆さんこんにちは。
2020年4月より社会人になった者です。
社会人生活がスタートしたのを機に、**日記を付けるようになりました。**
毎日行った事や感じた事を日記として残すことで、将来楽しかった事や辛かった事を見直したらニヤニヤできるんじゃないかなと思ってます。

折角日記を書くのだったらと、データ分析がしやすいフォーマットにして日記を書き続けました。
約80日分の日記があるので、これらを定量評価・定性評価してみた結果を共有させていただきたいと思います！

# 目的

日記の中身を定量的&定性的に分析する事で、社会人生活の満足度(=ポジネガ度)[^1]を多面的に評価する。
[^1]: 「社会人生活の満足度」の定義はふわふわしてますが、ポジティブに日々を過ごせているかということです。ポジティブなら日々を楽しく過ごせています。ネガティブならそれを改善するべきです。ネガティブスコアで高い値が出てしまうのなら、転職も考えて対策を行う、といった具合です。ざっくりとしていて申し訳ありません。

# 行ったこと

_主観評価_と_客観評価_の観点から分析を行いました。
はじめに日記の形式を紹介します。


|month|	start|	end|	worktime|	diary|
|:-:|:-:|:-:|:-:|:-:|
|20200408|	900|	1730|	8.5|	<2020年4月8日の日記>|
|20200409|	900|	1730|	8.5|	<2020年4月9日の日記>|
|・|	・|	・|	・|	・|
|・|	・|	・|	・|	・|
|・|	・|	・|	・|	・|


日記の保存形式は、データ分析が行いやすように、csv形式で保存しています。
カラムは全部で5種類あります。

- month: 年月日の日付
- start: 勤務開始時間
- end: 勤務終了時間
- worktime: 勤務時間
- diary: 日記

現状、約80日分の日記がcsvとして保存されています。

### 主観評価

|month|	start|	end|	worktime|	diary|
|:-:|:-:|:-:|:-:|:-:|
|・|	・|	・|	・|	・|
|・|	・|	・|	・|	・|
|20200509|	900|	1730|	8.5|	今日はケアレスミスをして先輩に迷惑をかけてしまい、へこんだ-40ただ、夜友達とビデオ通話して元気になった60明日も頑張ろう。|
|20200510|	900|	1730|	8.5|	定時内にやること全部終わらせた！80さいこ〜！|
|・|	・|	・|	・|	・|

日記には、上のdiary列のように、文章の末尾に点数が記入されていることがあります。
これらの値は、**当時の自分がその文章を書いた際にどのくらい感情の高まりがあったかを直感的に記述した値です。(「イベント点数」とします)**
イベント点数の値の域値は-100~100の範囲で、ポジティブな感情が高いほど100に近づき、一方でネガティブな感情が高いほど-100に近い値としました。
**直感的に点数を記述しているので、この値を用いて行う評価は主観評価と定めました。**


_行うこと_
- 全てのイベント点数を対象にした平均値、標準偏差
- 日別のイベント点数の平均値、標準偏差

### 客観評価

直感的に記述した値だけで日記を分析するのは、どうしても自分の尺度でしか社会人生活の満足度を図ることができないので、
より広い視野を持つためにも、文章内の点数を用いるのではなく日記のテキストの分析をPythonライブラリを使って評価します。

こちらを今回は客観評価と定め、外部ライブラリを用いて他者(=外部ライブラリ)の尺度からも社会人生活の満足度を評価してみました。
客観評価として、イベント点数を用いて以下の評価指標を算出し、考察を行いました。

_行うこと_
- wordcloudを用いて定性的に日記を評価(使ってみたかった、というのもある笑)
- COTOHA APIによる感情分析を使って日記のポジネガ判定を行う
- 日記のポジネガと労働時間に相関関係があるかを調査

[wordcloud](https://amueller.github.io/word_cloud/)は文章内の単語の使用頻度を基に、イケた図を出力してくれるライブラリです。
[COTOHA API](https://api.ce-cotoha.com/contents/index.html)は自然言語処理の様々な分析を行ってくれるスグレモノです。
アカウントを作ってしまえば誰でも利用できるので是非使ってみてください！
(ちなみに[以前書いた記事](https://qiita.com/PipoPi/items/5fd364eee314b77a4d6e)でも使わせていただきました)

今回は日記のポジネガ判定を行いたいので、感情分析APIを利用します。

# 結果

### 主観評価

#### ①日記全体を対象にしたイベント点数の平均値、標準偏差

|平均値|	標準偏差|
|:-:|:-:|
|6.35|	49.31|
点数のヒストグラムは以下のようになりました。
![histfig_all.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269457/191f9b60-c89c-7791-a12c-ab3c286d1fd0.png)


#### ②日別のイベント点数の平均値、標準偏差

|平均値|	標準偏差|
|:-:|:-:|
|9.99|	33.71|
点数のヒストグラムは以下のようになりました。
![histfig_day.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269457/ba020dc1-1821-dd67-78e2-a7ffb954dc28.png)


**主観評価としては、ポジティブな感情の方が強いようですね！**
けれど全体で6点、日別だと9点笑
私としてはある程度いまの生活に満足してたつもりですが、点数としてみるとこんなに低いとは。
確かに、ストレスを強く感じる日もないわけではないですからねぇ。

### 客観評価

#### ①wordcloudを用いて定性的に日記を評価

以下、wordcloudで出力した画像になります。
![wordcloud_2020-08-23_11:11:52_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269457/8a5a57f7-91ff-92ea-ea2d-f36a532dd067.png)


**先輩社員2人のお名前が表示されてしまったので(しかも大きい)、承太郎とポルナレフに変更しました。。(JOJOが好きなの。。。)**
人名が大きく表示されてるんですね〜、大きく表示されるということは文章中に出現する頻度が高いということです。
良いことも嫌なことも色々な場面で先輩社員の名前は書いてたな、確かに。
**人間関係がお仕事でも基本ということが改めてわかりましたね〜。
（ストレスを感じるのも先輩の曖昧な指示、人によって指導方針が違いすぎるところが大部分だったしな(闇)）**

「今日」がかなり大きいのは日記の書き出しのほとんどが「今日は〜〜」だったからですね。

#### ②COTOHA APIによる感情分析を使って日記のポジネガ判定を行う

COTOHA APIの感情分析APIを使うと、ポジネガ状態とその信頼度のスコア(域値は0<=x<=1)が出力できます。
ポジネガ状態には「Positive」「Negative」「Neutral」「Positive/Negative 」の4種類がありますが、「Positive」「Negative」のみ扱いました。
日別で「Positive」or「Negative」判定を行い、平均値、標準偏差を出力した結果を下に示します。

|ポジネガ|	数|	平均値|	標準偏差|
|:-:|:-:|:-:|:-:|
|Positive|	**39**|	0.18|	0.17|
|Negative|	25|	**0.29**|	0.20|

日数はポジティブな気持ちになる日の方が多いものの、ネガティブな日は気持ちの落ち込みがポジティブな日の気持ちの高ぶりよりも度合い(COTOHAのスコアの本来の意味は「信頼性」ですが)が大きいということがわかりました。
主観評価と逆ですねぇ。。。
**楽しい日が多いけど、嫌な思いをする日はとことん嫌な思いをする、って現実世界通りじゃないですか？笑
すっごいリアルな結果。**

#### ③日記のポジネガと労働時間に相関関係があるかを調査

最後です。
これは、ポジティブな日は労働時間が少なくネガティブな日は労働時間が多いといった相関があるか興味が湧いたので調査をしてみました。
日記内に記述していたworktime列とポジネガのスコアを下記のフォーマットでcsv出力しました。

|ポジネガ|	スコア|	労働時間|
|:-:|:-:|:-:|
|Negative|	-0.60	|8.5|
|Negative|	-0.28|	8.5|
|Positive|	0.35|	8.5|
|・	|・	|・|
|・	|・	|・|
相関係数の出力を行ったことがなかったので、ど初心者なりに調査して、pandasのcorr()を使って相関係数を出力しました。
今回はデフォルト設定されたピアソンの積率相関係数を用いました。(よくわかってない)

**相関結果によって次のことがわかるようになるはずです。⬇️⬇️⬇️
正の相関: scoreが上がるとworktimeも上がる(=ポジティブになる程労働時間増加)
負の相関: scoreが上がるとworktimeは下がる(=ポジティブになる程労働時間減少)**

つまり、一般的には労働時間が少ないほどストレスが少ない(ポジティブな気持ちになれる)と思うので、負の相関が出力されたらハッピーということですね。ということで下にグラフ。
![fig_sca2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269457/139b4481-33cf-684c-e6d6-2b22b3100ba1.png)


**近似直線の傾きは-0.11でした。
(私の場合ですと、)ポジティブな日は労働時間が少ない日が多いということが証明されました〜**

# 評価まとめ

- 主観評価(直感的に日記の文章ごとにポジネガのスコアを付与し、そのスコアを基に評価)では、わずかではあるものの平均値はポジティブの値の方が大きかった
- 客観評価
    - wordcloudでは先輩社員の名前が大きく表示された
    - COTOHAを用いたポジネガ判定ではポジティブな日が多いものの、スコアはネガティブな日の方が多い
    - ポジネガのスコアと相関係数は負の相関(=ポジティブになる程労働時間減少)

# 結論

ポジネガのスコアの観点では、主観評価と客観評価の結果が逆になってしまいましたね。
私としては今の生活はそれなりに満足しているつもりでしたけど(勿論不満はありますが)、システムとしてはネガティブな日は結構大きめな値を判定してました。私ストレスに強いのかな。。？そんなことないと思うけども笑
ただ、システムも日数的にはポジティブな日の方が多いと判定しました。そこは主観評価のヒストグラムを確認してもリンクしているように見えますね。

**結論としては、私の社会人生活は、楽しい日が多いけど、嫌な思いをする日はとことん嫌な思いをするということなんでしょうね笑**
まぁ満足度は60点くらいですかね、大学だとギリギリ単位がくる感じ。

# 感想

稚拙な文章にも関わらず、最後まで読んでいただきありがとうございました！
社会人日記をいつの日かデータ分析&記事にしようと思っていたので、それが叶って良かったです！
今回記事を書いて良かったなと思うことは、色々と新たな試行錯誤ができたことと、これまでに使ったツールを応用できたことでした。
勉強になるので今後も定期的に記事を書いていければなと思います。
日記を続けてもっとデータ増やして分析したいです…！

最後に、、、私と同じ社会人1年目の皆さん！
私たちはコロナ世代と言われていますがそんなネガティブワードに負けないようみんなで頑張っていきましょうぜ！
（個人的にはコロナ世代って言われ方、結構嫌いです。しょうがないけども。）

以上です、読んでいただきありがとうございました！