はじめに
フィクションで、死期の近づいた人物が急に日記をつけ始めるシーンがある。日記とは習慣であり、今まで何も書いてこなかった人間が急に物を書き始めることなどありえないと思っていた。最近になって考えを改めた。孤独と向き合い、何かを残したいと願って創作を行うのなら、日記はもっとも手軽な手段となる。読むのが自分一人しかいないとしても、日記とは過去の自分から未来の自分に向けた伝承だ。孤独と向き合うためには有効な手段だと思う。
日記を感情分析するのは2023年の年末にもやっていた。
排便行為としての日記 : Notionで書き溜めた日記をjarvisx17/japanese-sentiment-analysisで感情分析する
当時はNotionで日記を書いていた。
- Notionの本文部分はブロックベースで書いてあるので、本文テキストの抽出が面倒である
- NotionはSaaSであり、テキストが完全に向こう側に保持されるので、API経由でテキストデータをダウンロードする必要がある
つまりNotionは感情分析するのに向いていない。
なので、去年(2024年)の8月から日記を書くツールをObsidianに切り替えた。
- Obsidianのファイル形式はマークダウン形式のテキストファイルなので、抽出が簡単である
- ファイルもローカルに保存されるので、気軽にテキスト解析ができる
感情分析をやっていく。本当は2024年のうちにやっておきたかった。
やってみる
全体的な方針としては以下の通り
昔はJupyter Notebookで分析するだけだったが、今回はStreamlitでインタラクティブに遊んでみることにした。
期間はObsidianを使い始めた2024年9月から12月までとする。
Obsidianのテキストデータを抽出して感情分析する
普通の日記は以下のような形式で書いている
---
ジムメニュー:
- チェストフライ3.75kg 10*3回
- 懸垂 10回
- ベンチプレス(パワーラック)42.5kg
- バーベルスクワット(パワーラック)42.5kg
- アームカール(パワーラック)20kg * 8回 * 3セット
- ペクトラルフライ 33kg 10*3回
- トーソローテーション35kg 10*3回
- アブローラー(立ちコロ・肩まで) 5回 * 3セット
- ウォーキング30min(6.5km/h)
作成日時: 2024-12-27 22:18
最終編集日時: 2024-12-27 22:18
tags:
- daily
---
6時半に起きる。15分遅れて起きた。豆乳を飲む。ジムに行く。
- ベンチプレスをする前にウォームアップをしっかり入れた(チェストフライ、懸垂、ベンチプレス20kg)。体が温まってしっかり動けた。
- ペクトラルフライの調整方法を学んだ
ジムから帰る。
仕事をする。今日は集中力があまりなかった。
仕事を切り上げる。カニ鍋を作る。アークナイツのイベントをやる。
昨日のエントリ:[[2024-12-26]]
翌日のエントリ:[[2024-12-28]]
先週のエントリ:[[2024-12-20]]
来週のエントリ:[[2025-01-03]]
先月のエントリ:[[2024-11-27]]
来月のエントリ:[[2025-01-27]]-
フロントマター
- 「ジムメニュー」がリスト形式で格納されていて、ジムでやったことが記録されている
- 「作成日時」で作成日時を記録(今回は使わない)
- tagsでタグが格納(今回は使わない)
-
本文:日記の中身
-
本文後のリンク:昨日や先月のページに飛べる
フロントマターはyamlなので、Pythonの標準ライブラリyamlを使えばパースできることに気づいた。フロントマターから抽出した情報は感情分析には使わないが、何かに使えそうなので取っておく。
感情分析のモデルにはtabularisai/multilingual-sentiment-analysisを使う。
tabularisai/multilingual-sentiment-analysis · Hugging Face
最終的な成果はCSVファイルで出力しつつ、duckdbに保存する。
プログラムは以下のようになる。
obsidian-diary-visualizer/main.py at main · sora32127/obsidian-diary-visualizer
Streamlitで分析する
去年はCSVファイルをそのままGoogle Colab上でPythonで分析していたが、Streamlitでやる方がスマートな気がしたのでそっちでやる。
obsidian-diary-visualizer/diary_analysis.py at main · sora32127/obsidian-diary-visualizer
分析結果
まずは全体的な分析をする
-
日記を書いた日の割合は98.4%であり、ほぼ100%
- トータルで120の日記がある
- 2023年の分析で「日記を書くこと=排便」だと結論付け、とにかく日記を書き続けることが重要であると認識したため、充足率は高い
-
全体的にネガティブな傾向を示している
- 日記のうち半分はネガティブな傾向がある
- ネガティブ:ポジティブ:どっちでもない=5 : 2 : 3

感情分布の割合
次に月別の分析をする
- 月ごとに区切った場合、全体的な傾向に変化は見られなかった

月別の感情の時系列推移
- ポジティブ/ネガティブの割合を示す「Positivity Ratio」は全体的に低めのまま推移している

月ごとの感情バランスの推移
最後に、週別に分析をする
- 金曜日にちょくちょく日記を書き忘れることがあるっぽい。仕事終わりで疲れているからだろう。

週別充足率
- 日曜日に限定してメンタルの改善傾向が見えた。やはり休日は身体にいい。

曜日別感情バランス
結論
- 全体的にネガティブな傾向を示している
- 日曜日だけ多少はマシになる
救いがない…